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