如何利用汽車貸款違約數據進行信用風險建模

? ? ? ?

圖片發自簡書App

今天老師帶著我們花了整整一天時間針對一份汽車貸款違約數據進行了一次信用風險建模。整個建模過程是在R語言上做的。現在我把今天學到的東西整體羅列一下。

? ? ? ?首先,向R中導入數據,通過setwd()創造導入途徑,然后用read.csv()對數據進行讀取。這里需要讀取兩份文件:一份是接受客戶貸款的的數據A,另一份是在客戶申請時被拒絕的客戶數據B。這樣做的目的是后期合并成一張數據,以保證最后的建模合理性。

? ? ? 接下來需要把數據集A中的解釋變量(自變量)和被解釋變量(因變量y)分開,目的為了做拒絕推斷。做法是由于自變量眾多,一般選取客戶近期的交易數據作為解釋變量,比如客戶的五年內信用不良事件數量,FICO打分,可循環貸款賬戶數量等。解釋變量就是是否違約。可通過篩選子集的方式,對數據集A和B建立解釋變量數據集Ax和Bx。

2.對數據集Ax和Bx進行數據清洗和數據標準化。

? ? ? ?首先對數據中的缺失值進行處理。第一步,下載dfexplore安裝包,通過dfplot()來檢查兩個數據集缺失值情況。圖中紅線即為缺失值。

然后創建一個函數用來求解缺失比例和缺失個數。函數如下:

NA-detect=function(data){

? ? ? res=cbind(sapply(data,function(x) sum(is.na(x)))),sapply(data,function(x) sum(is.na(x))/length(x))

colnames(res)=c(‘NA-number’,‘NA-proportion’)

return(res)}

通過NA-detect()查看缺失比例和缺失個數。

由于x變量均為連續變量,可用均值和中位數對數據進行填充。代碼如下:

? ? ?Ax[is.na(Ax$tot_derog),‘tot_derog’]=meadian(Ax$tot_derog,na.rm=T)

其它解釋變量填充一樣。當填充完畢后,需重新運行NA_detect(),檢查缺失值是否填充完畢。

其次,對數據集異常值也要進行處理。處理思想是把每個解釋變量按照從大到小進行排列然后把變量的最小和最大的1%的數據賦予新值(新值即是臨界點值)。方法是先建立一個函數:

outlier=function(var){

var[var<quantile(var,0.01)]=quantile(var,0.01)

var[var>quantile(var,0.99)]=quantile(var,0.99)

print(‘ok’)

return(var)}

然后應用for循環對Ax和Bx進行賦值。

最后對數據進行標準化,可以采用中心標準化和極差標準化兩種方式。

極差標準化算法較簡單易理解一點。代碼如下:

normalize=function(x){

? ?return((x-min(x))/(max(x)-min(x)))}

Ax=as.data.frame(sapply(Ax,normalize))

Bx=as.data.frame(sapply(Bx,normalize))

3.開始建模并預測。

第一步,合并解釋變量Ax與被解釋變量Y可通過cbind.data.frame()實現

orgin=cbind.data.frame(Ax,bad_ind)

通過Y變量與數據進行排序。

第二步,對數據集orgin進行數據分區,可采用隨機抽樣和分層抽樣兩種方式,這里介紹分層抽樣。需要先下載一個包sampling,然后調用strata分層抽樣函數對數據集orgin進行抽樣。抽樣的目的是得到訓練集合測試集。

分層抽樣代碼:

select=strata(orgin,stratanames=‘bad_ind’,size=table(orgin$bad_ind)*0.6),method=‘srswor’)$ID_unit

然后選子集得到訓練集被解釋變量train_y和解釋變量train,以及測試被解釋變量test_y和解釋變量test。

第三步,調優

調優的目的是讓預測模型盡可能準確。主要思想是通過KNN算法通過訓練集對測試集進行預測,然后拿測試數據預測得到的被解釋變量和測試數據真實被解釋變量做列聯表,有由于本次測試是風險評估,所以看各k值下不同的覆蓋率,得到最大覆蓋率所對應的k值等于1。

然后通過得到的k值,再次通過KNN算法對Bx數據進行預測。得到B預測值并合并到B表中。然后通過A數據集中bad_ind內數據求比值(得到比例為3.88,表示不違約客戶是違約客戶的3.88倍)。對B數據通過分層抽樣獲得相同比例的抽取。所獲得的數據集為C,然后刪除C數據集中和A不同的變量,對A和C進行合并。就得到一個既包括被接受樣本又包括被拒絕樣本的是否違約的數據集data了。


以上過程只是先找到合適的數據集進行建模。

接下來便開始進行建模。

第一步,違約推斷

將數據集data中分類變量轉換成因子。先找到data中分類變量,然后通過factor()轉換。

第二步,對數據集自變量進行粗略篩選。由于原始變量太多,因此在前期需要將不重要的變量進行踢出。

這里可先下載一個party的安裝包,調用隨機森林算法進行粗篩。方法是先調用cforest函數對原始數據進行隨機森林運算。然后通過varimp()計算各變量的差異重要性,并進行排序,可用過畫圖barplot觀察各個變量的差異重要性。最后根據業務經驗篩選出前()%的變量。我這里是60%。當然也可以通過IV算法,確定變量個數。

第三步,對變量進行細篩。所用方法是IV算法。大概意思是對每一個變量算出違約與不違約人數占樣本總數概率p1和p2,然后(p2-p1)*ln(p2/p1)求出每個變量的差異值。并根據差異值大小進行排序,差異值越大,對預測目標變量越有顯著意義。(哦,忘了,還需要對缺失值和異常值處理,這里就不多說了)


第四步,對數據data進行分區。即抽樣獲得訓練樣本和測試樣本。可通過sample()或者strata()獲得比例還是6:4最好。

第五步,對剩下的變量中連續變量進行分箱處理。可用woe分箱轉換。此算法主要為后期的打分做準備。可調用woe.replace()對訓練集進行分箱轉換。得到兩個新的轉換后數據集train_woe和test_woe.

第六步,建模。通過邏輯回歸進行建模。可調用用lm()函數。

模型評估有以下幾種可供參考:ROC模型,洛倫茲模型,累積提升度,K-S統計量等方法。

好了,先這樣,如有錯誤,請大家多多指正。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370

推薦閱讀更多精彩內容