基於五種機器演算法的信用風險評估
基於五種機器演算法的信用風險評估是一個系列文章,從互金數據出發,經過數據預處理,特徵工程,建立機器學習模型,以及模型評估四個部分來分析建模。文章將按照一般的建模流程來組織:確定業務目標→數據獲取→數據檢驗→變數選擇(數據清洗)→變數轉化→數據輸入模型演算法→模型評估。本文的重點放在建模前期的數據準備上,包括數據基本信息的分析,數據異常值、缺失值的分析,單變數分析以及變數的相關性分析上。為下一期的特徵工程做好準備。
(1)數據預處理
數據準備
數據欄位有18個分別為status、paid.ratio和16個模型變數。
備註:
1. 教育程度一項給高中、大專、本科、研究生分別打分3、6、8、10。未填 此項打分為0(0值有三人,均無逾期)。
2. 對給出數額範圍的項目做了取邊界和平均的平滑處理。例如,薪水小於1000算作1000;1000-2000算作1500;2000-5000算作3500等等。
3. 分類使用status變數作為y值,0表示沒有違約、1表示違約。
4. 回歸使用paid.ratio變數,變數值表示已付的比例。
5. 給每個變數標號後,圖形的坐標可視化更加友好。
數據大體分布
1. 數據為不平衡數據,正負數據比例為6:1,考慮採用重採樣的方法增加樣本量。
2. 且負樣本中還款率均值為30%,說明一旦出現未還的賬目,借款人就傾向於不還錢(破窗效應)
3. 3/4分為點才達到50%的還款率,進一步說明還款率較低
數據處理
如何在這些欄位中提取出模型要使用的特徵變數實際上決定了模型的上限,數據預處理顯得十分重要,一般對信用評分的模型數據採用以下預處理步驟:
1. 貸後的相關變數除了target變數,其餘直接剔除,因為貸後表現在客戶申請時是沒有的,如果貸後數據進入模型實際上就成了未來變數(本文不涉及這個問題);
2. 缺失率太高的變數直接剔除,一般按65%的閾值來剔除的(本文不涉及這個問題);
3. 刪除缺失率太高的數據後,對剩餘存在缺失的數據進行填充,具體需要根據業務邏輯以及經驗可以採用經驗、線性差值、眾數、均值以及向前向後的方法補齊數據(本文中變數graduated.years(連續型)和marriageStatus(離散型)存在缺失數據,已經用-1補齊,-1按照單獨一類來處理)。
4. 數值變數中所有值方差太小接近常量的變數剔除,因為不能提供更多信息(本文採用VIF>5為界,沒有剔除變數);
5. 按業務邏輯完全不可解釋的變數直接剔除(本文不涉及這個問題)
6. 分類變數中unique值大於20的直接剔除或者按照連續變數來處理(分類變數類別太多沒有意義,處理graduated.years其實是離散的數據,但是由於類別>20,需要採用連續型方法);
7. 將object類型數據轉換成數值類型(本文不涉及這個問題).
缺失值分析和處理
變數graduated.years(離散型)和marriageStatus(離散型)存在缺失數據,已經用-1補齊,-1將按照單獨一類來處理。
對單變數marriageStatus和Y做分析圖,發現存在missing值違約概率異常高 ,可以進一步分析。
對單變數graduated.years和Y做分析圖,發現存在missing值違約概率異常高 ,可以進一步分析。
異常值分析和處理
對單變數進行分箱處理:
存在異常值的variable:age,education,graduated.years,months
1. age、education、months中的異常值可以解釋為數據本身的特點,無需處理。
2. graduated.years 存在較大的離群點 ,進一步,id=66號的特徵中graduated.year=113,不符合常理,予以剔除。(且此人逾期,可以加規則來識別)
變數分析
單變數分析
我們可以簡單地看下部分變數的分布,比如對於age變數,如下圖:
可以看到年齡變數大致呈正態分布,符合統計分析的假設。
再比如畢業年限變數,也可以做圖觀察觀察,如下:
也大致呈正態分布,符合統計分析的需要。
變數之間相關性分析
建模之前首先得檢驗變數之間的相關性,如果變數之間相關性顯著,會影響模型的預測效果。下面通過corrplot函數,畫出各變數之間,包括響應變數與自變數的相關性。
由上圖可以看出,除了status和paid.ratio之間存在極強的負相關,其他各自變數之間的相關性是非常小的。
一些超過0.5的相關度的變數之間本身存在較強的聯繫:graduated.year 和 age、hasChild 和 marriageStatus,存在一定的相關度,且較容易解釋。
在Logistic回歸,首先需要檢驗多重共線性問題,此處由於各變數之間的相關性較小,可以初步判斷不存在多重共線性問題,而且我們在建模後還可以用VIF(方差膨脹因子)來檢驗多重共線性問題。如果存在多重共線性,即有可能存在兩個變數高度相關,需要降維或剔除處理。
基於數據處理的一些簡單特徵分析
通過識別graduated.years>固定值的id,目前的數據表明這樣的id極有可能為欺詐id。
通過單變數X和Y值的分析發現:salary、officeScale、graduated.years、education、age 、borrowType這些變數,status的分布不均衡,salary在7500左右,officeScale在55左右的人,他們的薪資水平無法匹配他們的消費水平,可能容易逾期,後期將利用特徵工程,進一步分析變數的重要性。
作者:數據取經團——白雲飛 Python愛好者社區專欄作者,請勿轉載,謝謝。
出處:基於五種機器演算法的信用風險評估配套視頻教程:Python3爬蟲三大案例實戰分享:貓眼電影、今日頭條街拍美圖、淘寶美食 Python3爬蟲三大案例實戰分享 公眾號:Python愛好者社區(微信ID:python_shequ),關注,查看更多連載內容。
推薦閱讀:
※通俗易懂講解 直接插入排序
※我可能是做了假爐石
※hash tree 在apriori 演算法中是如何進行支持度計數的?
※映射隊列(上)
※[求助]有熱心人能用伺服器幫我跑下levidb8的測試嗎?