陸萬(wàn)榮 許江淳 李玉惠
(昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院 云南 昆明 650500)
分類是機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘中最頻繁、最重要的任務(wù)之一。常見(jiàn)的分類算法,如Logistic回歸(LR)、K最近鄰(KNN)、樸素貝葉斯(NB)、決策樹(DT)、支持向量機(jī)(SVM)和多感知器神經(jīng)網(wǎng)絡(luò)(MLP)等已經(jīng)應(yīng)用于各領(lǐng)域,如信用卡欺詐、遙感圖像分析、石油泄漏檢測(cè)和入侵檢測(cè)等[1-2]。但是之前的研究已經(jīng)發(fā)現(xiàn)這些分類器都存在各自的優(yōu)缺點(diǎn),也證實(shí)了這些缺點(diǎn)使得模型達(dá)到了性能瓶頸。例如,邏輯回歸法LR使用靈活、計(jì)算成本低、執(zhí)行效率高,但是容易過(guò)擬合;SVM有夯實(shí)的理論基礎(chǔ)和低錯(cuò)誤率,比較適合處理高維數(shù)據(jù),但對(duì)參數(shù)調(diào)整和函數(shù)選擇卻比較敏感;DT容易過(guò)擬合,對(duì)屬性取值數(shù)量敏感,并忽略了屬性之間的相關(guān)性;神經(jīng)網(wǎng)絡(luò)算法參數(shù)眾多、解釋性差等。同時(shí),由于數(shù)據(jù)本身存在的問(wèn)題,如類別不平衡、缺失值、異常值和高維非線性等問(wèn)題都限制了傳統(tǒng)分類算法的進(jìn)一步發(fā)展。
為了解決傳統(tǒng)分類算法的缺點(diǎn)以在任務(wù)中獲得更高的分類精度。分類算法的研究正逐步從單一模型向集成學(xué)習(xí)(Ensemble Learning)發(fā)展,集成算法既能吸納基模型的優(yōu)點(diǎn)又能規(guī)避它們的缺點(diǎn)。集成學(xué)習(xí)通過(guò)構(gòu)建并結(jié)合多個(gè)分類器來(lái)完成分類任務(wù)[3],最突出優(yōu)勢(shì)就是“博采眾長(zhǎng)”,通過(guò)將多個(gè)弱分類器按照一定的方式或策略組合起來(lái)形成強(qiáng)分類器,從而在任務(wù)中取得更好的預(yù)測(cè)效果。目前,集成學(xué)習(xí)按照優(yōu)化方向可以分為用于減少方差的Bagging、用于減少偏差的Boosting和用于提升預(yù)測(cè)結(jié)果的Stacking三大類[4-6]。Stacking集成算法不僅能夠組合傳統(tǒng)的LR、SVM和NB等單一分類模型,還能組合Boosting和Bagging生成的集成分類模型,從而實(shí)現(xiàn)模型卓越的泛化能力。因此,Stacking集成算法在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用。文獻(xiàn)[7]提出了基于LR、DT和SVM的Stacking集成模型去建立P2P網(wǎng)貸違約風(fēng)險(xiǎn)識(shí)別模型,證實(shí)了集成模型比單一算法建立的模型風(fēng)控性能更好;文獻(xiàn)[8]提出了一種多模型性融合的Stacking集成算法進(jìn)行負(fù)荷預(yù)測(cè),且在基模型中選擇了深度學(xué)習(xí)算法LSTM,得出基模型學(xué)習(xí)能力越強(qiáng),關(guān)聯(lián)程度越低,則Stacking模型預(yù)測(cè)效果就會(huì)越好;文獻(xiàn)[9]將Stacking用于自然語(yǔ)言處理領(lǐng)域,將上下文信息作為分類器輸入特征向量對(duì)中文組塊識(shí)別,結(jié)果表明準(zhǔn)確率和召回率相比于投票法(Voting)都有所提高。但是,傳統(tǒng)的兩層Stacking集成方法都忽略了基分類器輸出信息的重要性,沒(méi)有充分利用新特征與預(yù)測(cè)結(jié)果之間的相關(guān)性,導(dǎo)致模型預(yù)測(cè)能力和泛化能力提升有限。
針對(duì)以上問(wèn)題,本文選擇改進(jìn)的樸素貝葉斯算法作為Stacking的元分類器。樸素貝葉斯算法能夠充分利用特征屬性與預(yù)測(cè)信息之間的先驗(yàn)信息,但是樸素貝葉斯的屬性獨(dú)立性假設(shè)限制了其使用范圍。因此本文通過(guò)屬性值加權(quán),讓每個(gè)屬性的不同屬性值計(jì)算不同的權(quán)值,使改進(jìn)的貝葉斯算法削弱獨(dú)立性假設(shè)的條件,可以更好地應(yīng)用于離散屬性分類問(wèn)題。
傳統(tǒng)Stacked generalization集成框架于1992年由Wolpert提出[10]。本文為了避免交叉學(xué)習(xí)導(dǎo)致預(yù)測(cè)結(jié)果出現(xiàn)偏差,在傳統(tǒng)Stacking框架的基礎(chǔ)上給每個(gè)訓(xùn)練集內(nèi)部嵌套使用5折交叉驗(yàn)證。新訓(xùn)練集和測(cè)試集的具體構(gòu)建過(guò)程如圖1所示。
圖1 新訓(xùn)練集和測(cè)試集構(gòu)建示意圖
在圖1中,將原始數(shù)據(jù)分割為訓(xùn)練集Training和測(cè)試集Testing后,對(duì)Training做5折劃分后,分別表示為{T1,T2,…,T5}。依次取其中4份為訓(xùn)練集,剩余一份為驗(yàn)證集,且每次訓(xùn)練時(shí)再將訓(xùn)練集5折劃分,表示為{TT1,TT2,TT3,TT4,TT5},這樣每個(gè)基分類器對(duì)每折數(shù)據(jù)進(jìn)行訓(xùn)練都會(huì)在內(nèi)部也交叉訓(xùn)練,以保證每個(gè)分類器性能最優(yōu)。
基分類器分別用{clf1,clf2,…,clfn}表示,n個(gè)基分類器經(jīng)過(guò)5×5嵌套交叉驗(yàn)證后得到n組基分類器模型Mji,表示第j個(gè)基分類器在第i折數(shù)據(jù)上得到的模型,其中,j∈{1,2,…,n},i∈{1,2,…,5}。以clf1為例,5折交叉驗(yàn)證得到5個(gè)模型{M11,M12,…,M15},分別對(duì)相應(yīng)的驗(yàn)證集Ti,i∈{5,4,…,1}做預(yù)測(cè),得到預(yù)測(cè)結(jié)果{R5,R4,R3,R2,R1}。將上述預(yù)測(cè)結(jié)果在豎直方向做stack拼接操作后作為次級(jí)分類器訓(xùn)練集的第一個(gè)特征“新特征1”。重復(fù)該訓(xùn)練過(guò)程則可得到所有訓(xùn)練集的新特征屬性,并與原始訓(xùn)練集Training的類標(biāo)簽Y(按照原始順序)組合為新訓(xùn)練集,記作:Training_new。
對(duì)于n組基分類模型Mji,以clf1算法在5折數(shù)據(jù)上訓(xùn)練得到的5個(gè)基模型為例,每個(gè)模型對(duì)Testing做預(yù)測(cè)得到5組預(yù)測(cè)結(jié)果,對(duì)其求平均得到新測(cè)試集的第一個(gè)屬性特征clf1_test,并與新訓(xùn)練集第一個(gè)特征“新特征1”相對(duì)應(yīng)。對(duì)每一組重復(fù)上述步驟即可得到所有測(cè)試集的新特征屬性,記作:Testing_new。
每個(gè)基分類器對(duì)應(yīng)生成一列新特征且屬性值取值就是分類類別標(biāo)簽,是離散屬性。各基分類器生成的新特征之間、新特征和類別之間都有較強(qiáng)的相關(guān)性,因此如何利用相關(guān)性產(chǎn)生的先驗(yàn)知識(shí)提高模型的預(yù)測(cè)能力是選擇元分類器的重要參考依據(jù)。
樸素貝葉斯算法就是利用了貝葉斯公式能根據(jù)先驗(yàn)概率推導(dǎo)出后驗(yàn)概率這一特性所提出的,將網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)與概率論知識(shí)結(jié)合,有豐富的概率表達(dá)能力。其數(shù)學(xué)表達(dá)式為:
c(x)=arg maxP(c)P(a1,a2,…,am|c)=
(1)
式中:ai表示第i個(gè)屬性Ai的屬性值;P(c)表示先驗(yàn)概率。先驗(yàn)概率P(c)的計(jì)算較為容易,但是P(ai|c)由于無(wú)法獲得可靠的估計(jì),計(jì)算并不容易。P(c)的計(jì)算如式(2)所示,P(ai|c)的計(jì)算如式(3)所示。
(2)
(3)
研究表明,屬性加權(quán)是削弱樸素貝葉斯算法屬性獨(dú)立性假設(shè)的主要改進(jìn)方向之一[11-12]。為每一個(gè)屬性變量給定一個(gè)權(quán)值,然后在加權(quán)之后的數(shù)據(jù)上訓(xùn)練樸素貝葉斯分類器,該方法可以用下式表示:
(4)
式中:m表示屬性的個(gè)數(shù);Wi表示第i個(gè)屬性的權(quán)重。
由于傳統(tǒng)的屬性加權(quán)方法有一個(gè)缺點(diǎn),如文獻(xiàn)[13-14]提出了CFSAWNB、DYAWNB、KLMAWNB等基于過(guò)濾法的屬性加權(quán)方法,文獻(xiàn)[15-16]提出了DEAWNB、WANBIANB等基于包裝法的屬性加權(quán)方法都僅僅考慮屬性權(quán)值,并沒(méi)有考慮屬性值這個(gè)深層次因素。針對(duì)這一問(wèn)題,假設(shè)每個(gè)屬性值的重要性可以分解,并且有高度預(yù)測(cè)性的值與類別有強(qiáng)相關(guān)性,與其他屬性值不應(yīng)該相關(guān)。根據(jù)這些假設(shè),通過(guò)計(jì)算屬性值-類別的相關(guān)性、屬性值-屬性值的冗余性,從而提出一種基于屬性值加權(quán)的貝葉斯分類算法(Attribute Value Weight Naive Bayes,AVWNB)作為本文中Stacking集成框架的元分類器。
m個(gè)屬性表示為A1,A2,…,Am,s個(gè)實(shí)例類別表示為c1,c2,…,cs,權(quán)值和屬性值分別用W和a表示。那么屬性加權(quán)和屬性值加權(quán)的權(quán)值矩陣可由圖2表示。因此屬性值加權(quán)樸素貝葉斯算法可以用下式分類測(cè)試實(shí)例x:
(5)
式中:Wi,aj表示第i個(gè)特征屬性的屬性值為aj的權(quán)值,是一個(gè)正連續(xù)值,其取值范圍是0到1,代表了屬性值aj的重要性。
圖2 屬性加權(quán)與屬性值加權(quán)矩陣
對(duì)于屬性值權(quán)值的計(jì)算,認(rèn)為一個(gè)屬性值權(quán)值的大小取決于其重要性,對(duì)最終決策的結(jié)果影響大,則權(quán)重值就越大。所以一個(gè)具有較大權(quán)值的屬性值ai與所屬類別c有較強(qiáng)的相關(guān)性,記作N(ai,c),而與其他屬性值aj有很小或者沒(méi)有冗余性記作N(ai,aj)。屬性值ai的權(quán)值Wi,ai由式(6)計(jì)算,將每個(gè)屬性值的權(quán)重定義為屬性值-類別相關(guān)性和屬性值-屬性值平均冗余性的差值。
(6)
式中:加入Sigmoid函數(shù)是為了將權(quán)值限定在[0,1]區(qū)間內(nèi),α和β為相關(guān)性系數(shù)和冗余性系數(shù),經(jīng)過(guò)大量實(shí)驗(yàn)驗(yàn)證α取值為0.9~1.0,β為1/m時(shí)分類效果最好。
式(6)中N(ai,c)和N(ai,aj)可根據(jù)信息熵求解方法計(jì)算,信息熵度量廣泛應(yīng)用于計(jì)算每一對(duì)隨機(jī)離散變量之間的相關(guān)性,將式(7)、式(8)代入式(6)即可求得屬性值權(quán)值。同時(shí),充分考慮屬性值權(quán)值對(duì)預(yù)測(cè)結(jié)果的影響,將權(quán)值Wi,ai代入式(3)中替代λ進(jìn)行條件概率平滑處理。
(7)
(8)
算法1AVWNB-Stacking算法
輸入:訓(xùn)練集Training,測(cè)試集Testing。
輸出:測(cè)試實(shí)例類別。
Step1使用基分類器對(duì)預(yù)處理后的原始數(shù)據(jù)進(jìn)行交叉驗(yàn)證訓(xùn)練和預(yù)測(cè),得到新訓(xùn)練集Training_new和測(cè)試集Testing_new。
Step2對(duì)每個(gè)屬性值ai由式(7)計(jì)算與類c的相關(guān)性N(ai,c),對(duì)每一對(duì)ai和aj計(jì)算由式(8)弱依賴性N(ai,aj)。
Step3根據(jù)式(6)計(jì)算每個(gè)屬性值αi的權(quán)值Wi,ai,基于加權(quán)實(shí)例數(shù)據(jù)構(gòu)建樸素貝葉斯分類器。
Step4按式(5)計(jì)算測(cè)試實(shí)例類別并返回。
信用評(píng)估是一個(gè)典型的分類問(wèn)題,也一直是銀行和金融機(jī)構(gòu)評(píng)估是否批準(zhǔn)貸款申請(qǐng)的關(guān)鍵。具有一般分類數(shù)據(jù)所有的特性,可以使用信用評(píng)估相關(guān)數(shù)據(jù)來(lái)驗(yàn)證本文算法的有效性。本文選用的兩個(gè)數(shù)據(jù)集信息如表1所示,來(lái)自公共數(shù)據(jù)集uci和數(shù)據(jù)挖掘競(jìng)賽平臺(tái)Kaggle,下載地址為:https://archive.ics.uci.edu/ml和https://www.kaggle.com。文中使用算法是基于scikit-learn和Python3.6完成的。
表1 數(shù)據(jù)集信息
由于分類任務(wù)數(shù)據(jù)普遍存在類別不平衡現(xiàn)象,且第二類錯(cuò)誤(cost-II)的損失往往比第一類錯(cuò)誤(cost-I)所造成的損失更大,所以僅以準(zhǔn)確率(Accuracy)作為模型的性能評(píng)價(jià)指標(biāo)并不能客觀地評(píng)價(jià)模型的綜合性能。因此,本文評(píng)價(jià)模型的指標(biāo)還將參考F1值、Recall和AUC值。F1值由式(9)計(jì)算,其中precision和recall分別是模型的查準(zhǔn)率和查全率。它是查準(zhǔn)率和查全率的調(diào)和平均數(shù),最大為1,最小為0,取值越大表示模型分類性能越好。
(9)
由于基模型學(xué)習(xí)能力越強(qiáng),差異性越大,Stacking集成模型的效果就會(huì)越好。因此選擇基分類器時(shí),首先選擇集成分類器RF、GBDT和LGBM,其次為了增加差異性,選擇信用評(píng)估中效果較好的單一分類器LR和SVM。同時(shí),為了驗(yàn)證AVMNB-Stacking算法的有效性,第一組實(shí)驗(yàn)與基分類器建立的模型、其他集成分類算法(Adaboost和XGBoost)建立的模型比較,其中RF基于bagging思想,GBDT、LGBM、Adaboost和XGBoost基于boosting思想;另一組實(shí)驗(yàn)與NB、LR、SVM和RF作為元分類器構(gòu)建的NB-Stacking、LR-Stacking、SVM-Stacking、RF-Stacking集成算法和文獻(xiàn)[17]建立的Stacking模型做比較,實(shí)驗(yàn)結(jié)果見(jiàn)表2至表5(注:由于數(shù)據(jù)量過(guò)大,表3中SVM模型并未在②數(shù)據(jù)集上得到數(shù)據(jù))。
表2 基分類算法和其他集成分類算法與AVWNB-Stacking 算法在German數(shù)據(jù)集上比較
表3 基分類算法和其他集成分類算法與AVWNB-Stacking 算法在Givemesomecredit數(shù)據(jù)集上比較
可以看出,在基分類算法與其他集成分類算法的實(shí)驗(yàn)結(jié)果中,RF在①數(shù)據(jù)集上整體表現(xiàn)最好,LGBM在②數(shù)據(jù)集上整體表現(xiàn)最好。在①數(shù)據(jù)集上,Accuracy、Recall和AUC三個(gè)指標(biāo)上AVMNB-Stacking算法都得到了最高的成績(jī),相比與其他算法,這三個(gè)指標(biāo)平均提高了2.0%、2.1%和3.9%,在②數(shù)據(jù)集上,AVMNB-Stacking的四個(gè)指標(biāo)都是最高,且提升幅度較大,相比于其他算法,四個(gè)指標(biāo)平均提高:3.4%、5.9%、6.9%和1.7%。
在表4和表5中,①數(shù)據(jù)集上,AVMNB-Stacking的Accuracy和F1指標(biāo)沒(méi)有明顯提升,但是Recall和AUC指標(biāo)提升幅度較大。在②數(shù)據(jù)集上,文獻(xiàn)[17]在Accuracy指標(biāo)上與本文算法基本持平達(dá)到94.38%,這可能是因?yàn)槲墨I(xiàn)[17]在改進(jìn)時(shí)主要關(guān)注準(zhǔn)確率指標(biāo),但AVMNB-Stacking的AUC指標(biāo)提升比較明顯,相較于其他Stacking算法平均提高了11.2%。總體上,AVMNB-Stacking算法在兩個(gè)數(shù)據(jù)集上都取得了不俗的效果,不僅提高了準(zhǔn)確率Accuracy,而且還提高了Recall、F1和AUC,這對(duì)于識(shí)別“壞客戶”是至關(guān)重要的。并且在②數(shù)據(jù)集上的平均提升幅度要比在①數(shù)據(jù)集上大,主要原因是兩數(shù)據(jù)集數(shù)據(jù)量差異較大,這是影響Stacking算法效果的關(guān)鍵因素之一。此外,通過(guò)實(shí)驗(yàn)結(jié)果還能發(fā)現(xiàn),盡管LR模型和RF模型沒(méi)有在各指標(biāo)上取得最好的分?jǐn)?shù),但是綜合來(lái)看仍然是信用評(píng)估模型的候選項(xiàng);也從側(cè)面佐證了當(dāng)前LR和RF模型頻繁出現(xiàn)在信用評(píng)估領(lǐng)域不無(wú)道理,且LR算法不論是單獨(dú)建模還是作為Stacking的元分類器,都有穩(wěn)定、優(yōu)異的表現(xiàn);而RF算法單獨(dú)建模型表現(xiàn)良好,但作為Stacking的元分類器時(shí)模型性能不升反降,因此RF算法不適合作為元分類器。
表4 不同Stacking算法在German數(shù)據(jù)集上比較
表5 不同Stacking算法在Givemesomecredit數(shù)據(jù)集上比較
K-S曲線是TPR(真陽(yáng)率)曲線與FPR(假陽(yáng)率)曲線的差值曲線,用來(lái)度量陽(yáng)性與陰性分類的區(qū)分程度。K-S曲線的最高點(diǎn)(最大值)定義為KS值,KS值越大,模型的區(qū)分度越好,是信用評(píng)估領(lǐng)域?qū)S械哪P驮u(píng)價(jià)指標(biāo)。信用評(píng)估屬于風(fēng)險(xiǎn)模型的一種,應(yīng)當(dāng)遵循“寧缺毋濫”的原則,更在意將高風(fēng)險(xiǎn)樣例和低風(fēng)險(xiǎn)樣例區(qū)分出來(lái)。因此,相比于二分類問(wèn)題中常見(jiàn)的ROC曲線或者PR曲線,K-S曲線更適合于評(píng)價(jià)信用評(píng)分模型。選用在分類指標(biāo)上表現(xiàn)較好的算法進(jìn)行KS值對(duì)比分析,對(duì)應(yīng)曲線如圖3和圖4所示。
圖3 German數(shù)據(jù)集上K-S曲線
圖4 Givemesomecredit數(shù)據(jù)集上K-S曲線
在①數(shù)據(jù)集上,LR、RF和AVWNB-Stacking算法的KS值基本相同,都約為0.57,文獻(xiàn)[15]較低,KS值只有0.525 3;在②數(shù)據(jù)集上AVWNB-Stacking算法的KS值要比第二高的XGBoost提升約4.9%。對(duì)比兩幅圖發(fā)現(xiàn),整體上各算法在②上KS值比在①上大,本文的AVWNB-Stacking算法比其他Stacking算法對(duì)KS值的提升也比在①數(shù)據(jù)集上明顯,這與前面的結(jié)論一致,Stacking算法對(duì)數(shù)據(jù)量大的任務(wù)提升效果明顯。
本文根據(jù)Stacking算法新特征與預(yù)測(cè)結(jié)果之間的強(qiáng)相關(guān)性,提出一種基于屬性值加權(quán)樸素貝葉斯的Stacking集成分類算法,其不僅能夠憑借NB算法的特性利用屬性的先驗(yàn)知識(shí),還通過(guò)屬性值加權(quán)削弱了NB對(duì)屬性獨(dú)立假設(shè)條件的影響。在信用評(píng)估應(yīng)用場(chǎng)景下,與傳統(tǒng)信用評(píng)估算法和其他Stacking算法相比,AVWNB-Stacking算法確實(shí)能提高模型準(zhǔn)確率、召回率、KS值等各方面的預(yù)測(cè)效果,也發(fā)現(xiàn)AVWNB-Stacking算法對(duì)數(shù)據(jù)量大的任務(wù)提升效果比較明顯。接下來(lái)將進(jìn)一步研究基分類器數(shù)量和實(shí)例類別數(shù)量對(duì)AVWNB-Stacking算法的影響。