趙天傲 鄭山紅 李萬龍 劉凱
摘 要:在大數(shù)據(jù)時代如何利用數(shù)據(jù)挖掘處理海量數(shù)據(jù)從而對信用風險進行預(yù)測分析成為了當下非常重要的問題,本文運用XGBoost算法建立信用風險分析模型,運用柵格搜索等方法調(diào)優(yōu)XGBoost參數(shù),基于以AUC、準確率、ROC曲線等評價指標,與決策樹、GBDT、支持向量機等模型進行對比分析,基于德國信用數(shù)據(jù)集驗證了該模型的有效性及高效性。
關(guān)鍵詞:信用風險分析;XGBoost;數(shù)據(jù)挖掘;柵格搜索
中圖分類號:TP39 文獻標識碼:A
1 引言(Introduction)
銀行信用風險的大小和質(zhì)量決定著銀行盈利水平的高低,對銀行穩(wěn)定、長遠的發(fā)展有著至關(guān)重要的影響[1],銀行使用數(shù)據(jù)挖掘方法建立目的明確、層次分明的信用風險分析模型有著重要價值。
早期的信用風險研究尋求數(shù)學解決方法,Z分數(shù)模型等都是比較具有代表性的方法[2,3]。隨著銀行信貸的大規(guī)模增長及客戶信用信息的迅速變化,形成了復雜的數(shù)據(jù)資源,信用風險的形式與日俱增。因此,Hashemi and Blanc、Guilherme Barreto Fernandes、謝宇等分別采用神經(jīng)網(wǎng)絡(luò)和粗糙集成分集合[4]、logistic模型作為解釋變量[5]、改進BP人工神經(jīng)網(wǎng)絡(luò)模型[6]對銀行信用風險進行預(yù)測得到了較好改進。但以上的方法在預(yù)測精度和準確性上還有待提高。
本文引入XGBoost(eXtreme Gradient Boosting)[7]算法建立信用風險分析優(yōu)化模型,基于UCI上德國信用數(shù)據(jù)集與決策樹、GBDT、支持向量機等模型進行對比分析,驗證了XGBoost模型應(yīng)用于信用風險分析具有更好的性能。
2 XGBoost介紹(Introduction to XGBoost)
XGBoost由陳天奇博士提出的boosting型樹類算法,能進行多線程并行計算,通過一次次迭代生成一代代新的樹,實際上是把很多分類性能較低的弱學習器組合成一個準確率高的強學習器,每個決策樹可能沒有良好的分類效果,但是多個分類的結(jié)果肯定會得到更準確的預(yù)測。XGBoost加入正則項到目標函數(shù)尋求最優(yōu)解,平衡目標函數(shù)的下降和模型的復雜度,避免出現(xiàn)過擬合現(xiàn)象,具有運行速度快、分類效果好、支持自定義損失函數(shù)等優(yōu)點。我們希望建立K棵使樹群的預(yù)測值盡量真實且泛化能力強的回歸樹。
XGBoost最根本就是由決策樹集成而來,我們把樹模型寫成:
式(1)中,,其中F對應(yīng)所有回歸樹的集合,xi表示第i個特征向量,每個f是樹空間F的一棵樹,每一棵樹fk對應(yīng)一個獨立的葉子權(quán)重w和樹結(jié)構(gòu)q。此時需要引入目標函數(shù):
L部分為誤差函數(shù),表示模型擬合數(shù)據(jù)的程度,Ω表示正則項,是所有正則化項累加和,用來處理復雜模型,對復雜模型進行簡單化處理。對于模型誤差部分用additive training訓練,通過對平方誤差泰勒展開二次項,帶入正則化項,得到最終目標函數(shù)為:
其中的和是XGBoost自定義的,顯然、越大,表示希望獲得更簡單的樹,這樣處理能很清楚的理解這個目標,Obj分數(shù)越小表示生成的樹的結(jié)構(gòu)越好。至此樹的類型已經(jīng)能夠確定,接下來需要進行樹的分裂,采用貪心生長樹的方法,遍歷所有特征,從而找到最優(yōu)的特征分裂,到達一定深度或不能再分裂時停止,基于目標函數(shù)值比較分裂前后的最小目標函數(shù)值,增益最大的點為最優(yōu)點,對應(yīng)特征為最優(yōu)特征。
3 基于XGBoost的預(yù)測方法(The prediction method
based on XGBoost)
3.1 數(shù)據(jù)預(yù)處理
本文使用的數(shù)據(jù)來自UCI上公開的德國信用數(shù)據(jù)集,包括24個變量。獲得該數(shù)據(jù)集后,首先標準化處理數(shù)據(jù),清理數(shù)據(jù)集中的異常值,糾正錯誤數(shù)據(jù),通過平滑噪聲、數(shù)據(jù)規(guī)約等方式使得數(shù)據(jù)更加適用于本模型,同時添加ID屬性,對每個屬性添加屬性名并做規(guī)范化。
3.2 XGBoost的參數(shù)優(yōu)化
本文對于XGBoost涉及優(yōu)化的參數(shù)有:max_depth、min_child_weight、gamma、seed、objective。
max_depth表示樹的最大深度,能夠避免過擬合,限制樹分裂的程度,值越大,模型越容易產(chǎn)生局部最優(yōu)情況,典型值3-10;min_child_weight確定最小葉節(jié)點樣本權(quán)重和,值較大能夠避免局部特殊樣本的學習,但是值過高會導致欠擬合。由于以上三種參數(shù)值都為整數(shù)值,且值的范圍較小,所以運用柵格搜索法進行調(diào)整尋求最優(yōu)參數(shù)值,柵格搜索法是一種窮舉搜索方法,它指定參數(shù)值,排列每個參數(shù)的可能值,列出所有可能的組合,并生成“網(wǎng)格”,然后訓練每個組合,進行交叉驗證評估性能。
gamma指所需的最小損失函數(shù)下降值,滿足該值節(jié)點才會分裂,值越大,算法越保守;seed是隨機種子個數(shù),用于調(diào)整參數(shù)、顯示隨機數(shù)據(jù)結(jié)果。因為兩組參數(shù)的值為隨機值或者連續(xù)值,所以隨機選取幾個合理的數(shù)值分別進行調(diào)整,選取最優(yōu)的數(shù)值作為參數(shù)值。
objective定義需要最小化的損失函數(shù),常用值有:二分類邏輯回歸—binary:logistic;多分類器—multi:softmax。本文為二分類數(shù)據(jù),根據(jù)經(jīng)驗值來確定參數(shù)。
3.3 XGBoost模型描述
XGBoost最根本的就是希望建立K棵回歸樹,使得準確率高、泛化性好、預(yù)測誤差盡量小,葉子節(jié)點盡量少的目標函數(shù)才能訓練出更好的模型,利用貪心策略及二次最優(yōu)化確定最優(yōu)節(jié)點及最小的損失函數(shù),以此為依據(jù)進行樹分裂,得到小樹苗,接下來按照上述方式繼續(xù)分裂,并繼續(xù)形成新樹,根據(jù)之前的預(yù)測每次都會建立最優(yōu)的樹,當達到max_depth時停止迭代;此時我們得到了最基本的模型,之后使用柵格搜索等方法對幾種參數(shù)進行優(yōu)化,從而分析數(shù)據(jù)。
優(yōu)化后的XGBoost模型如下,模型圖如圖1所示:
(1)初始化回歸樹,損失函數(shù)集合,此時模型為常數(shù)值
(2)While k on 1,2,3,...,T do
(3)do
(4)計算損失函數(shù)L的最小值m
(5)把m加到中
(6)While t on 1,2,3,...,T
(7)中選取m最小時t對應(yīng)的開始建樹
(8)采用貪心法尋找最優(yōu)分裂節(jié)點迭代生成新的樹
(9)If deep>max deep break
(10)得到最終模型
(11)利用Raster search等方法調(diào)優(yōu)參數(shù)
(12)優(yōu)化模型分析數(shù)據(jù)
4 實驗分析(Experimental analysis)
本文所使用的德國信用數(shù)據(jù)集如表1所示。
使用python語言和Pycharm軟件來實現(xiàn)模型,用到了pandas、itertools、numpy等包,分別使用決策樹、GBDT、SVM及XGBoost進行分析比較,采用K折交叉驗證的方式(5折、10折交叉驗證)分別處理數(shù)據(jù)集,對比幾種算法的精密度Precision(Precision=TP/(TP+FP))、召回率Recall(Recall=TP/(TP+FN))、準確度AUC值、F1值(F1 Score=P*R/2(P+R)、Accuracy(Accuracy=(TP+TN)/(TP+FP+TN+FN))、真假陽性率False Positive Rate—True Positive Rate折線圖;P和R分別為Precisionl和Recal)等指標,其中TP為真陽性,F(xiàn)P為假陽性,TN為真陰性,F(xiàn)N為假陰性。
從表2和表3可以看出,XGBoost比決策樹、GBDT、SVM在各項指標上的值均有不同程度的提高;同時,優(yōu)化后的XGBoost在各項指標上都有所提升;優(yōu)化后的XGBoost的平均Accuracy和AUC值比決策樹、GBDT、支持向量機分別高出4.19%、3.3%、3.34%;優(yōu)化后的XGBoost平均F1值比決策樹、GBDT、支持向量機分別高出7.5%、3.5%、5%;相比較其他幾種算法,準確性、召回率均有提高。
圖2為XGBoost、決策樹、GBDT、SVM的ROC曲線圖(受試者工作特征曲線)。曲線下方的面積即為AUC,當AUC越接近1時,分類器越完美;由圖可知,XGBoost的ROC曲線最優(yōu),這說明XGBoost的分類效果最好。
5 結(jié)論(Couclusion)
本文研究基于XGBoost算法對信用風險進行分析,以德國信用公開數(shù)據(jù)集作為數(shù)據(jù)源,采用K折交叉驗證法,通過柵格搜索、經(jīng)驗值調(diào)參等方法對參數(shù)進行調(diào)整,基于AUC、準確率、ROC曲線等評價指標,與決策樹、GBDT、支持向量機等模型進行對比分析。實驗表明調(diào)優(yōu)后的XGBoost算法應(yīng)用于數(shù)據(jù)集上比調(diào)參前在各方面均有明顯調(diào)整,同時XGBoost算法相對于常用的決策樹、GBDT和支持向量機算法,無論是準確性還是分類效果等方向都有更加明顯的優(yōu)勢,驗證了XGBoost模型的有效性和精確度。
參考文獻(References)
[1] Cheng-Lung Huang,Mu-Chen Chen,Chieh-Jen Wang.Credit scoring with a data mining approach based on support vector machines[J].Expert Systems with Applications,2007,33(4):847-856.
[2] Edward I Altman,Anthony Saunders.Credit risk measurement: Developments over the last 20 years[J].Journal of Banking and Finance,1997,21(11):1721-1742.
[3] Michel Crouhy,Dan Galai,Robert Mark.A comparative analysis of current credit risk models[J].Journal of Banking and Finance,2000,24(1):59-117.
[4] R.R.Hashemi,L.A.Le Blanc,C.T.Rucks,A.Rajaratnam.A hybrid intelligent system for predicting bank holding structures[J].European Journal of Operational Research,1998,109(2):390-402.
[5] Guilherme Barreto Fernandes,Rinaldo Artes.Spatial dependence in credit risk and its improvement in credit scoring[J].European Journal of Operational Research,2016,249(2):517-524.
[6] 謝宇.基于人工神經(jīng)網(wǎng)絡(luò)的商業(yè)銀行信貸風險預(yù)警研究[D].暨南大學,2010.
[7] Chen T,Guestrin C.XGBoost:A Scalable Tree Boosting System[J].KDD '16 Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining,2016:785-794.
作者簡介:
趙天傲(1993-),男,碩士生.研究領(lǐng)域:數(shù)據(jù)挖掘.
鄭山紅(1970-),女,博士,教授.研究領(lǐng)域:軟件工程.
李萬龍(1963-),男,教授.研究領(lǐng)域:軟件工程.
劉 凱(1991-),女,碩士生.研究領(lǐng)域:人工智能.