序言
評分卡模型通常有四個類型:
A 卡, 又稱爲申請者評級模型,主要應用於相關融資類業務中新客戶的主體評級,適用於個人 和機構融資主體。
B 卡,又稱爲行爲評級模型,主要應用於相關融資類業務中存量客戶在存續期內的理, 如對客戶 可能出現的逾期、延期等行爲進行預測,僅適用於個人融資主體。
C 卡,又稱爲催收評級 模型,主要應用於相關融資類業務中存量客戶是否需要催收的預測管理,僅適用於個人融資 主體。
F卡,又稱爲欺詐評級模型, 主要應用於相關融資類業務中新客戶可能存在的 欺詐行爲的預測管理,適用於個人和機構融資主體。 本章講述的是主體評級模型的開發過程。
本次主要利用kaggle2011年的競賽數據(信貸數據):Give Me Some Credit,來進行個人評分A卡的製作,評分卡模型的評判指標是AUC。
1 數據探索
1.1 數據初描述
在開始之前,先來看看數據的描述,如下圖所示:
英文版的看上去不是那麼的舒服,翻譯一箇中文版本如下:
列名 | 含義 |
---|---|
SeriousDlqin2yrs | 出現90天或更長時間的逾期行爲(即定義好壞客戶) |
RevolvingUtilizationOfUnsecuredLines | 貸款以及信用卡可用額度與總額度比例 |
age | 借款人借款年齡 |
NumberOfTime30-59DaysPastDueNotWorse | 過去兩年內出現35-59天逾期但是沒有發展的更壞的次數 |
DebtRatio | 每月償還債務,贍養費,生活費用除以月總收入 |
MonthlyIncome | 月收入 |
NumberOfOpenCreditLinesAndLoans | 開放式貸款和信貸數量 |
NumberOfTimes90DaysLate | 借款者有90天或更高逾期的次數 |
NumberRealEstateLoansOrLines | 抵押貸款和房地產貸款數量,包括房屋淨值信貸額度 |
NumberOfTime60-89DaysPastDueNotWorse | 過去兩年內出現60-89天逾期但是沒有發展的更壞的次數 |
NumberOfDependents | 家庭中不包括自身的家屬人數(配偶,子女等) |
這裏對數據整體做一個描述性分析,從結果中可以解讀到月收入和家屬人數是有缺失值的,而且有三個變量出現了相同最大值,需要對數據進行深入探查,結果見下截圖。
對所有數據進行重複值檢測發現有304個記錄重複,查詢結果見下截圖:
檢查各變量的缺失值佔比,結果見下圖,月收入和家屬人數兩個變量的缺失值佔比分別爲19.82%、2.62%。
變量 | 缺失值佔比 |
---|---|
SeriousDlqin2yrs | 0.000000 |
RevolvingUtilizationOfUnsecuredLines | 0.000000 |
age | 0.000000 |
NumberOfTime30_59DaysPastDueNotWorse | 0.000000 |
DebtRatio | 0.000000 |
MonthlyIncome | 0.198207 |
NumberOfOpenCreditLinesAndLoans | 0.000000 |
NumberOfTimes90DaysLate | 0.000000 |
NumberRealEstateLoansOrLines | 0.000000 |
NumberOfTime60_89DaysPastDueNotWorse | 0.000000 |
NumberOfDependents | 0.026160 |
查看缺失值在數據中的整體分佈,見下圖:
對數據進行異常值檢測,發現第5、6個變量的數據存在明顯的異常值。結果見下截圖。
1.2 數據預處理
對於數據探索,得知數據主要有缺失值、重複值、異常值等問題。這裏首先將這些問題處理完後在進入後續的操作。
缺失值的處理:
缺失值處理方法的選擇,主要依據是業務邏輯和缺失值佔比,在對預測結果的影響儘可能小的情況下,對缺失值進行處理以滿足算法需求,所以要理解每個缺失值處理方法帶來的影響,下面的缺失值處理方法沒有特殊說明均是對特徵(列)的處理:
缺失值佔比 | 處理方案 |
---|---|
佔比較多:如80%以上 | 刪除缺失值所在的列 |
佔比一般:如30%-80% | 將缺失值作爲單獨的一個分類;如果特徵是連續的,則其他已有值分箱;如果特徵是分類的,考慮其他分類是否需要重分箱 |
佔比少:10%-30% | 多重插補,認爲若干特徵之間有相關性,則可以相互預測缺失值;需滿足的假設:MAR:Missing At Random:數據缺失的概率僅和已觀測的數據相關,即缺失的概率與未知的數據無關,即與變量的具體數值無關;迭代(循環)次數可能的話超過40,選擇所有的變量甚至額外的輔助變量 |
佔比較少:10%以下 | 單一值替換,如中位數,衆數 |
決策樹中可以將缺失值處理融合到算法裏:按比重分配這裏的佔比並不是固定的,例如缺失值佔比只有5%,仍可以用第二種方法,主要依據業務邏輯和算法需求。
對於信用評分卡來說,由於所有變量都需要分箱,故這裏缺失值作爲單獨的箱子即可對於最後一列NumberOfDependents,缺失值佔比只有2.56%,作爲單獨的箱子信息不夠,故做單一值填補,這列表示家庭人口數,有右偏的傾向,且屬於計數的數據,故使用中位數填補這裏沒必要進行多重插補。
本數據的缺失值經過處理後,檢查到全部數據一無缺失值,結果如下圖:
異常值的處理:刪除所在的行;替換成缺失值,與缺失值一起處理;蓋帽法處理。
結合業務邏輯和算法需求判斷是否需要處理異常值以及如何處理,一般情況下蓋帽法即可,即將極端異常的值改成不那麼異常的極值,當然一些算法例如決策樹中連續變量的異常值也可以不做處理。
在評分卡項目中,每個變量都會進行分箱處理,所以對異常值的容忍度比較高,爲提升業務效率,不做特殊處理。
變量的分箱處理:
在進行變量分箱處理前,需要釐清兩個WOE(證據權重:與違約比例同方向變動,可以看到不同分箱的重 要性 )、IV(信息值:表示變量的重要性)。兩個指標的計算公式:
IV指標通常用來選取最終模型變量,主要有以下閾值:
閾值 | 意義 |
---|---|
IV <0.02 | 對預測幾乎無幫助 |
0.02<= IV < 0.1 | 具有一定幫助 |
0.1 <= IV <0.3 | 對預測有較大幫助 |
IV >= 0.3 | 具有很大幫助 |
變量分箱的處理利用決策樹來進行,具體到每一個變量的操作這裏就不一一展示了。這裏給出變量分箱後得到的WOE、IV指標的結果:
所有變量的值:
變量 | |
---|---|
RevolvingUtilizationOfUnsecuredLines | 1.1487 |
NumberOfTimes90DaysLate | 0.8738 |
NumberOfTimes90DaysLate | 0.8738 |
NumberOfTime30_59DaysPastDueNotWorse | 0.7576 |
NumberOfTime60_89DaysPastDueNotWorse | 0.5989 |
age | 0.2523 |
NumberOfOpenCreditLinesAndLoans | 0.1108 |
DebtRatio | 0.0889 |
MonthlyIncome | 0.0856 |
NumberRealEstateLoansOrLines | 0.0606 |
NumberOfDependents | 0.0339 |
對各個指標的信息值大小進行排序的條形圖如下:
從上面的條形圖我們可以選取信息值較大的變量進入後期的模型訓練,有助於提高模型的效果。
2 數據模型格式化
2.1 變量的篩選
在上圖中,可以看到各個變量的值在0.02以上,變量對評分卡製作的幫助都非常大,所以全部變量都用上。
2.2 值替換數據
對選取的變量進行變換,結果如下:
變量 | 行1 | 行2 | … |
---|---|---|---|
age_woe | -0.138500 | -0.324900 | … |
NumberOfTime30_59DaysPastDueNotWorse_woe | -1.614200 | 0.540800 | … |
DebtRatio_woe | -0.594700 | 0.111700 | … |
MonthlyIncome_woe | 0.339700 | -0.441700 | … |
NumberOfOpenCreditLinesAndLoans_woe | 0.155700 | 0.155700 | … |
NumberOfTimes90DaysLate_woe | 0.389000 | 0.389000 | … |
NumberRealEstateLoansOrLines_woe | -0.590400 | -0.241300 | … |
NumberOfTime60_89DaysPastDueNotWorse_woe | 0.287400 | 0.287400 | … |
NumberOfDependents_woe | -0.206800 | -0.100100 | … |
3 建立模型
對經過變換的數據添加監督列(分類列),並進行測試集與訓練集的劃分。訓練集在邏輯迴歸下得到的結果如下:
Dep. Variable: | SeriousDlqin2yrs | No. Observations: | 104573 |
Model: | GLM | Df Residuals: | 104562 |
Model Family: | Binomial | Df Model: | 10 |
Link Function: | logit | Scale: | 1.0000 |
Method: | IRLS | Log-Likelihood: | -19183. |
Date: | Sat, 19 | Oct 2019 | Deviance: |
Time: | 18:29:28 | Pearson chi2: | 9.05e+04 |
,模型的擬合優度通過檢驗。模型的結構如下:
變量 | coef | std err | z | P>abs(z) | [0.025 0.975] |
---|---|---|---|---|---|
const | 2.5902 | 0.015 | 172.105 | 0.000 | 2.561 |
RevolvingUtilizationOfUnsecuredLines_woe | 0.5947 | 0.014 | 41.272 | 0.000 | 0.566 |
age_woe | 0.4297 | 0.032 | 13.510 | 0.000 | 0.367 |
NumberOfTime30_59DaysPastDueNotWorse_woe | 0.5073 | 0.016 | 32.411 | 0.000 | 0.477 |
DebtRatio_woe | 0.7051 | 0.050 | 14.076 | 0.000 | 0.607 |
MonthlyIncome_woe | 0.1821 | 0.049 | 3.690 | 0.000 | 0.085 |
NumberOfOpenCreditLinesAndLoans_woe | 0.0059 | 0.041 | 0.142 | 0.887 | -0.075 |
NumberOfTimes90DaysLate_woe | 0.5302 | 0.014 | 38.254 | 0.000 | 0.503 |
NumberRealEstateLoansOrLines_woe | 0.5383 | 0.062 | 8.642 | 0.000 | 0.416 |
NumberOfTime60_89DaysPastDueNotWorse_woe | 0.3749 | 0.017 | 22.125 | 0.000 | 0.342 |
NumberOfDependents_woe | 0.2624 | 0.077 | 3.388 | 0.001 | 0.111 |
其中有兩個變量的統計量值比較大。進一步計算每個預測變量的vif值,查看是否存在共線性:
變量 | |
---|---|
RevolvingUtilizationOfUnsecuredLines_woe | 1.526123 |
age_woe | 1.206090 |
NumberOfTime30_59DaysPastDueNotWorse_woe | 1.355447 |
DebtRatio_woe | 1.182366 |
MonthlyIncome_woe | 1.122016 |
NumberOfOpenCreditLinesAndLoans_woe | 1.182690 |
NumberOfTimes90DaysLate_woe | 1.421802 |
NumberRealEstateLoansOrLines_woe | 1.192780 |
NumberOfTime60_89DaysPastDueNotWorse_woe | 1.339235 |
NumberOfDependents_woe | 1.129460 |
每個預測變量的vif值都小於10,說明預測變量之間不存在多重共線性。
4 生成評分卡
根據邏輯迴歸模型和之前篩選得到的列表,給定參數,生成評分卡,調整參數,使得評分卡分數範圍滿足需求。評分卡如下:
Characteristic | Attribute | Points |
---|---|---|
RevolvingUtilizationOfUnsecuredLines | (-0.001, 0.132] | 118 |
RevolvingUtilizationOfUnsecuredLines | (0.132, 0.301] | 94 |
RevolvingUtilizationOfUnsecuredLines | (0.301, 0.495] | 74 |
RevolvingUtilizationOfUnsecuredLines | (0.495, 0.698] | 55 |
RevolvingUtilizationOfUnsecuredLines | (0.698, 0.863] | 38 |
RevolvingUtilizationOfUnsecuredLines | (0.863, 1.003] | 24 |
RevolvingUtilizationOfUnsecuredLines | (1.003, 50708.0] | -9 |
age | (-0.001, 36.5] | 54 |
age | (36.5, 43.5] | 60 |
age | (43.5, 55.5] | 65 |
age | (55.5, 62.5] | 77 |
age | (62.5, 109.0] | 94 |
NumberOfTime30_59DaysPastDueNotWorse | (-0.001, 0.5] | 86 |
NumberOfTime30_59DaysPastDueNotWorse | (0.5, 1.5] | 40 |
NumberOfTime30_59DaysPastDueNotWorse | (1.5, 2.5] | 18 |
NumberOfTime30_59DaysPastDueNotWorse | (2.5, 3.5] | 5 |
NumberOfTime30_59DaysPastDueNotWorse | (3.5, 98.0] | -9 |
DebtRatio | (-0.001, 1.3e-05] | 53 |
DebtRatio | (1.3e-05, 0.0163] | 99 |
DebtRatio | (0.0163, 0.423] | 73 |
DebtRatio | (0.423, 0.654] | 59 |
DebtRatio | (0.654, 3.973] | 43 |
DebtRatio | (3.973, 329664.0] | 78 |
MonthlyIncome | (-0.001, 930.5] | 73 |
MonthlyIncome | (930.5, 3332.5] | 64 |
MonthlyIncome | (3332.5, 5320.5] | 66 |
MonthlyIncome | (5320.5, 6643.5] | 69 |
MonthlyIncome | (6643.5, 3008750.0] | 72 |
MonthlyIncome | nan | 71 |
NumberOfOpenCreditLinesAndLoans | (-0.001, 0.5] | 68 |
NumberOfOpenCreditLinesAndLoans | (0.5, 1.5] | 68 |
NumberOfOpenCreditLinesAndLoans | (1.5, 3.5] | 68 |
NumberOfOpenCreditLinesAndLoans | (3.5, 13.5] | 69 |
NumberOfOpenCreditLinesAndLoans | (13.5, 58.0] | 69 |
NumberOfTimes90DaysLate | (-0.001, 0.5] | 81 |
NumberOfTimes90DaysLate | (0.5, 1.5] | 4 |
NumberOfTimes90DaysLate | (1.5, 98.0] | -24 |
NumberRealEstateLoansOrLines | (-0.001, 0.5] | 60 |
NumberRealEstateLoansOrLines | (0.5, 3.5] | 76 |
NumberRealEstateLoansOrLines | (3.5, 54.0] | 49 |
NumberOfTime60_89DaysPastDueNotWorse | (-0.001, 0.5] | 75 |
NumberOfTime60_89DaysPastDueNotWorse | (0.5, 1.5] | 26 |
NumberOfTime60_89DaysPastDueNotWorse | (1.5, 98.0] | 4 |
NumberOfDependents | (-0.001, 0.5] | 71 |
NumberOfDependents | (0.5, 1.5] | 67 |
NumberOfDependents | (1.5, 2.5] | 65 |
NumberOfDependents | (2.5, 3.5] | 64 |
NumberOfDependents | (3.5, 20.0] | 61 |
5 評分卡模型評估
通過曲線,曲線來對模型進行評估:
通過曲線知ks值爲0.8,最優閾值爲0.5631,曲線的auc值也高達0.86,說明模型良好。(這裏選取兩個指標來對比評估模型)
5 小結
不僅僅是在評分卡模型的製作中,在任何數據挖掘工作開展前,對數據進行清洗、格式化、校對的工作必不可少。數據的質量決定了模型優度的上限,一個好的模型可不僅僅得益於數據分析師對模型的把握深度。
數據的清洗格式化包含數據異常值處理、缺失值處理、時間數據的處理、文本字符型數據的處理、離散數據的處理、以及根據業務要求可能需要進行的數據變換以及分箱等。
總的來說就是,建模前要把數據處理成建模算法的“菜”。不同的業務問題需要匹配相應的算法來完成建模,但算法需要喫乾淨整潔的數據,纔能有效高效的爲業務效力。~~~
資源 | 鏈接 |
---|---|
評分卡流程 | https://download.csdn.net/my/uploads |