劉 斌,陳 凱
(陜西科技大學電子信息與人工智能學院,陜西 西安 710021)
互聯(lián)網(wǎng)的迅速發(fā)展,影響著各個行業(yè),金融行業(yè)也不例外。數(shù)據(jù)時代蘊藏著巨大的商機,善于利用大數(shù)據(jù)的企業(yè)將會獲得新的發(fā)展方向和動力,而如何從大數(shù)據(jù)中提煉出有價值的信息是增強企業(yè)競爭能力的重要手段。隨著大數(shù)據(jù)技術的應用,越來越多的金融企業(yè)也開始投身到大數(shù)據(jù)應用實踐中[1]。金融的核心是風控,好的風控依托于數(shù)據(jù)。在互聯(lián)網(wǎng)金融迅猛發(fā)展的背景下,風險控制問題已然成為行業(yè)焦點,基于大數(shù)據(jù)的風控正在成為互聯(lián)網(wǎng)金融領域的熱門戰(zhàn)場。
隨著當前貸款總量的不斷加大,用戶違約概率不斷攀升,用戶貸款的風險便漸漸顯露出來[2-3]。此時,一個準確的風險預測模型是非常重要的。在線信貸的風險是多種多樣的,目前對于信貸風險的預測主要有劉紅生等人[4]提出的Logistic回歸模型,他們以某一農(nóng)村合作銀行為例,建立了Logistic回歸模型來對企業(yè)的貸款違約情況進行了預測分析和比較,認為Logistic回歸模型是較為理想的預測模型。范彥勤[5]應用主成分分析法對數(shù)據(jù)進行特征提取,然后提出了2種貝葉斯分類模型來對個人信用進行預測,并與其他模型對比,發(fā)現(xiàn)基于貝葉斯分類的預測模型誤分類較少。文獻[6]在建立較為全面的評估體系之后,提出了基于隨機森林算法的綠色信貸風險評估模型,并以某一上市公司為對象進行了實例分析,結果表明該模型評估準確率比傳統(tǒng)模型更高。但這些算法對于維度龐大,包含大量噪聲且分布不平衡的貸款數(shù)據(jù),預測效果和性能仍然有待提升。
為了解決上述問題,本文通過特征工程的方法結合SMOTE算法對貸款數(shù)據(jù)進行處理,得到去噪、緯度較低的數(shù)據(jù),并增加數(shù)據(jù)集中少數(shù)類樣本的數(shù)量,使數(shù)據(jù)接近平衡。然后通過XGBoost算法構建貸款風險預測模型,將精確率、召回率、準確率、F1值作為分類的評價指標,對預測結果的有效性進行評價,并與上述分類算法進行對比,接著對比不同正負樣本比例時模型的預測效果,來驗證SMOTE算法對模型是否有提升作用。
本次實驗數(shù)據(jù)來源于美國網(wǎng)絡貸款平臺LendingClub在2007-2015年間的信用貸款情況,主要包括貸款狀態(tài)和還款信息。包括:信用評分、地址、工作年限、房屋狀態(tài)等累計75個屬性(列),89萬個實例(行)。算法的應用場景是根據(jù)各屬性對貸款的風險進行預測。由于數(shù)據(jù)是從真實場景下得到的,無法直接用于實驗,所以特征工程[7]是本次實驗的首要任務,也是本次實驗的重點。
原始數(shù)據(jù)中存在缺失值,還存在一些與模型決策明顯沒有關系的特征,因此要進行特征的篩選與提取。
1)缺失值處理。
本次實驗中,存在部分缺失率超過40%的特征,這些特征會影響模型的準確度,因此將這類特征直接刪除。對于缺失率較低的特征,根據(jù)特征的實際意義使用插補法[8],如均值插補和眾數(shù)插補法,或者通過其他特征與缺失值之間的關系對缺失值進行預測填補。
2)數(shù)據(jù)過濾。
對于冗余或者與構建預測模型無關的屬性進行刪除,如地址、郵編、貸款發(fā)行時間、網(wǎng)址等,減少其對模型帶來的干擾[9],并降低特征的緯度。
對于數(shù)據(jù)集中的一些類別特征,機器學習算法不能直接識別,需要將其轉化為合適的模型輸入。如數(shù)據(jù)集中特征變量loan_status(貸款狀態(tài))用來描述當前貸款處于什么狀態(tài),原始數(shù)據(jù)中共6種狀態(tài)。本次實驗結果是對貸款的風險進行預測,理想的預測結果分為正常和有風險2種,是一個二分類問題。所以根據(jù)實際意義,將上述貸款狀態(tài)抽象為2類,一類為正常貸款,編碼為0,另一類為違約貸款(有風險貸款),編碼為1。具體分類方法如表1所示。
表1 貸款狀態(tài)抽象
貸款狀態(tài)含義編碼Current正常還款中Fully Paid全部還完In Grace Period在寬限期內(nèi)0(正常)Late (16~30 days)逾期16~30天Late (31~120 days)逾期31~120天Default違約1(風險)
但是對于貸款類別這種特征,各類別之間并不能進行直接比較,所以無法使用數(shù)值編碼,這種情況可以使用啞編碼方法[10],即利用多個占位符,如用(1,0,0,0)和(0,1,0,0)來代表不同的類別,有多少個類別,就用多少個占位符表示。
在多指標的評價體系里,各個指標性質不同,因此有著不同的量綱和數(shù)量級。當各指標之間的水平相差比較大時,如果直接用原始的值進行學習,就會突出數(shù)值較高的指標在模型中的作用,從而削弱數(shù)值水平較低指標的作用。因此,為了保證結果的可靠性,需要對原始特征值進行縮放[11]。本次實驗采用標準化的方法來進行特征縮放。標準化后的值如式(1)所示:
X′=X-μ/σ
(1)
式(1)中,μ是樣本數(shù)據(jù)的均值,σ是樣本數(shù)據(jù)的標準差。經(jīng)標準化的數(shù)據(jù)變成了一個均值為0,方差為1的正態(tài)分布。對變量進行的標準差標準化可以消除量綱的影響和變量自身變異的影響。
模型要優(yōu)先選取與預測目標相關性較高的特征,不相關特征可能會降低分類的準確率,因此為了增強模型的泛化能力,需要從原有特征集合中挑選出最佳的部分特征,并且降低學習的難度,從而簡化分類器的計算。特征選擇[12]的方法主要有嵌入法(embedded approach)、過濾法(filter approach)、包裝法(wrapper approach)。本次實驗主要采用filter方法,通過皮爾森相關系數(shù)得出各個特征間的相關性,找出相關性極高的冗余特征并將其剔除,降低特征的維度。經(jīng)過特征工程后得到表2中所示的數(shù)據(jù)集。
表2 數(shù)據(jù)集特征描述
特征類型特征描述用戶信息就職年限,職務,信用評級,有無配偶,房屋狀態(tài),收入,近2年拖欠事件,收入是否經(jīng)過驗證貸款信息貸款等級,貸款利息,貸款金額,貸款期限,為申請者提供的類別,獨自申請還是共同申請流水信息信用卡額度,年收入,年支出衍生特征每月還款金額與月收入比值,年負債與年收入比值,貸款分期年限與就職年限比值
類不平衡(class-imbalance)是指在訓練分類器中所使用的訓練集的類別分布不均[13-14]。比如一個二分類問題,1000個訓練樣本,比較理想的情況是正、負樣本的數(shù)量相差不多;而如果正樣本有995個、負樣本僅5個,就意味著存在類不平衡。圖1展示了本次數(shù)據(jù)中正負樣本的分布情況。可知本次實驗數(shù)據(jù)正負樣本比約為10:1,是一個典型的高度不平衡的數(shù)據(jù)。
圖1 正負樣本分布情況
針對類不平衡問題,在數(shù)據(jù)層面目前主要的解決辦法是通過重采樣技術,對樣本進行欠采樣或者過采樣[15-16],調(diào)整樣本的不平衡程度:
1)欠采樣。
對訓練集里面樣本數(shù)量較多的類別(多數(shù)類)進行欠采樣,拋棄一些樣本來緩解類不平衡。欠采樣有一個很大的缺點是未考慮樣本的分布情況,而采樣過程又具有很大的隨機性,可能會誤刪多數(shù)類樣本中一些重要的信息。
2)過采樣。
過采樣是指通過人工生成訓練集里面樣本數(shù)量較少的類別(少數(shù)類)。目前過采樣比較常用的算法是SMOTE算法。
文獻[17]提出了一種過采樣算法SMOTE。概括來說,此算法通過“插值”來為少數(shù)類合成新的樣本。
假設訓練集的一個少數(shù)類的樣本數(shù)為T,那么SMOTE算法將為這個少數(shù)類合成N×T個新樣本。這里要求N必須是正整數(shù),如果給定的N<1那么算法將認為少數(shù)類的樣本數(shù)T=N×T,并強制N=1。
考慮該少數(shù)類的一個樣本i,其特征向量為xi,i∈{1,…,T},為其人工生成樣本的步驟如下:
步驟1首先從該少數(shù)類的全部T個樣本中用歐氏距離找到樣本的k個近鄰,記為xi(near),near∈{1,…,k}。
步驟2然后從這k個近鄰中隨機選擇一個樣本xi(nn),再生成一個0到1之間的隨機數(shù),從而合成一個新樣本:
xi1=xi+ζ1·(xi(nn)-xi)
步驟3將步驟2重復進行N次,從而可以合成N個新樣本:xinew,new∈{1,…,N}。
步驟4對全部的T個少數(shù)類樣本進行上述操作,便可為該少數(shù)類合成N×T個新樣本。
本次實驗通過Python調(diào)用庫imbalanced-learn來實現(xiàn)SMOTE算法,初始數(shù)據(jù)集中正負樣本比例為10:1,通過調(diào)節(jié)參數(shù),分別得到正負樣本比例為10:2、10:4、10:6、10:8、1:1的數(shù)據(jù)集。
XGBoost是Boosting算法中的一種。Boosting算法的思想是將許多弱分類器集成在一起形成一個強分類器。XGBoost是一種提升樹模型[18-19],所以它是將許多樹模型集成在一起,形成一個很強的分類器。而所用到的樹模型則是CART回歸樹模型。XGBoost算法在進行優(yōu)化時,對損失函數(shù)進行了二階泰勒展開,充分利用了一階導數(shù)和二階導數(shù)。算法的步驟如下:
1)模型表示為:
(2)
2)優(yōu)化目標和損失函數(shù):
(3)
對式(3)進行二階泰勒展開,并移除常項,簡化后的目標函數(shù)為:
(4)
式(4)中,gi是一階導數(shù),hi是二階導數(shù)。
3)求最優(yōu)值。
將每個樣本的損失函數(shù)值加起來,每個樣本都會落入一個葉子結點中,將同一個葉子結點樣本進行重組,可以把目標函數(shù)改寫成關于葉子結點分數(shù)的一個一元二次函數(shù),可以直接使用頂點公式求解最優(yōu)W和目標函數(shù)的值:
(5)
(6)
式(5)為最優(yōu)W,式(6)為目標函數(shù)的值。
XGBoost算法在分類方面表現(xiàn)非常優(yōu)異,具有很高的準確度和運行效率[20]。本次實驗將構建預測模型,把XGBoost算法應用到貸款風險預測中,并與其他分類算法進行比較。
本次實驗中貸款風險的預測是一個二分類模型,因此選取準確率(Acc)、精確率(Pre)、召回率(Re)、F1值作為評估指標[21],定義正樣本為正常貸款、負樣本為有風險貸款。準確率、精確率、召回率、F1值分別定義如下:
(7)
(8)
(9)
(10)
式中各值的含義如表3中混淆矩陣所示。
表3 風險預測混淆矩陣
混淆矩陣預測正樣本負樣本實際正樣本tpfn負樣本fptn
本次實驗以7:3的比例將數(shù)據(jù)集分成訓練數(shù)據(jù)集和測試數(shù)據(jù)集,然后將訓練數(shù)據(jù)集通過SMOTE算法進行過采樣,分別得到正負樣本比例為10:2、10:4、10:6、10:8、1:1的數(shù)據(jù)集。然后使用訓練數(shù)據(jù),進行貸款風險預測模型的訓練。并通過交叉檢驗的方法對模型進行優(yōu)化,最后通過測試數(shù)據(jù)集來驗證模型的有效性。
4.2.1 分類算法有效性對比
本實驗用于對比3種算法的預測效果。分別通過常用的邏輯回歸[22]、目前分類效果非常好的隨機森林算法[23]以及本文提到的XGBoost算法對相同的數(shù)據(jù)集進行預測。其中邏輯回歸和隨機森林使用Python sklearn中的相關模塊,XGBoost使用Python中的XGBoost包來實現(xiàn)。各算法中的參數(shù)均設置為調(diào)參后的最優(yōu)值,預測結果如表4所示。
表4 3種算法實驗結果
算法準確率精確率召回率F1值邏輯回歸0.7280.7480.7360.734隨機森林0.9370.9290.9370.931XGBoost0.9500.9510.9410.951
由表4可以看出,通過3種算法對貸款風險進行預測時,邏輯回歸模型即使將參數(shù)調(diào)到最佳之后,準確率也僅有0.728,預測效果非常差,精確率和召回率也很低。隨機森林和XGBoost算法在準確率、精確率、召回率、F1值4個方面效果都較好,其中XGBoost在各指標方面明顯優(yōu)于其他2種算法。而且XGBoost算法是高效并行機器學習算法,與其他方法相比,能克服傳統(tǒng)方法在數(shù)據(jù)規(guī)模較大時效率不夠高的問題,模型訓練速度優(yōu)于其他算法,可以有效利用大規(guī)模數(shù)據(jù)提升預測的精度。
4.2.2 過采樣算法有效性對比
本實驗對比在不同正負樣本比例下,算法預測的效果,來驗證通過SMOTE算法改變少數(shù)類樣本數(shù)量后,能否提高預測模型的有效性。
本次實驗利用本文提到的XGBoost算法對正負樣本比例不同的數(shù)據(jù)集分別進行預測。每組模型中的參數(shù)均設置為調(diào)參后的最優(yōu)值。
圖2 不同樣本比例有效性對比
圖2為不同正負樣本比例時預測結果的有效性指標,從圖中可以看出通過SMOTE算法逐漸增加負樣本的數(shù)目,4個指標都有所提升,其中召回率的提升最為明顯。從混淆矩陣可以看出,隨著負樣本數(shù)量的增加,模型對負樣本的預測更加準確。在正負樣本比例達到10:6時,各指標值達到最高,預測效果最好。之后繼續(xù)增加負樣本的數(shù)量,預測效果會開始降低,原因是通過SMOTE算法人工產(chǎn)生的樣本過多,復制出的少數(shù)類樣本會導致模型出現(xiàn)過度擬合的問題,使模型在測試集上的預測效果變差。
本文提出一種基于SMOTE和XGBoost的貸款風險預測方法,通過特征工程對原始數(shù)據(jù)集進行處理,得到低維度、低噪聲的數(shù)據(jù)。實驗結果表明,相比于傳統(tǒng)分類模型,XGBoost算法在貸款風險預測模型中具有更好的效果;通過SMOTE算法進行過采樣,提高了少數(shù)類樣本的數(shù)量,經(jīng)對比實驗表明,本次實驗采用的過采樣算法可以提高預測模型的預測效果。
在未來的工作中,希望采用組合模型的方法,將XGBoost與其他分類算法結合,進一步提高預測的準確率。另一方面,應用大數(shù)據(jù)技術,實現(xiàn)算法并行化[24],提升算法效率。