查志成,梁雪春
(南京工業(yè)大學(xué) 電氣工程與控制科學(xué)學(xué)院,江蘇 南京 211816)
隨著互聯(lián)網(wǎng)金融的飛速發(fā)展,個(gè)人信用數(shù)據(jù)的規(guī)模變得極其龐大。高維數(shù)據(jù)會使計(jì)算復(fù)雜度增加,訓(xùn)練效率低下[1]。特征選擇算法通過選取優(yōu)質(zhì)特征,降低數(shù)據(jù)集特征維度,提高分類效率和準(zhǔn)確率,且有去噪、防止過擬合的作用[2]。同時(shí),降維后的模型具有更低的時(shí)間成本,也更容易被理解和解釋[3]。
最初,學(xué)者們以實(shí)際數(shù)據(jù)為依托,通過算法進(jìn)行智能篩選特征。張永梅等[4]通過mRMR算法來選擇合適的特征,改善了XGBoost(extreme gradient boosting)的預(yù)測準(zhǔn)確率。曾鳴等[5]通過卡方檢驗(yàn)計(jì)算出每一個(gè)特征與類別的相關(guān)性,剔除無關(guān)的特征。近年來若干方法相互組合來篩選特征成為主流,陳諶等[6]提出了RFG-χ2來對特征進(jìn)行選擇,并應(yīng)用在支持向量機(jī)上,得到最佳屬性集且有很好的預(yù)測效果,但是沒有考慮是否存在冗余特征。王名豪等[7]提出了RF-GBDT算法,得到的最優(yōu)特征子集作為XGBoost的輸入,分類效果比特征選擇之前更佳,但是未考慮特征與標(biāo)簽之間的相關(guān)性。劉啟川等[8]使用卡方檢驗(yàn)和信息增益計(jì)算特征貢獻(xiàn)度并設(shè)定閾值篩選特征,但是該算法沒有結(jié)合搜索策略,選出更好的特征。
針對以上問題,本文提出了基于皮爾森相關(guān)系數(shù)和MI-GBDT的結(jié)合搜索策略的最優(yōu)特征子集的選擇方法,并將此算法應(yīng)用于Lending Club平臺公開的2016年~2020年的部分貸款數(shù)據(jù)上,為預(yù)測模型篩選出最優(yōu)特征子集。
皮爾森相關(guān)系數(shù)(Pearson correlation coefficient,PCC)是統(tǒng)計(jì)學(xué)3大相關(guān)系數(shù)之一,用于考察兩變量之間的線性關(guān)聯(lián)程度。對于兩個(gè)隨機(jī)變量X=(x1,x2,…,xn),Y=(y1,y2,…,yn), 樣本的皮爾森相關(guān)系數(shù)如式(1)
(1)
r的絕對值越大則兩變量越相關(guān);r的正負(fù)值表示兩變量是正相關(guān)還是負(fù)相關(guān);當(dāng)r為0時(shí)表示兩變量無相關(guān)性,當(dāng)r為1或-1時(shí)表示兩變量完全相關(guān)。
互信息(mutual information,MI)常被用來對特征間的相關(guān)性進(jìn)行評價(jià),是一種有效的信息度量方法[9],它可以反映兩變量之間的線性與非線性關(guān)系。設(shè)兩個(gè)離散型隨機(jī)變量X=(x1,x2,…,xn),Y=(y1,y2,…,yn), 且p(x,y),p(x),p(y) 分別為 (X,Y) 的聯(lián)合分布函數(shù),X的邊緣分布函數(shù),Y的邊緣分布函數(shù),則X,Y的互信息I(X;Y) 定義為
(2)
從式(2)可以看出,I(X;Y) 的意義是X,Y共享信息的一個(gè)度量,即如果知道其中一個(gè)變量,對另一個(gè)變量不確定度減少的程度。例如,若X,Y相互獨(dú)立,那么知道X并不能對Y提供任何信息,則它們的互信息為0。
梯度提升決策樹(gradient boosting decision tree,GBDT)是由Friedman提出并改進(jìn)的集成學(xué)習(xí)算法[10],由多顆決策樹組成,是梯度提升(Gradient Boosting)和決策樹結(jié)合后的應(yīng)用。GBDT中梯度提升采用了最速下降的近似方法來擬合回歸樹,用損失函數(shù)的負(fù)梯度近似表示Gra-dient Boosting中的殘差,決策樹采用了CART回歸樹。
設(shè)訓(xùn)練集S={(x1,y1),(x2,y2),…,(xN,yN)}, 損失函數(shù)為L, 最大迭代次數(shù)為T, 最終構(gòu)造的強(qiáng)分類器為f(x), 則GBDT的算法流程可描述為:
步驟1 初始化弱分類器
(3)
選取平方誤差函數(shù)作為損失函數(shù)
(4)
步驟2 對迭代輪次t=1,2,…,T:
(1)計(jì)算樣本n=1,2,…,N的負(fù)梯度rtn
(5)
(2)用 {(x1,rt1),(x2,rt2),…,(xN,rtN)} 擬合一個(gè)回歸樹,得到第t棵樹的葉節(jié)點(diǎn)區(qū)域Rtj,j=1,2,…,J(J為葉子節(jié)點(diǎn)個(gè)數(shù));
(3)對j=1,2,…,J, 擬合出使損失函數(shù)達(dá)到最小的葉節(jié)點(diǎn)區(qū)域值,如式(6)
(6)
(4)更新強(qiáng)分類器
(7)
式中:I為示性函數(shù)。
步驟3 得到最終的回歸樹,如式(8)
(8)
利用GBDT進(jìn)行特征選擇屬于特征選擇中嵌入式方法。GBDT是生成回歸樹的過程,每個(gè)特征的重要度時(shí)可以根據(jù)該特征在分裂后,平方損失的減少值來衡量,減少的越多則該特征重要度越大,然后根據(jù)每個(gè)特征的重要度來進(jìn)行特征的篩選。
對某一特征i,它的全局重要度可以通過它在每一棵樹的單棵重要度的平均值來衡量,特征i全局重要度表達(dá)式如式(9)所示
(9)
(10)
在基于特征排序的特征選擇算法中,對于已經(jīng)按照重要度排好序后的特征集,選取前K個(gè)特征可以得到一個(gè)局部最優(yōu)特征子集,然而前K個(gè)特征并不一定都對模型分類有幫助,K個(gè)特征之后的特征也有可能對分類效果有所提升,本文在此基礎(chǔ)上對搜索策略進(jìn)行改進(jìn),對K之前的某些特征進(jìn)行刪除,對K之后的某些特征進(jìn)行添加,篩選出更優(yōu)的特征子集,使分類性能進(jìn)一步提高。改進(jìn)后的搜索策略分為3個(gè)階段:
第一階段:對于按照某種評價(jià)準(zhǔn)則降序排序后的特征,依次加入分類器中,模型的分類準(zhǔn)確率一般會隨著特征數(shù)量的增加呈現(xiàn)出先上升后下降的趨勢,如圖1所示,準(zhǔn)確率達(dá)到最大時(shí)的特征數(shù)量記為K。
圖1 準(zhǔn)確率隨特征數(shù)量變化
算法流程如下:
輸入:排序后的特征集Feature={f1,f2,…,fN}
輸出:K,最大準(zhǔn)確率amax,
前K個(gè)特征集Feature1={f1,f2,…,fK},
剩余特征集Feature2={fK+1,fK+2,…,fN}。
Begin
(1) setF={} //設(shè)一個(gè)空集
(2) fori=1 toNdo
F=F+fi//向集合F中添加特征fi
ai=CAL_Acc(F) //計(jì)算特征子集F對應(yīng)的數(shù)據(jù)在分類器下的準(zhǔn)確率
(3)amax=max(a) //找出最大準(zhǔn)確率
(4)K=argmax(a) //找出最大準(zhǔn)確率對應(yīng)的特征數(shù)量
(5)Feature1={f1,f2,…,fK},F(xiàn)eature2={fK+1,fK+2,…,fN}
End
第二階段:對于前K個(gè)特征組成的特征集合Feature1, 需要?jiǎng)h除某些影響分類效果的特征。從后往前依次刪除Feature1中的特征,每次刪除后代入分類模型計(jì)算對應(yīng)的準(zhǔn)確率,若準(zhǔn)確率未得到提升,則把該特征放回。算法流程如下:
輸入:Feature1={f1,f2,…,fK},amax
輸出:刪除一些特征后的特征集Feature1′
更新后的最大準(zhǔn)確率amax
Begin
(1)Feature1′=Feature1
(2) Fori=Kto 1
Feature1′=Feature1′-fi
//減去集合Feature1′中的特征fi
atemp=CAL_Acc(Feature1′)
//計(jì)算特征子集Feature1′對應(yīng)的數(shù)據(jù)在分類器下的準(zhǔn)確率
if(atemp>amax)then
amax=atemp//若準(zhǔn)確率提升, 則更新amax
else
Feature1′=Feature1′+fi
//若準(zhǔn)確率未提升, 則添回刪除的特征fi
End
第三階段:對于K之后的特征集合Feature2, 需要篩選出某些能進(jìn)一步提升分類效果的特征。從前往后依次將Feature2中的特征添加進(jìn)Feature1′中,每次添加后代入分類模型計(jì)算對應(yīng)的準(zhǔn)確率,若準(zhǔn)確率未得到提升,則把該特征刪除。算法流程如下:
輸入:Feature1′,amax,F(xiàn)eature2
輸出:最終篩選出的特征集Feature3,amax
Begin
(1)Feature3=Feature1′
(2) Fori=K+1 toN
Feature3=Feature3+fi
//將Feature2中的特征fi加入Feature3中
atemp=CAL_Acc(Feature3)
//計(jì)算特征子集Feature3對應(yīng)的數(shù)據(jù)在分類器下的準(zhǔn)確率
if(atemp>amax)then
amax=atemp//若準(zhǔn)確率提升, 則更新amax
else
Feature3=Feature3-fi
//若準(zhǔn)確率未提升, 則刪除添加的特征fi
End
圖2 皮爾森相關(guān)系數(shù)和MI-GBDT 特征選擇模型實(shí)現(xiàn)流程
步驟1 設(shè)訓(xùn)練集S={(xi,yi)|i=1,2,…,N}, 其中xi為特征向量,yi為標(biāo)簽變量,N為總樣本數(shù)。特征集F={fi|i=1,2,…,m}, 其中m為特征維度。計(jì)算每個(gè)特征fi與標(biāo)簽之間的互信息值I,得到互信息值I的集合,I={Ii|i=1,2,…,m} 然后按照互信息值將特征由大到小排列,得到有序特征集合Order1={fi|i=1,2,…,m}。
步驟2 計(jì)算各個(gè)特征之間的皮爾森相關(guān)系數(shù)R={rij|i=1,2,…,m;j=1,2,…,m}, 其中rij表示特征i與特征j之間的皮爾森相關(guān)系數(shù)。然后根據(jù)Order1中的順序,依次遍歷里面的特征,并檢查它的與其余特征的皮爾森相關(guān)系數(shù)是否有大于0.6的,若有,則刪除互信息值小的那個(gè),被刪除的特征不再參與接下來的遍歷過程。有序特征集合Order1刪除冗余特征后的集合記為Order2。 此步驟是利用皮爾森相關(guān)系數(shù)去除冗余特征,算法流程如下:
輸入:各個(gè)特征之間的皮爾森相關(guān)系數(shù)R={rij|i=1,2,…,m;j=1,2,…,m}, 有序特征集合Order1={fi|i=1,2,…,m}
輸出:去除冗余特征后的有序特征集合Order2
Begin
(1)Order2=Order1
(2) fori=1 tom
forj=1 tom(j≠i)
if(rij≥0.6)
Order2=Order2-fj//刪除冗余特征
End
步驟3 由于特征集發(fā)生了變化,所以重新計(jì)算剩余特征與標(biāo)簽特征之間的互信息值,并將其歸一化,將互信息值I統(tǒng)一映射到[0,1]區(qū)間上,得到歸一化后的互信息值Inrm={Inrmi|i=1,2,…,m}, 轉(zhuǎn)換公式如式(11)
(11)
步驟4 計(jì)算每個(gè)特征的綜合重要度ci, 并對特征按照綜合重要度從大到小排列,得到有序特征集合記為Order3, 計(jì)算公式如式(12)
(12)
步驟5 對于排序后的特征,按照2.2節(jié)改進(jìn)的搜索策略結(jié)合分類器進(jìn)行特征選擇,便可以得到最終的特征子集Order4和其分類準(zhǔn)確率amax。
為驗(yàn)證特征選擇算法的有效性,本文選取了Lending Club平臺官網(wǎng)上公開的2016年到2020年的199萬條個(gè)人信用數(shù)據(jù)記錄,數(shù)據(jù)包括了用戶的基本信息、經(jīng)濟(jì)狀況、信用狀況和借款詳情等,共144維,其中1個(gè)為標(biāo)簽特征。
首先要對數(shù)據(jù)進(jìn)行預(yù)處理:
(1)標(biāo)簽特征處理。標(biāo)簽特征名稱為loan_status(貸款狀態(tài)),共有8種取值:Current(進(jìn)行中)、Issued(發(fā)出)、Fully Paid(全部償還)、Charged Off(沖銷,投資人有損失)、Default(違約)、In Grace Period(在寬限期)、Late (16~30 days)(延期16~30天)、Late(31~120 days)(延期31~120天),將Charged Off作為好賬處理,Default、Late(16~30 days)、Late(31~120 days)作為壞賬處理,其余的無法判斷狀態(tài),將對應(yīng)的樣本剔除。
(2)缺失值處理。對于缺失值大于15%的特征,將該特征刪除;對于缺失值小于5%的特征,將對應(yīng)的樣本刪除;對于其余缺失的數(shù)值型特征用平均值填補(bǔ);對于其余缺失的類別型特征用眾數(shù)填補(bǔ)。
(3)刪除貸后變量。像out_prncp(剩余未還本金)、total_pymnt(已還金額)、recoveries(扣除費(fèi)用后的總回收率)、last_credit_pull_d(信用證收回了這筆貸款的月份)等特征都屬于貸后特征,會暴露標(biāo)簽信息,所以要?jiǎng)h除。
(4)數(shù)據(jù)規(guī)范化。利用零-均值規(guī)范化(z-score)對特征進(jìn)行規(guī)范化處理。
(5)字符串轉(zhuǎn)換。對于一些原始類別中的取值為字符串的,采用標(biāo)簽編碼把字符串轉(zhuǎn)換成數(shù)字。
表1 預(yù)處理后的數(shù)據(jù)情況
對處理完的數(shù)據(jù)進(jìn)行特征選擇,首先用式(2)計(jì)算72個(gè)特征(loan_status是標(biāo)簽特征不參與排序)與標(biāo)簽之間的互信息值,并按照從大到小進(jìn)行排序,互信息值越大,說明與標(biāo)簽之間的關(guān)聯(lián)度越大,重要度越高。
然后用式(1)計(jì)算各個(gè)特征(除標(biāo)簽特征)之間的皮爾森相關(guān)系數(shù),得到以下的皮爾森相關(guān)系數(shù)圖譜(取其中10個(gè)特征展示),如圖3所示。
圖3 各特征之間的皮爾森相關(guān)系數(shù)圖譜
從圖3中可以看出有一些特征之間的相關(guān)系數(shù)比較高,屬于冗余特征,應(yīng)予以去除。所以根據(jù)2.3節(jié)中的去冗余特征算法,找出所有強(qiáng)相關(guān)特征(皮爾森相關(guān)系數(shù)絕對值大于0.6的),刪除其中互信息值低的特征。最終刪除了29個(gè)冗余特征,除標(biāo)標(biāo)簽特征外還有43個(gè)特征。
去冗余后的特征皮爾森相關(guān)系數(shù)圖譜(取其中10個(gè)特征展示)如圖4所示。
圖4 去冗余后各特征之間的皮爾森相關(guān)系數(shù)圖譜
從圖4中可以看出,剩余的特征中不再含有強(qiáng)冗余的特征。
由于特征集發(fā)生了改變,現(xiàn)在需要重新計(jì)算各個(gè)特征與標(biāo)簽特征之間的互信息值,并進(jìn)行歸一化處理。接著利用式(9)計(jì)算各個(gè)特征的全局重要度,然后根據(jù)互信息值與全局重要度,用式(12)計(jì)算特征的綜合重要度,并按照從大到小來排序,由于特征較多,取排名前十的特征展現(xiàn)出來,如表2所示。
得到特征的重要度排序之后,按照流程所描述的搜索策略對特征進(jìn)行遍歷。由于選擇特征的時(shí)候需要用到分類器,不同的分類器最終得到的特征子集也是不同的,這取決
表2 特征綜合重要度排序(前十位)
于最終的信用風(fēng)險(xiǎn)評估選取什么樣的模型?,F(xiàn)在分別選取決策樹、支持向量機(jī)、樸素貝葉斯分類器進(jìn)行實(shí)驗(yàn)。
實(shí)驗(yàn)結(jié)果見表3。
其中,當(dāng)分類器選用決策樹時(shí),留下的4個(gè)特征分別為last_fico_range_high(借款人最近一次FICO所屬于的上限范圍)、grade(風(fēng)險(xiǎn)等級)、term(貸款期數(shù))、application_typ(貸款是個(gè)人申請還是共同申請)。
表3 特征選擇實(shí)驗(yàn)結(jié)果
當(dāng)分類器選用支持向量機(jī)時(shí),留下的5個(gè)特征分別為last_fico_range_high、grade、home_ownership(注冊過程中提供的房屋所有權(quán)狀態(tài))、verification_status(總收入來源是否核實(shí))、pub_rec_bankruptcies(公開記錄破產(chǎn)數(shù))。
當(dāng)分類器選用樸素貝葉斯分類器時(shí),留下的5個(gè)特征分別為last_fico_range_high、installment(若貸款產(chǎn)生,貸款人每月支付的款項(xiàng))、term、emp_length(就業(yè)年限)、annual_inc(注冊過程中提供的年收入)。
為了驗(yàn)證本文提出的特征選擇算法對模型分類的有效性,現(xiàn)在對測試集進(jìn)行實(shí)驗(yàn)驗(yàn)證效果。將預(yù)處理后的數(shù)據(jù)集記為Original_data,去冗余特征后的數(shù)據(jù)集記為Selection1_data,經(jīng)過MI-GBDT結(jié)合搜索策略選擇特征后的數(shù)據(jù)集記為Selection2_data,用3種分類器針對不同特征子集下數(shù)據(jù)集實(shí)驗(yàn),測試結(jié)果見表4。
表4 不同子集不同分類器下的模型性能比較
從表4中可以看出,使用PCC和MI-GBDT模型選擇特征后,再用分類模型進(jìn)行訓(xùn)練預(yù)測,分類性能有了顯著的提高。
去冗余特征后的數(shù)據(jù)集Selection1_data對于原數(shù)據(jù)集,在決策樹和樸素貝葉斯分類器下準(zhǔn)確率略微有些下降,分別減少0.16%和0.9%,但是對不平衡數(shù)據(jù)集而言更有參考價(jià)值的AUC值分別上漲了0.001和0.015,訓(xùn)練時(shí)間也快了一倍。在支持向量機(jī)下,去冗余特征后的數(shù)據(jù)集的分類準(zhǔn)確率比原數(shù)據(jù)集提升了15.7%,AUC值提升了0.039,訓(xùn)練時(shí)間更是提升了一倍。說明了基于皮爾森相關(guān)系數(shù)選擇特征的有效性,在去除了冗余特征的同時(shí),改善了分類效果,并且大大的減少了訓(xùn)練時(shí)間。
經(jīng)過MI-GBDT結(jié)合搜索策略選擇特征后的數(shù)據(jù)集Selection2_data對于原數(shù)據(jù)集Original_data和Selection1_data,效果提升則更為明顯。在決策樹下,準(zhǔn)確率分別提高了4.33%和4.49%,AUC值分別提高了0.081和0.08。在樸素貝葉斯分類器下準(zhǔn)確率分別提升了13.29%、14.19%,AUC值分別提高了0.015和0.052。在支持向量機(jī)下準(zhǔn)確率分別提升了20.27%、4.57%,AUC值分別提高了0.046和0.007,時(shí)間更是提高了157.56 s和88.9 s。說明了MI-GBDT在去除完冗余特征的基礎(chǔ)上,又進(jìn)一步大幅提升了分類效果和模型訓(xùn)練時(shí)間。
將上述結(jié)果用3組柱狀圖來表示,可以更清晰展示本文特征選擇算法對分類效果的提升,如圖5和圖6所示。
圖5 不同特征子集在3種分類器下的準(zhǔn)確率
圖6 不同特征子集在3種分類器下的AUC值
本文提出了一種基于皮爾森相關(guān)系數(shù)和MI-GBDT的個(gè)人信用特征選擇方法。針對個(gè)人信用指標(biāo)存在冗余和無關(guān)指標(biāo)的問題,根據(jù)皮爾森相關(guān)系數(shù)去除了冗余特征,利用互信息和GBDT分別從數(shù)據(jù)的信息相關(guān)性和分類能力兩方面對特征的重要度進(jìn)行度量,按照綜合重要度大小對特征進(jìn)行了排序,結(jié)合改進(jìn)的搜索策略選出了最優(yōu)特征子集。將此特征選擇算法應(yīng)用在3種傳統(tǒng)分類器上,實(shí)驗(yàn)結(jié)果表明該算法篩選出的特征可以大幅提升分類器的分類效果,并且大大降低了數(shù)據(jù)的維度,提高模型的訓(xùn)練效率,使個(gè)人信用風(fēng)險(xiǎn)評估變得更加高效可靠。