本文主要描述了如何用Python對數據集進行評估,整理,清洗。
完成這壹過程後,再通過Tableau對問題 “Prosper違約客戶具有哪些特點” 進行探索,分析和可視化。
最後,用隨機森林算法對2009年7月後數據進行建模分析,並對仍在進行中的貸款進行違約與否的預測。
Prosper是美國第壹家P2P借貸平臺。此數據集來源於Udacity上的Prosper 2005~2014年的貸款數據。本文希望能通過對已完成貸款的分析,判斷出什麽類型的客戶更容易違約,並預測還未完成的貸款是否會違約。
原始數據集***包含81個變量,113937條數據,下面對部分重要變量進行說明,其他變量含義可參考 變量詞典 。
首先加載庫和數據。
然後用df.describe(),df.info()觀察數據。
此次主要分析1.什麽類型的借款人更容易違約。 2.預測未完成的貸款是否會發生違約。所以去掉無關列。
從2009年7月開始,Prosper調整了對客戶的評估方式,此次我們只對2009-07-01後的貸款進行分析。
去掉意義重復列:
Prosper對於新客戶的評分和老客戶有所區別,此次僅針對新客戶數據進行分析。
首先查看下,各變量數據缺失情況。
平臺把借款狀態分為12種:Cancelled(取消)、Chargedoff(沖銷,投資人有損失)、Completed(正常完成,投資人無損失)、Current(貸款還款中)、Defaulted(壞賬,投資人有損失)、FinalPaymentInProgress(最後還款中,投資人無損失)、Past Due(逾期還款,投資人無損失)。
本文依據交易是仍在進行中還是已關閉,以及已關閉交易中投資人有無損失將所有數據分成以下三組:
Current(包含Current,Past Due)、
Defaulted(包含Defaulted,Chargedoff)、
Completed(包含Completed,FinalPaymentInProgress)。
為了便於後續分析計算,再將“Completed”改為1,“Defaulted”改為0。
已完成的貸款的違約率為defaulted_ratio_finished =26.07%
此數據集有多個特征體現了貸款用戶的信用情況。其中,信用等級(ProsperRating)是Prosper根據自身模型建立,是用於確定貸款利率的主要依據,而信用評分(CreditScore)則是由官方信用評級機構提供。
由圖5-1可以看到,隨著信用等級(ProsperRating)的不斷升高,違約率呈現明顯的下降趨勢。
而在信用評分(CreditScore)中,低分段(640-700),違約率處於比較高的位置,且沒有太大變化。大於720的部分,隨著信用評分的升高,違約率明顯下降。
說明整體而言,借款人的信用水平越高,違約可能性越低。
在不同年收入(IncomeRange)中,Not employed的借款人,違約率最高,隨著收入增加,違約率不斷降低。
在不同貸款狀態下(Status),違約用戶的整體月收入(MonthlyIncome)明顯低於未違約用戶。
根據圖5-4的左圖,違約用戶與未違約用戶的整體負債收入比差異不大。
再根據負債收入比(DebtToIncome)的四分位點,將所有數據分成數據量接近的四組。從圖5-4的右圖可以看到低比例(負債收入比0-0.12)與中等比例(0.12-0.19)的違約率都較低。較高比例(0.19-0.29)的違約率略高於前面二者。但高比例(大於0.29)的用戶違約率顯著升高。
根據銀行卡額度透支率(BankcardUtilization)的四分位點,將數據分成 '未使用','較低透支(0,0.3]','中等透支(0.3,0.7]', '較高透支(0.7,1]','嚴重透支(1,5]'五組。
可以看到,嚴重透支的借款人,違約率最高。
其次是未使用的用戶,這也是為什麽金融機構對於“白戶”會格外關註的原因。
近半年征信查詢次數(InquiriesLast6Months)可以反應出借款人近期向金融機構申請借款的頻繁程度,間接體現了借款人近期的資金狀況。
圖5-6中,綠線表示不同查詢次數下的借款筆數。可以看到,絕大部分在7次以下。
而在查詢次數0-7區間內,違約率隨著查詢次數的增加而升高。
當前逾期(CurrentDelinquencies)可以很好的反應出借款人的信用情況。
由圖5-7,可以看到大部分借款人的當前逾期在2次以內。而在0-6的區間內,違約率隨當前逾期數的增加而升高。
為了避免某些數量極少的分類對違約率排序的影響,首先篩選出借款筆數在30以上的分類。
由圖5-8可以看到,數量最多的是1- Debt Consolidation(債務整合)。
而違約率最高的依次是15- Medical/Dental(醫療),13-Household Expenses(家庭開支),3-Business(商業),均高於30%。
根據貸款金額(LoanAmount)的四分位點,將數據分為數量接近的四組。比較有意思的是,中等借款(3100,4750)的違約率最高,而高額借款(大於8500)的違約率反而最低。
這很可能是因為能申請到高額借款的用戶,各方面條件都不錯,從而降低了違約率。
由圖5-11可以看到,在0-30區間內,隨著持續時間的增長,違約率逐漸降低,而這壹區間也包含了壹半左右的數據。
當持續時間繼續增長,違約率看不出有明顯變化規律。
在不同地區之間,違約率也存在比較明顯的差異。LA,SD等城市,違約率較高。UT,CO等城市,違約率較低。
整體而言,有房產的借款人,違約率要明顯低於無房產的借款人。
導入相關庫。
將數據中的字符串變量,均轉換為數字。
按照測試集30%,訓練集70%的比例劃分數據集,並使用隨機森林算法,建立模型。
該模型測試集預測準確率為:accuracy=73.99%
對於隨機森林算法,可以查看在這個模型中,每個特征的重要程度。
如圖6-2所示,StatedMonthlyIncome和EmploymentStatusDuration兩個特征最為重要。
根據此模型,對目前仍在進行中的貸款進行違約與否的預測。
仍在進行中的貸款違約率為defaulted_ratio_predict =3.64%
本文詳細描述了對於Prosper貸款數據,從數據探索到建立模型,並進行預測的完整過程。
發現月收入(StatedMonthlyIncome)以及受雇傭狀態持續時間(EmploymentStatusDuration)對是否會違約的影響程度最大。主要是因為這二者是體現借款人穩定性的重要因素。
而在模型建立方面,還可以調整此模型的參數,來進行改進從而提高準確率,也可以嘗試使用其他算法,如邏輯回歸等,建立新的模型進行比較。