1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        信用卡申請預測案例

        共 5937字,需瀏覽 12分鐘

         ·

        2020-10-31 16:46

        ?是新朋友嗎?記得先點數據科學與人工智能關注我哦~
        《數據科學案例》專欄·第2篇
        ?|?陸勤
        2891?字 | 8?分鐘閱讀


        信用卡業(yè)務,是各大銀行的核心業(yè)務之一。銀行收到大量信用卡申請,其中許多人因為各種原因而被拒絕,比如高的個人信用貸款余額,低的收入水平或者過高的個人征信報告查詢次數等。


        銀行工作人員手動調研和分析這些個人申請資料很普遍,但是,容易出錯,而且也很耗時(時間就是金錢,效率就是生命)。幸運的是,這項任務可以通過機器學習實現自動化,在風險可控的前提下,極大地提升了工作的效率和產能。


        在本案例中,將使用機器學習技術構建一個自動信用卡申請預測模型,并利用模型去判斷那些人信用卡申請可以批準,就像真正銀行做的那樣。


        學習和實踐本案例,你可以得到:

        1. 信用卡申請是個什么問題?

        2. 數據集如何整理?

        3. 模型如何構建?

        4. 模型如何應用?

        一、業(yè)務理解,

        問題定義

        面對大量的信用卡申請資料,如何根據這些資料的信息和關聯的其它信息,高效地對信用卡申請做出是否批準的判斷,并兼顧產能和風險的平衡,即在風控原則約束的前提下,提升效能。

        二、數據理解,

        數據畫像

        本案例的數據集來自UCI平臺提供的一份公開信用卡申請數據集。數據集的下載和數據集結構以及元數據(數據的數據)描述請訪問如下鏈接:

        http://archive.ics.uci.edu/ml/datasets/credit+approval

        因為數據集涉及到個人敏感信息,所以數據集的貢獻者對特征名做了匿名化處理以實現數據保密。數據集的結構,可以在后面的代碼里了解。

        1、導入Python庫

        import?numpy?as?np
        import?pandas?as?pd?
        import?matplotlib.pyplot?as?plt

        from?sklearn.preprocessing?import?LabelEncoder
        from?sklearn.preprocessing?import?MinMaxScaler

        from?sklearn.model_selection?import?train_test_split
        from?sklearn.linear_model?import?LogisticRegression
        from?sklearn.metrics?import?confusion_matrix

        import?warnings
        warnings.filterwarnings('ignore')

        %matplotlib?inline

        2、數據畫像

        cc_apps?=?pd.read_csv("datasets/cc_approvals.data",?header=None)
        print(cc_apps.shape)
        print(cc_apps.head())
        print(cc_apps.dtypes)
        print(cc_apps.describe().T)

        數據集包括690個觀察,16個特征,特征集都做了匿名化處理。這里有篇博客(詳見參考資料)對數據集的特征含義做了可能性的描述,依次是性別、年齡、債務、婚姻、銀行客戶、教育層次、種族、工作年限、先前違約、職業(yè)、信用評分、駕駛證、公民、郵政編碼、收入和申請狀態(tài)。通過數據畫像的結果,可以發(fā)現數據集包括數值型和非數值型特征,這個問題我們在數據準備階段會做相應處理。

        三、數據準備

        數據整理

        數據集包括數值型和非數值型特征,數據集跨度范圍不一致,數據集包括一些用?符號表示數據缺失的情況。這些問題,我們都要解決。

        首先,做缺失值的檢測和處理。為什么要做這個事情?一方面,可以提升模型的性能,通常情況不建議直接粗暴地刪除含有缺失值的變量或者樣本,因為這樣容易丟失信息;另一方面,有很多算法,不支持數據的缺失的情況。如何處理缺失值。本案例中,數值型變量采用均值插補法;非數值型變量采用眾數插補法。

        3、數據缺失值標記,發(fā)現和處理

        cc_apps?=?cc_apps.replace("?",np.NaN)
        cc_apps?=?cc_apps.fillna(cc_apps.mean())

        print(cc_apps.info())
        for?col?in?cc_apps.columns:
        ????if?cc_apps[col].dtypes?==?'object':
        ????????cc_apps[col]?=?cc_apps[col].fillna(cc_apps[col].value_counts().index[0])
        ???????
        print(cc_apps.isnull().values.sum())

        4、非數值型特征處理--標簽編碼

        接下來,做非數值型特征處理。為什么要對非數值型特征做處理和轉換?一方面,可以提升計算的速度;另一方面,則是很多算法必須要要求數據集為數值型格式,比方說xgboost算法。如何做非數值型特征處理?本案例,采用標簽編碼的方法。

        le?=?LabelEncoder()
        for?col?in?cc_apps.columns:
        ????if?cc_apps[col].dtype=='object':
        ????????cc_apps[col]=le.fit_transform(cc_apps[col])

        5、特征篩選和縮放

        第三,做特征篩選和縮放。根據特征的含義和所要解決問題,基于領域知識刪除不需要特征,例如駕駛證和郵政編碼,同時,把特征縮放到一致范圍。

        #?刪除不需要的變量
        #?同時對特征做縮放處理
        cc_apps?=?cc_apps.drop([cc_apps.columns[10],cc_apps.columns[13]],?axis=1)
        cc_apps?=?cc_apps.values

        X,y?=?cc_apps[:,0:13],?cc_apps[:,13]
        scaler?=?MinMaxScaler(feature_range=(0,1))
        rescaledX?=?scaler.fit_transform(X)

        四、模型架構,

        模型創(chuàng)建

        把數據集整理好后,接下來我們做模型創(chuàng)建的事情,首先,把數據集劃分為訓練集和測試集,然后利用訓練集來構建模型,利用測試集來評價模型的性能。因為本案例的問題是一個典型的二元分類問題,我們假設數據集里面特征與目標變量有一定的關系,我們選擇簡單常用和可解釋的邏輯回歸模型來創(chuàng)建模型。

        6、數據集劃分

        X_train,?X_test,?y_train,?y_test?=?train_test_split(rescaledX,
        ????????????????????????????????????????????????????y,
        ????????????????????????????????????????????????????test_size=0.33,
        ????????????????????????????????????????????????????random_state=42)

        6、模型創(chuàng)建

        #?模型創(chuàng)建
        logreg?=?LogisticRegression()
        logreg.fit(X_train,y_train)

        五、模型評價,

        性能分析

        把創(chuàng)建好的模型,在測試數據集上做模型的性能分析。我們采用模型的準確率和混淆矩陣來評價模型的性能。

        y_pred?=?logreg.predict(X_test)
        print("模型的準確率:?%.3f"?%?logreg.score(X_test,?y_test))

        #?混淆矩陣
        confusion_matrix(y_test,?y_pred)

        六、模型應用,

        指導行動

        針對新的的數據集,按著模型構建前的數據加工邏輯(缺失值處理+標簽編碼+數據縮放),做好數據處理后,然后利用構建好的模型對新數據集做預測,對預測的結果做應用,以指導信用卡申請的審批工作。

        總結

        本案例對信用卡申請是否批準的問題,利用機器學習的方法做了解答,以實現從人工審批過度到自動化審批的操作流程,從而提升審批的效率和客觀一致性。


        本案例還有很多地方值得進一步深入思考和挖掘。比方說,文章的標準化是對所有數據集進行處理,這樣是否存在信息泄露問題,有待進一步驗證;邏輯回歸模型的超參數使用了默認值的設定,根據實際問題,是否存有最佳的超參數,也需要做相關的測試工作;模型預測的輸出結果是一個介于0~1的值,然后根據臨界點做比較來標記是否批準,而銀行的實際應用中,需要把這種概率映射為一種分數,利用這種分數來更好地指導業(yè)務的行動等。


        關于本案例,你有什么見解或者疑問,請留言或者加入Python群做討論。


        附錄:案例完整代碼(需要數據集的朋友可以添加我的個人微信獲取或者從Kaggle平臺下載獲?。?/span>


        import?numpy?as?np
        import?pandas?as?pd?
        import?matplotlib.pyplot?as?plt

        from?sklearn.preprocessing?import?LabelEncoder
        from?sklearn.preprocessing?import?MinMaxScaler

        from?sklearn.model_selection?import?train_test_split
        from?sklearn.linear_model?import?LogisticRegression
        from?sklearn.metrics?import?confusion_matrix

        import?warnings
        warnings.filterwarnings('ignore')

        %matplotlib?inline


        cc_apps?=?pd.read_csv("datasets/cc_approvals.data",?header=None)
        print(cc_apps.shape)
        print(cc_apps.head())
        print(cc_apps.dtypes)
        print(cc_apps.describe().T)


        cc_apps?=?cc_apps.replace("?",np.NaN)
        cc_apps?=?cc_apps.fillna(cc_apps.mean())

        print(cc_apps.info())
        for?col?in?cc_apps.columns:
        ????if?cc_apps[col].dtypes?==?'object':
        ????????cc_apps[col]?=?cc_apps[col].fillna(cc_apps[col].value_counts().index[0])
        ???????
        print(cc_apps.isnull().values.sum())


        le?=?LabelEncoder()
        for?col?in?cc_apps.columns:
        ????if?cc_apps[col].dtype=='object':
        ????????cc_apps[col]=le.fit_transform(cc_apps[col])
        ????????
        ????????
        cc_apps?=?cc_apps.drop([cc_apps.columns[10],cc_apps.columns[13]],?axis=1)
        cc_apps?=?cc_apps.values

        X,y?=?cc_apps[:,0:13],?cc_apps[:,13]
        scaler?=?MinMaxScaler(feature_range=(0,1))
        rescaledX?=?scaler.fit_transform(X)


        X_train,?X_test,?y_train,?y_test?=?train_test_split(rescaledX,
        ????????????????????????????????????????????????????y,
        ????????????????????????????????????????????????????test_size=0.33,
        ????????????????????????????????????????????????????random_state=42)
        ????????????????????????????????????????????????????
        ????????????????????????????????????????????????????
        #?模型創(chuàng)建
        logreg?=?LogisticRegression()
        logreg.fit(X_train,y_train)

        y_pred?=?logreg.predict(X_test)
        print("模型的準確率:?%.3f"?%?logreg.score(X_test,?y_test))

        #?混淆矩陣
        confusion_matrix(y_test,?y_pred)


        參考資料

        1、案例的數據集的結構描述

        http://rstudio-pubs-static.s3.amazonaws.com/73039_9946de135c0a49daa7a0a9eda4a67a72.html

        2、LabelEncoder和OneHotEncoder

        https://blog.csdn.net/quintind/article/details/79850455

        3、邏輯回歸算法

        https://ml-cheatsheet.readthedocs.io/en/latest/logistic_regression.html

        4、混淆矩陣

        https://www.dataschool.io/simple-guide-to-confusion-matrix-terminology/

        5、如何處理缺失值

        https://machinelearningmastery.com/handle-missing-data-python/


        公眾號推薦

        數據思踐

        數據思踐公眾號記錄和分享數據人思考和踐行的內容與故事。

        Python語言群

        誠邀您加入


        《數據科學與人工智能》公眾號推薦朋友們學習和使用Python語言,需要加入Python語言群的,請掃碼加我個人微信,備注【姓名-Python群】,我誠邀你入群,大家學習和分享。

        瀏覽 38
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            久久国产在线视频 | 51妺嘿嘿午夜福利在线 | 成年人免费看黄 | 成人男女视频在线观看 | 91无码粉嫩小泬无套在线观看 | 看肏逼网站55视频 | 亚洲第一黄视频 | 久久婷婷秘 精品国产538 | 69精品人妻一区二区三区 | 天天鲁天天爱天天做 |