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