朱麗華,龍海俠
1.安陽工學(xué)院 計算機(jī)科學(xué)與信息工程學(xué)院,河南 安陽 455000
2.海南師范大學(xué) 信息科學(xué)技術(shù)學(xué)院,???571158
隨著經(jīng)濟(jì)的發(fā)展,信貸風(fēng)險預(yù)測成為研究熱點(diǎn),國內(nèi)外學(xué)者都進(jìn)行了深入研究。海量高維數(shù)據(jù)的積累,提升了機(jī)器學(xué)習(xí)進(jìn)行信貸預(yù)測的準(zhǔn)確性,極端梯度提升(extreme gradient boosting,XGBoost)算法[1]被廣泛應(yīng)用于該領(lǐng)域并取得了較好的效果。常規(guī)的XGBoost 集成模型具有參數(shù)過多,計算復(fù)雜等特點(diǎn),因此優(yōu)化模型參數(shù)具有重要的意義。文獻(xiàn)[2]采用XGBoost和RF進(jìn)行個人信貸風(fēng)險預(yù)測;文獻(xiàn)[3]利用強(qiáng)化學(xué)習(xí)優(yōu)化XGBoost信貸風(fēng)險預(yù)測;文獻(xiàn)[4]利用粒子群優(yōu)化XGBoost 進(jìn)行銀行個人信貸風(fēng)險預(yù)測。
由Xue等[5]于2020年提出的麻雀算法(sparrow search algorithm,SSA)是一種新型群智能優(yōu)化算法,表現(xiàn)出了較高的尋找最優(yōu)解能力。與大多數(shù)智能優(yōu)化算法相比,SSA具有在迭代后期容易陷入局部最優(yōu),仍存在收斂精度低問題。為提高麻雀算法的全局尋優(yōu)能力,科研人員提出了不同的改進(jìn)策略:呂鑫等[6]引入混沌映射初始化種群幫助個體跳出局部最優(yōu);張偉康等[7]引用了黃金正弦進(jìn)行位置更新,既提高了全局尋優(yōu)又增強(qiáng)局部搜索能力;李愛蓮等[8]引入了柯西變異策略,提高了全局搜尋能力,防止早熟現(xiàn)象發(fā)生;毛清華等[9]融合柯西變異和反向?qū)W習(xí),擴(kuò)大搜尋領(lǐng)域,改善全局尋優(yōu);張曉萌等[10]融合多策略來擴(kuò)大尋優(yōu)范圍,避免陷入局部最優(yōu)。近年來,隨著群智能優(yōu)化算法不斷完善,SSA 被廣泛用來優(yōu)化模型。王海瑞等[11]將改進(jìn)的麻雀搜索算法應(yīng)用在分布式電源配置中,大大降低了配電網(wǎng)有功損耗與電壓變差;陳深等[12]將改進(jìn)后的麻雀算法應(yīng)用在天波雷達(dá)定位中,實(shí)現(xiàn)了快速定位,且提高了定位精度。
綜合目前研究現(xiàn)狀,本文對傳統(tǒng)的SSA算法進(jìn)行改進(jìn),提出一種改進(jìn)麻雀算法(sparrow search algorithm based on golden sine search,Cauchy mutation and opposition-based learning,GCOSSA),用來優(yōu)化XGBoost模型進(jìn)行信貸風(fēng)險預(yù)測。GCOSSA 采用黃金正弦搜索策略,有效平衡全局和局部搜索能力;在算法中引入反向?qū)W習(xí)策略和柯西變異進(jìn)行擾動來擴(kuò)大搜索領(lǐng)域改善陷入局部最優(yōu),同時采用貪婪規(guī)則確定最優(yōu)解。采用改進(jìn)后的GCOSSA 算法優(yōu)化XGBoost 參數(shù),提高了模型識別信貸風(fēng)險的準(zhǔn)確率。
XGBoost 是一種基于梯度提升樹實(shí)現(xiàn)的集成學(xué)習(xí)模型,由于其對目標(biāo)函數(shù)進(jìn)行二階泰勒展開,保留了更多有效信息,在分類與回歸問題上具有較高的精度。XGBoost的集成模型如公式(1)所示:
式中,xi是輸入的第i個特征向量;表示預(yù)測值;K表示回歸樹的數(shù)量;R是回歸樹的集合空間;fk表示集合R上的一個函數(shù),用來表示基學(xué)習(xí)器的輸出。
累加迭代過程結(jié)果,得到XGBoost的目標(biāo)函數(shù):
進(jìn)行泰勒展開和求導(dǎo),得到目標(biāo)函數(shù):
式中,γ為懲罰函數(shù)系數(shù);T為k次迭代后樹中葉子節(jié)點(diǎn)個數(shù);λ為正則化懲罰項(xiàng)系數(shù);Gj表示當(dāng)前葉子節(jié)點(diǎn)所有樣本一階導(dǎo)數(shù)和;Hj表示當(dāng)前樣本所有二階導(dǎo)數(shù)和。
XGBoost在分類與回歸問題上具有較高的精度,本文使用XGBoost構(gòu)建模型進(jìn)行信貸風(fēng)險預(yù)測,并使用改進(jìn)的麻雀算法優(yōu)化其參數(shù)。
麻雀搜索算法(SSA)是一種新型的群智能優(yōu)化算法,在每次迭代的過程中,發(fā)現(xiàn)者的位置更新公式如下:
加入者的位置更新公式如下:
式中,XP表示發(fā)現(xiàn)者占據(jù)的最優(yōu)位置;Xworst為當(dāng)前全局最差位置;A表示隨機(jī)分配元素為1或者-1的一個1×d矩陣,滿足式子A+=AT(AAT)-1。
警戒者的位置更新公式如下:
式中,Xbest是當(dāng)前全局最優(yōu)位置;β是步長控制參數(shù)滿足均值為0,方差為1 的正態(tài)分布;K為隨機(jī)數(shù)取值范圍[-1,1];fi為當(dāng)前麻雀的適應(yīng)度值;fg為當(dāng)前全局最佳適應(yīng)度值;fw為當(dāng)前全局最差適應(yīng)度值;ε是最小常數(shù)。
傳統(tǒng)SSA算法中發(fā)現(xiàn)者個體都按照公式(4)進(jìn)行位置更新,沒有充分發(fā)揮個體位置的優(yōu)勢,算法容易早熟收斂陷入局部最優(yōu)。本文采用黃金正弦[13]搜索策略,使得種群中的個體既能夠遠(yuǎn)離其自身位置進(jìn)行探索,增強(qiáng)全局搜索能力;又能在黃金分割系數(shù)確定的位置附近區(qū)域進(jìn)行搜索,增強(qiáng)局部搜索能力。黃金正弦搜索策略位置更新公式:
使用黃金正弦搜索策略改進(jìn)[14]后的發(fā)現(xiàn)者更新公式:
為了讓個體擴(kuò)大搜索領(lǐng)域[15]尋到最優(yōu)解,在算法中引入了反向?qū)W習(xí)策略[16],表達(dá)式如下:
式中,itermax是最大迭代次數(shù),t為迭代次數(shù)。
在最優(yōu)解位置中引入柯西變異[17]進(jìn)行擾動更新,改善陷入局部最優(yōu),提高算法獲取全局最優(yōu)解能力。更新公式變?yōu)椋?/p>
式中,cauchy(0,1)為標(biāo)準(zhǔn)柯西分布函數(shù);⊕表示相乘含義。
為提升算法尋優(yōu)性能,采用動態(tài)選擇策略,將反向?qū)W習(xí)策略和柯西變異擾動策略[18]在一定概率下交替執(zhí)行,當(dāng)隨機(jī)生成數(shù)小于選擇概率p進(jìn)行反向?qū)W習(xí)策略位置更新;否則進(jìn)行柯西變異擾動。p公式為:
式中,w1、w2取值0.5和0.1。
同時引入貪婪規(guī)則,比較新舊位置的適應(yīng)度值,確定最優(yōu)值位置,公式為:
算法流程:
步驟1初始化麻雀種群,設(shè)置種群大小,最大迭代次數(shù),發(fā)現(xiàn)者比例,警戒者比例,警戒值,安全閾值;
步驟2計算適應(yīng)度值并對麻雀位置排序,確定當(dāng)前最優(yōu)、最差適應(yīng)度個體;
步驟3根據(jù)式(8)更新發(fā)現(xiàn)者的位置;
步驟4根據(jù)式(5)更新加入者的位置;
步驟5根據(jù)式(6)更新警戒者的位置;
步驟6根據(jù)式(12)選擇反向?qū)W習(xí)策略或柯西變異擾動對當(dāng)前最優(yōu)解擾動,產(chǎn)生新解;
步驟7根據(jù)式(13)確定是否進(jìn)行最優(yōu)解位置更新;
步驟8判斷是否完成迭代次數(shù),若滿足,則執(zhí)行步驟9,否則跳轉(zhuǎn)繼續(xù)執(zhí)行步驟2;
步驟9輸出最佳位置和最優(yōu)適應(yīng)度值。
XGBoost 模型的參數(shù)影響著模型的效果和計算代價,參數(shù)learning_rate過小影響運(yùn)行速度,過大則影響準(zhǔn)確率;調(diào)控參數(shù)max_depth 即樹的最大深度控制過擬合;優(yōu)化參數(shù)n_estimator 得到最大的迭代次數(shù);優(yōu)化參數(shù)gamma 得到節(jié)點(diǎn)分裂所需的最小損失函數(shù)下降值,實(shí)現(xiàn)合理分裂節(jié)點(diǎn)。本算法中實(shí)現(xiàn)了對上述四個參數(shù)的調(diào)控達(dá)到優(yōu)化模型性能。首先使用GCOSSA 算法初始化XGBoost 參數(shù),傳遞粒子的位置參數(shù),然后計算適應(yīng)度并排序,更新個體位置,記錄全局最優(yōu)。滿足迭代次數(shù)后結(jié)束遍歷,并輸出最優(yōu)解即最優(yōu)麻雀位置,傳給XGBoost模型最優(yōu)參數(shù),最后重新訓(xùn)練XGBoost預(yù)測模型。算法流程如圖1所示。
圖1 算法流程圖Fig.1 Flow chart of algorithm
數(shù)據(jù)集采用UCI網(wǎng)站上信貸數(shù)據(jù)集GCD和ACA,數(shù)據(jù)集描述見表1,所有數(shù)據(jù)集采用70%為訓(xùn)練集,30%為測試集,并對數(shù)據(jù)進(jìn)行隨機(jī)劃分。實(shí)驗(yàn)環(huán)境為Anaconda3下的Jupyter Notebook,編程語言采用Python,操作系統(tǒng)Win10,電腦內(nèi)存8 GB,CPU為AMD A10-7300。
表1 數(shù)據(jù)集基本信息Table 1 Basic information of datasets
采用6個標(biāo)準(zhǔn)測試函數(shù)對SSA及本文改進(jìn)的GCOSSA算法測試,進(jìn)行性能對比,發(fā)現(xiàn)者占比0.2,警戒者占比0.1,安全閾值ST為0.8,種群數(shù)量30,緯度10,迭代次數(shù)300,測試函數(shù)如表2 所示。經(jīng)典SSA 及本文改進(jìn)后的GCOSSA算法性能對比如圖2所示。
表2 基準(zhǔn)測試函數(shù)Table 2 Benchmark test functions
圖2 收斂曲線Fig.2 Convergence curve
對圖2 中6 個測試函數(shù)運(yùn)行結(jié)果圖進(jìn)行分析,橫坐標(biāo)表示更新次數(shù),縱坐標(biāo)表示以10 為底的適應(yīng)度值的對數(shù)。對比圖中曲線可以看出,GCOSSA曲線對數(shù)值更低,因此尋優(yōu)精度較SSA 更高;GCOSSA 曲線出現(xiàn)拐點(diǎn)更早,因此較SSA 求解速度更快。GCOSSA 性能優(yōu)于SSA算法,在于發(fā)現(xiàn)者采用黃金正弦搜索策略同時增強(qiáng)了全局和局部搜索能力,在最優(yōu)解位置根據(jù)選擇概率p進(jìn)行反向?qū)W習(xí)策略位置更新或柯西變異進(jìn)行擾動更新,有利于避免陷入局部最優(yōu),尋找到全局最優(yōu)解。
進(jìn)一步評估SSA和GCOSSA算法性能,對6個測試函數(shù)進(jìn)行求解,算法分別獨(dú)立運(yùn)行50次,性能測試使用平均值mean和標(biāo)準(zhǔn)差std,平均值越小表明算法具有更好的尋優(yōu)精度,標(biāo)準(zhǔn)差越小表明算法尋優(yōu)更穩(wěn)定,具體性能評估值如表3所示。
表3 GCOSSA與SSA算法性能Table 3 GCOSSA and SSA algorithm performance
對表3 進(jìn)行綜合分析,對于單峰函數(shù)1 和函數(shù)2 兩種算法都得到了理論最優(yōu)值,但GCOSSA 算法平均值和標(biāo)準(zhǔn)差較SSA算法提高了多個數(shù)量級,說明具有更高的收斂精度且尋優(yōu)結(jié)果更穩(wěn)定;函數(shù)3雖然沒有得到理論值,但同樣提升了收斂精度;多峰函數(shù)4、函數(shù)5 和函數(shù)6都達(dá)到了理論最優(yōu)值,且平均值和標(biāo)準(zhǔn)差都有明顯數(shù)量級的提高,尋優(yōu)精度更高及穩(wěn)定性更好。無論單峰函數(shù)還是多峰函數(shù),GCOSSA算法較SSA算法在平均值和標(biāo)準(zhǔn)差上均具有數(shù)量級的提高,具有更高的求解精度。從平均值和標(biāo)準(zhǔn)差指標(biāo)總體上看,GCOSSA 算法的值更小些,表明其全局尋優(yōu)要優(yōu)于SSA 算法且穩(wěn)定性更高。
采用UCI 上的GCD 和ACA 數(shù)據(jù)集進(jìn)行風(fēng)險預(yù)測,通過網(wǎng)格搜索GridSearchCV、SSA、文獻(xiàn)[19]改進(jìn)后的麻雀算法ISSA和本文改進(jìn)后的GCOSSA方法對XGBoost參數(shù)進(jìn)行優(yōu)化。在GCD 數(shù)據(jù)集上對應(yīng)最佳參數(shù)如表4所示。
表4 數(shù)據(jù)集上參數(shù)值Table 4 Parameter values on datasets
為驗(yàn)證實(shí)驗(yàn)準(zhǔn)確性,以ROC 曲線和AUC 面積作為評價指標(biāo)。以真正率(sensitivity)為縱坐標(biāo)軸,代表分類器預(yù)測的正類中實(shí)際正實(shí)例占所有正實(shí)例的比例。假正率(false positive rate)為橫坐標(biāo)軸來繪制ROC曲線,代表分類器預(yù)測的正類中實(shí)際負(fù)實(shí)例占所有負(fù)實(shí)例的比例,常表示為1-specificity。ROC 曲線越靠左上角說明算法準(zhǔn)確率越高。AUC 值為ROC 曲線下的面積,值越大說明模型性能越好。
圖3和圖4分別是XGBoost模型融合上述四種不同尋參方法在數(shù)據(jù)集GCD和ACA上的ROC曲線和AUC值。從圖中可以看出采用GCOSSA算法的AUC值均高于其他算法,表明改進(jìn)算法預(yù)測準(zhǔn)確率最高。
圖3 GCD上ROC曲線Fig.3 ROC curve on GCD
圖4 ACA上ROC曲線Fig.4 ROC curve on ACA
在不同數(shù)據(jù)集上采用不同算法優(yōu)化XGBoost參數(shù),算法性能對比如表5,評估指標(biāo)準(zhǔn)確率和時間,采取10次實(shí)驗(yàn)平均值?;贕ridSearchCV 網(wǎng)格搜索的XGBoost用時較短,SSA、ISSA和GCOSSA算法通過改善發(fā)現(xiàn)者更新求全局最優(yōu),因此時間較長,但是由于GCOSSA采用黃金正弦來更新發(fā)現(xiàn)者,同時按照選擇概率進(jìn)行反向?qū)W習(xí)或柯西異或,提高了全局搜索同時避免陷入局部最優(yōu),算法準(zhǔn)確率更高,優(yōu)化算法運(yùn)行時間較SSA 和ISSA長。
表5 算法性能對比Table 5 Comparison of different algorithms
XGBoost 廣泛應(yīng)用于信貸風(fēng)險預(yù)測,其參數(shù)數(shù)量大,且不同參數(shù)值對預(yù)測準(zhǔn)確率影響巨大。智能算法廣泛應(yīng)用于參數(shù)尋優(yōu),針對SSA算法在迭代后期容易陷入局部最優(yōu),本文提出了一種GCOSSA 改進(jìn)算法,選擇UCI中的兩個信貸數(shù)據(jù)集,通過對比GridSearchCV搜索參數(shù)、SSA及ISSA尋優(yōu)參數(shù),驗(yàn)證了GCOSSA尋找參數(shù)最優(yōu),預(yù)測模型具有更高的準(zhǔn)確率。下一步將繼續(xù)改進(jìn)加入者飛行模式提高模型尋優(yōu)性能,研究XGBoost 算法,并將其應(yīng)用到更多領(lǐng)域。