唐一峰
(廣西師范大學數學與統計學院,桂林 541006)
近年來,隨著社會生活水平的提高,人們的消費需求、消費能力日益增長,但是絕大多數的年輕人并沒有一定的經濟儲蓄,這就意味著大多數人的消費都離不開貸款的支持,例如:房貸、車貸以及各種分期消費貸款等等。隨著互聯網企業的興起,貸款不再是銀行獨有的業務,支付寶的“借唄”“花唄”,微信的“微粒貸”,京東的“白條”等等,還有各種互聯網P2P平臺都能提供一定額度的貸款,貸款與人們的生活日益緊密。根據中國人民銀行最新公布的金融機構人民幣信貸收支數據顯示,2021 年1 月各項存款為2161418.83 億元,貸款總額為1763234.93 億元,其中住戶貸款為644532.95億元;2021年2月各項存款為2172935.17 億元,貸款總額為1776828.68億元,其中住戶貸款為645994.37 億元;2021 年3月各項存款為2209233.14 億元,貸款總額為1804131.37 億元,其中住戶貸款為657466.81 億元。各項數據均顯示貸款是我國的社會經濟發展的重要一環,因此各金融機構要嚴格控制貸款發放,針對用戶的貸款違約風險預測就顯得尤為重要。
針對貸款違約風險預測,由于機器學習、神經網絡等數據挖掘技術逐漸興起,越來越多的學者將這些技術應用到了貸款違約風險預測。趙曉翠(2006)[1]針對商業銀行信貸風險評估應用主成分分析和支持向量機的方法,首先利用主成分分析提取關鍵特征,降低維數,然后利用支持向量機的方法構造廣義最優超平面,結果表明這一方法有很好的分類正確率;張晟(2020)[2]針對互聯網P2P 借貸平臺的數據應用XGBoost 算法、隨機森林算法、投票分類算法對違規用戶進行畫像分析,根據評價指標AUC 值,得分最高的是隨機森林算法,第二是XGBoost 算法,第三是投票分類算法,但是在數據樣本較大的情況下集成學習整體運算時間較長,調參也有一定難度,容易出現過擬合現象;宋點白(2019)[3]針對消費為主的個人短期貸款利用Logistic 和RUSBoost 隨機森林模型對違約風險因素進行分析,得出商業銀行可根據掌握的人口特征和貸款特征判斷個人短期貸款違約風險,并提前進行風險應對。
基于其他學者的研究,發現LightGBM 算法應用的較少,本文選擇XGBoost 算法和LightGBM 算法建立模型,利用大數據挖掘技術,對貸款違約因素進行分析,并選擇合適的評價指標對兩個模型進行比較,最后給出本文的結論和建議。

利用泰勒二階展開式得到損失函數的極小值,然后,采用精確或近似方法貪心搜索出得分最高的切分點,進行下一步切分并擴展葉節點[5]。
LightGBM 是微軟亞洲院提出的一種基于梯度提升決策樹的算法,對標XGBoost,它最大的特點就是運算速度快、效率高。LightGBM 在尋找損失函數的最優分割點時基于梯度的單邊采樣,對于樣本xi,其梯度gi越小說明yi與yi已經非常接近了,在尋找分割點時可以把它的權重放低一點。另外在特征方面LightGBM 運用互斥特征捆綁,試圖把盡可能多互斥的特征捆綁在一起,降低數據維度的同時,最大程度的保留數據的信息,加快了運算速度。在樹的節點生長方面,LightGBM 按Leaf-Wise 策略生長,選擇能夠使損失函數減少的最多的節點分裂,可以通過設置max_leaf 參數讓樹停止生長。最后,在樹模型中,位置越靠前的分類器在模型中重要程度越高,而位置越靠后的模型,則對整體的影響很小。Light-GBM 使用DART技術使得后面的分類器也發揮較大的作用[5]。
本文引入混淆矩陣的概念,如表1所示。

表1 混淆矩陣
在邏輯回歸里面,對于正負例的界定,通常會設一個閾值,大于閾值的為正例,小于閾值為反例。如果我們減小這個閥值,更多的樣本會被識別為正例,提高正類的識別率,但同時也會使得更多的反例被錯誤識別為正例。為了直觀表示這一現象,引入ROC。
根據分類結果計算得到ROC 空間中相應的點,連接這些點就形成ROC curve,橫坐標為False Positive Rate(FPR:假正率),縱坐標為True Positive Rate(TPR:真正率)。ROC 曲線與x軸所圍成的面積就是AUC(area under ROC curve)值。一般情況下,這個曲線都應該處于(0,0)和(1,1)連線的上方,也就是AUC值大于0.5。
數據來源于天池平臺上金融風控比賽的數據集,數據集有15 萬條,數據集數據包含47 列變量信息,其中idDefault是是否違約,是目標變量,另外有15 列為匿名變量,并且對employment-Title、purpose、postCode 和title 等變量信息已經脫敏過了。大致可以把變量分為四類:貸款信息、借款人信息、借款人信用信息以及n系列匿名變量,部分變量介紹如表2所示。

表2 部分變量介紹
本文先對數據的變量特征進行一個大概的了解,對于日期變量:earliesCreditLine、employmentLength、issueDate,日期變量都需要經過處理才能代入模型.issueDate 的格式是“2014/7/1”這樣的,本文將這個變量另外命名為issueDateDT,表示該issueDate 的日期與數據集里最早的日期的間隔天數,操作之后把issueDate 刪除;employmentLength 的格式是“<1 year、2 years、8 years、10+years”這樣的,操作以后employment-Length 變成范圍在0~10 之間的數值變量;earliesCreditLine 的格式是“May-1992、Sep-1994 、Nov-2010”,操作之后只保留后面的年份,也變成了數值變量。
下面本文對數值型變量的值進行分析,發現policyCode 全都是值1,所以把該變量刪除;然后來查看變量中的缺失值情況,如圖1所示。

圖1 缺失值分布情況
變量中缺失值最多的是n11,有13033條缺失值,n10、n4、n5、n9、n8、n7、n14、n3、n2、n1、n0、n6 以及employmentLength 的缺失值在6000~8000 之間,這里本文選擇用平均數對數值型變量進行填補,對類別型變量本文使用眾數進行填補。將數值型變量分為離散和連續型兩種,觀察連續型數值型變量的分布情況,對于分布不符合正態分布進行對數化變換,使得該變量更加接近正態分布,因為一些情況下正態型變量可以讓模型更快的收斂,并且貝葉斯算法對數據正態有喜好,部分連續變量分布如圖2所示。

圖2 部分連續型變量的分布情況
接下來,對于類別變量grade 有“A、B…F、G”七個等級,本文用1~7 的值來對應;對類型數在2 之上,又不是高維稀疏且純分類的變量homeOwnership、verificationStatus、purpose、region-Code、subGrade,本文使用pandas 的get_deummies函數得到它們的虛擬變量。


圖3 剩余變量相關系數
到這里,本文對數據集的特征工程部分就可以結束了,下面開始建立模型。
本文使用的算法是LightGBM 算法和XGBoost算法,調參用的方法是貝葉斯優化方法。貝葉斯優化的原理[4]是:①根據最大化采集函數來選擇下一個最有“潛力”的評估點xi。②根據選擇的點xi評估目標函數yi=f(xi) +εi。③把新得到的輸入觀測值對(xi,yi)添加到歷史觀測集中,并更新概率代理模型,為下一次迭代做準備。本文先分別建立兩個模型要估計參數的CV 函數,給出各個參數的估計范圍,經過貝葉斯優化之后,得到最優的參數。LightGBM 算法和XGBoost 算法的參數如表3所示。

表3 部分重要參數的值
本文利用模型交叉五折驗證,LightGBM 模型的最優迭代次數大約是1420次,得到的AUC值為0.7221。XGBboost 模型的最優迭代次數大約是4004 次,得到的AUC 值為0.7285。ROC 曲線如圖4所示。

圖4 兩個模型的ROC曲線對比
經過本文對兩個模型的特征重要性分析,貸款發放時間、信貸周轉余額合計、債務收入比、年收入、分期付款金額、信用等級、貸款金額等變量對模型的貢獻度較高。顯而易見,貸款發放時間越長違約率越高,信貸周轉余額越少違約率越高,債務收入比越高違約率越高,年收入越高違約率越低,分期付款金額越高違約率越高,信用等級越高違約率越高,貸款金額越高違約率越高,進一步說明了本文的兩個模型是合理的。
本文的兩個模型得到的AUC 值還算理想,也比較接近,說明兩個模型都有不錯的學習能力和預測能力,但是在實際操作過程中XGBoost 算法的運算速度實在是太慢了,在貝葉斯調參過程和模型訓練的過程中都很慢,雖然XGBoost 得到的結果稍微比LightGBM 好一點,但是電腦配置不行的話,本文還是主推LightGBM模型。
建議金融機構在發放貸款的時候,一定要完善貸款人的信息,嚴格審核貸款人的貸款資格,健全自身的風險評估體系,有科學明確的發展方向。