李 欣,俞衛琴
(上海工程技術大學 數理與統計學院,上海 201620)
在信用貸款不斷發展的今天,信用評分已成為金融機構日益關注的問題,目前已成為研究的熱門問題.信用評分是金融業的重要組成部分,在信用客戶選擇、風險計量、貸款前后監管、綜合績效評估和資產組合風險管理等現代事務中發揮著重要作用[1].在銀行、金融機構以及基于互聯網的金融公司中,強大的信用風險預測能力可以更好地鞏固市場上的可持續利潤.信用評分的目的是將申請人分為兩類:信譽良好的人和信譽不良的人[2].信譽良好的人很有可能還清財務義務.信譽不良的人極有可能發生違約.信用評分的準確性對金融機構的盈利能力至關重要.即使將信用不良的申請人的信用評分準確性提高1%,也將減少金融機構的巨大損失.
針對信用評估的方法主要有邏輯回歸[3]、支持向量機[4]、神經網絡[5]和決策樹[6]等.傳統的對信用評估的模型主要采用單一模型.如王黎等[7]直接采用Gradient Boosted Decision Tree (GBDT)的方法對個人信用進行評估.羅方科等[8]運用邏輯回歸模型對小額貸款風險進行評估.然而,單一模型在處理非線性問題時效果并不十分理想.
為了解決單一模型的問題,對模型進行組合應用逐漸成為提高信用評估準確率以及穩定性主要方法.Wang 等[9]將邏輯回歸分析、決策樹、人工神經網絡以及支持向量機多個分類器(即集成學習)結合使用,顯著提高單個基礎學習者的學習能力.Koutanaei 等[10]提出特征選擇算法和集成學習分類器的混合數據挖掘模型引用于信用評估,將4 種特征選擇算法進行比較得出PCA 算法較好.He 等[11]為信用評分生成一個新穎的集成模型,使用粒子群優化算法進行基本分類器的參數優化,減少了數據不平衡帶來的負面影響,提高了信用評分方面預測模型的綜合性能.劉瀟雅等[12]應用C4.5 信息熵增益率方法進行特征選擇,減少了數據的冗余屬性.王名豪等[13]對混沌粒子群法進行改進,并應用于XGBoost 算法中進行參數優化,提高了信用評估的準確性.
基于上述研究進展,本文提出基于改進的GSXGBoost 的個人信用評估研究,用改進的網格搜索法尋找分類器的最優參數.實驗部分,在UCI 機器學習數據庫中的信貸數據集上比較了本文提出GS-XGBoost與其他常用算法的性能.實驗結果表明,本文算法具有較高的預測準確率,是進行信用風險評估的有效模型.
XGBoost (eXtreme Gradient Boosting)是極限梯度提升算法,由Chen 等[14]設計,主要使提升樹突破自身的計算極限,來實現運算快速,性能優秀的工程目標.
XGBoost 的目標函數為:

其中,l是損失函數,用于測量預測值與真實值yi之間的差,第二項 Ω是懲罰函數,即懲罰了模型的復雜性.在懲罰函數中,γ是復雜度參數,T為葉子節點數,λ是葉子權重w的懲罰系數[15].懲罰函數 Ω有助于平滑最終學習的權重,以避免過度擬合.
在XGBoost 中,完整的迭代決策樹的公式應該寫作:

其中,fk+1為 第k+1棵 樹的模型,η是迭代決策樹時的步長(shrinkage),又稱為學習率(learning rate).η越大,迭代的速度越快,算法的極限很快被達到,有可能無法收斂到真正的最佳.η越小,越有可能找到更精確的最佳值,更多的空間被留給了后面建立的樹,但迭代速度會比較緩慢.
式(1)中的樹集成模型L將函數作為參數,且無法使用歐幾里得空間中的傳統優化方法進行優化,取而代之以附加方式進行優化訓練.通常情況下,令表示第t次迭代中第i個實例的預測值,我們將需要添加ft來最小化以下目標:

其中,gi和hi分別為損失函數的一階和二階梯度統計量.
定義Ij={i|q(Xi)=j} 為葉子j的實例集,則可以將等式(3)寫成如式(4).

對于固定結構q(X),我們可以計算出葉子j的最優權重以及目標函數的最優值為:

式(6)用來對結構樹q的質量進行評分.該分數類似于評估決策樹的雜質系數,不同之處在于它是針對更廣泛的目標函數而得出的.XGBoost 本身的核心是基于梯度提升樹實現的集成算法,整體來說可以有3 個核心部分:集成算法本身,用于集成的弱評估器,以及應用中的其他過程.
梯度提升算法是XGBoost 算法的基礎,它是實現模型預測的有力技術之一,在Boosting 算法中處于重要位置.集成算法主要通過在數據集中生成弱評估器(n_estimators),并將弱評估器集合起來,效果優于單一的模型.n_estimators 過小容易造成數據的欠擬合,過多容易造成數據的過擬合問題.所以如何選擇合適的n_estimators 是一個重點.
網格搜索法(grid search)[16]是指將指定參數進行枚舉,通過將評估函數中的參數進行交叉驗證得到最優參數的算法.即把指定優化的參數在一定范圍內依次排序,并將這些數據排列成組合形成網格,依次將數據放入分類器中進行訓練,并采用交叉驗證方法對參數的表現進行評估,在分類器遍歷了所有的參數組合后,返回一個最優的分類器,同時獲得最優的參數組合.
本文中對網格搜索法的實際應用是讓eta 與n_estimators 在一定的范圍內劃分網格并遍歷網格內所有點進行取值(數據為本文借貸數據),其中eta 的范圍為[0.05,1],步長為0.01,n_estimators 的范圍為[1,300],步長為3.在此范圍內得到eta 與n_estimators下訓練集分類準確率,通過比較準確率來確定最優的參數組合.參數的尋優如圖1所示.

圖1 網格搜索法
從圖1中能夠知道,參數eta 和n_estimators 在一定的區間范圍內能夠取得比較高的準確率,但在其他的多數范圍內的準確率并不高,使得在進行參數尋優的過程中消耗大量的時間.
針對上述問題提出改進方法.首先,在參數區間上選擇大步長進行參數尋優,得到準確率高的最優局部參數.再次,在局部最優參數范圍內采用小步長在該范圍內進行二次尋優,尋找最優參數.改進的方法減少了不必要的計算,節省了大量的時間.
改進的個人信用評估模型分為2 部分,第1 部分為數據預處理過程,首先將數據集進行極差標準化處理后進行特征選擇,篩選出重要性高的特征屬性.第2 部分為模型的優化過程,將篩選出的特征數據集進行改進的網格搜索法處理,尋找最優參數n_estimators和learning rate.隨后將模型進行評估,采用5 折交叉驗證法并取均值進行對比.
改進的GS-XGBoost 的個人信用評估模型的流程圖如圖2所示.

圖2 算法流程圖
具體步驟如下:
步驟1.數據預處理.對數據進行建模分析之前,需要對數據中的缺失值進行填補或刪除.之后,對處理后的數據進行極差標準化處理,公式如下:

其中,xij為樣本點,m in(xj) 與m ax(xj)是第j屬性下樣本數據的最小與最大值.
步驟2.特征選擇.數據集中的維數過高時,不相關的屬性特征對個人信用的評估之間并沒有相互關聯性,影響個人評估的準確率.通過特征選擇可以提高模型的精確度,預防過擬合.本文采用隨機森林算法(RF)對數據集進行訓練,取得每個特征的重要性排名并移除重要度低的特征屬性.
步驟3.參數尋優.使用改進的網格搜索法對分類器的參數進行尋優.
1)將數據集D分為訓練集Dtrain與 測試集Dtest,比率為7/3.在數據集中采用五折交叉驗證法(5-fold Cross Validation)將訓練集分為5 份Dtrain1,Dtrain2,···,Dtrain5.
2)將產生的5 組數據對分類器中的弱評估器(n_estimators)以及學習速率(learning_rate)進行訓練,使用改進的網格搜索法對XGBoost 模型進行尋優,得到最優參數.
步驟4.模型評估.將最優參數與特征子集代入模型中進行評估,并與其它分類器進行比較.
本文選擇F?value與G?mean值來對信用評估進行評價.混淆矩陣如表1所示.

表1 混淆矩陣

為了檢驗本文改進算法的有效性,對本文算法進行實證分析,從UCI 國際機器學習庫中挑選出信用卡借貸數據.數據的相關信息如表2所示.屬性相關信息如表3所示.

表2 樣本信息

表3 特征屬性
對數據集進行特征選擇,利用隨機森林對數據集進行特征重要性排名,結果如圖3所示.選取排名前12 的特征屬性數據集.

圖3 特征重要性排名
為了比較改進算法的優越性,將特征選擇后的數據集進行參數尋優.網格搜索法的變量為n_estimators和learning rate,設定不同的步長范圍,分為4 組數據進行比較.第1 組數據n_estimators 的范圍為(1,300),步長為5,learning rate 的范圍為(0.05,1),步長為0.05.第2 組數據n_estimators 的范圍為(1,300),步長為10,learning rate 的范圍為(0.1,1),步長為0.1.第3 組數據n_estimators 的范圍為(1,300),步長為20,learning rate 的范圍為(0.1,1),步長為0.1.第4 組數據n_estimators 的范圍為(1,300),步長為50,learning rate 的范圍為(0.1,1),步長為0.1,結果如表4所示.選擇最優參數n_estimators 為16,learning rate 為0.44.
本文將改進后的模型進行評估.經過特征選擇后的數據集從20 維下降為12 維,將特征選擇后篩選的數據集作為分類器XGBoost 的訓練集進行訓練,使用改進的網格搜索法尋找XGBoost 的最優參數n_estimators和learning rate.本文使用軟件為Python3.7,使用5 折交叉驗證法對數據集進行訓練來減少隨機性對分類結果的影響.本文算法模型(GS-XGB) 與支持向量機(SVM)、隨機森林(RF)、邏輯回歸(LOG)、神經網絡(BP)以及未改進的XGBoost (XGB)進行比較,實驗結果如表5和表6所示,F 和G 分別為F?value和G?mean的值,其中加粗部分為相同條件下的模型的最大數值.

表4 參數尋優結果比較

表5 少數類準確率

表6 模型實驗結果對比
表5為各模型下少數類的準確率,少數類為信用較差的用戶.從表中可以得到如下結論:1)總體上每個模型下的少數類準確率都比較高,差異較小,但與其他模型相比,該方法對信用評估的分類效果優于其他算法,能夠有較大的準確率識別信用不良人員.2)與隨機森林模型(RF)相比,少數類分類的平均準確率提高了6.8%,與未經過改進的XGBoost 相比,平均準確率提高了2.7%.
表6為各個評估模型在信貸數據集上的F?value和G?mean值,從實驗結果可以得到如下結論:1)改進的網格搜索法優化XGBoost 算法的評估效果優于其他算法.2)相比沒有進行改進的XGBoost 算法,改進的XGBoost 算法F?value平均值提高了5.88%,G?mean平均值提高了0.5%.這是因為在對數據進行特征選擇后摒棄了無關的數據特征.
隨著個人信用貸款消費愈來愈普及,個人信用良好與否直接導致信貸金融機構的損失,因此對個人信用評估的研究非常重要.本文提出了基于改進的GSXGBoost 的個人信用評估研究,該方法將改進的網格搜索法應用于XGBoost 模型,篩選出最優參數n_estimators 和learning rate.選用UCI 公開數據集進行評估,使用F?value和G?mean以及少數類準確率作為評估指標.實驗結果表示,該算法對個人信用借貸的評估性能優于其他算法.
未來需要解決的問題有:1)本文屬于二分類問題,對于多分類還需要進一步的研究.2)該算法對本文數據集的有效性是否對其他數據也有效.3)在特征選擇上,如何將該算法與其他方法相結合(如神經網絡,支持向量機等)進一步提高算法精確度.