張俊杰, 曹 麗
(合肥工業(yè)大學(xué) 數(shù)學(xué)學(xué)院,安徽 合肥 230601)
類別不平衡問題是指數(shù)據(jù)集的各個類別的樣本數(shù)差異明顯,即某些類別的樣本數(shù)遠(yuǎn)小于其他類別的樣本數(shù)。類別不平衡問題普遍存在于各個領(lǐng)域,如疾病檢查、軟件測試、病毒入侵、信用欺詐等。傳統(tǒng)的分類模型偏向?qū)Υ箢悇e樣本的學(xué)習(xí)而忽略小類別樣本的學(xué)習(xí);但是在疾病診斷等領(lǐng)域,小類別樣本通常才是關(guān)注的重點(diǎn),因此類別不平衡數(shù)據(jù)問題成為數(shù)據(jù)挖掘領(lǐng)域熱點(diǎn)問題之一。針對該問題,目前常用的解決方法主要集中在數(shù)據(jù)采樣、模型選擇和性能評估等方面。
在數(shù)據(jù)采樣方面,上采樣和下采樣是處理類別不平衡問題的常用方法。然而上采樣容易增加噪聲樣本的比例,導(dǎo)致模型出現(xiàn)過擬合;下采樣容易丟失重要樣本,導(dǎo)致模型出現(xiàn)欠擬合。因此文獻(xiàn)[1]對上采樣方法進(jìn)行了改進(jìn),提出SMOTE方法,但是該方法容易產(chǎn)生噪聲樣本,影響模型的分類效果。
在模型選擇方面,解決類別不平衡問題常采用集成模型,如SMOTEBoost模型[2]。該模型在每次迭代過程中通過SMOTE方法合成新小類別樣本,改變樣本類別分布,以增加再迭代時模型對小類別樣本的學(xué)習(xí)次數(shù)。類似的集成模型還有RUSBoost模型[3]和CUSBoost模型[4]。但這些串行模型的訓(xùn)練樣本選擇與前一輪模型的學(xué)習(xí)效果直接相關(guān),并非獨(dú)立采樣,一旦當(dāng)前模型的誤差小于閾值,則當(dāng)前模型學(xué)習(xí)停止,容易導(dǎo)致早停,影響集成模型效果。還有學(xué)者從代價敏感的角度解決類別不平衡問題,解決方法大致可分為類依賴代價矩陣法和樣本依賴代價矩陣法。類依賴代價矩陣法主要有代價敏感神經(jīng)網(wǎng)絡(luò)[5]、Hard-Ensemble模型[5]和Soft-Ensemble模型[5]。樣本依賴代價矩陣法主要有樣本依賴代價敏感學(xué)習(xí)決策樹算法[6]和樣本依賴代價敏感學(xué)習(xí)Adaboost算法[7]。
在性能評估方面,當(dāng)大類別樣本量遠(yuǎn)大于小類別樣本量時,例如當(dāng)類別比例為1∶99時,若將全部樣本判定為大類別樣本,則準(zhǔn)確率達(dá)到99%,但是此時的準(zhǔn)確率已無參考意義和評估價值。因此,在類別不平衡問題中通常使用如下的性能評估標(biāo)準(zhǔn):精準(zhǔn)率P、召回率R、P-R曲線、F1值以及ROC曲線等。文獻(xiàn)[8]將P-R曲線和ROC曲線做對比,在數(shù)據(jù)類別不平衡的條件下,ROC曲線的性能評估優(yōu)于P-R曲線,但ROC曲線不能很好反映誤分類代價情況。
針對上述問題,本文提出代價敏感神經(jīng)網(wǎng)絡(luò)集成(cost-sensitive neural network ensemble,CSNN-Ensemble)模型。首先通過多次隨機(jī)下采樣方式,每個基學(xué)習(xí)器學(xué)習(xí)不同的訓(xùn)練樣本,防止樣本丟失;其次考慮誤分類代價,用代價敏感神經(jīng)網(wǎng)絡(luò)作為基學(xué)習(xí)器,實(shí)現(xiàn)更佳的分類效果;然后結(jié)合并行集成學(xué)習(xí)的思想,降低基學(xué)習(xí)器之間的關(guān)聯(lián)性;最后通過UCI上9組二分類數(shù)據(jù)集進(jìn)行幾種集成模型的對比實(shí)驗(yàn),結(jié)果表明該模型具有一定的有效性和實(shí)用性。
代價敏感學(xué)習(xí)是根據(jù)不同誤分類產(chǎn)生的不同代價,尋找使得模型的期望損失代價最小的機(jī)器學(xué)習(xí)方法;在代價敏感學(xué)習(xí)過程中,代價矩陣至關(guān)重要,決定著模型的分類結(jié)果。假設(shè)數(shù)據(jù)集共有n種類別,代價矩陣是由誤分類代價所構(gòu)成的矩陣,用(Ci,j)n×n表示代價矩陣,其中Ci,j表示第i類誤分為第j類的代價。特別地,規(guī)定Ci,i=0。基于代價敏感原理,本文沿用文獻(xiàn)[9]給定的代價矩陣的3種類型:
類型1存在唯一的c,當(dāng)j=c時,有Ci,j>h,并且對所有j≠i,Ci,j≠c=h;對j≠c和Cc=h,定義Ci=Ci,c。
類型2對所有j≠i,有Ci,j=hi≥1.0;定義Ci=hi。
3種類型中的Ci表示第i類代價。
(1)
其中,η為歸一化參數(shù)。
集成學(xué)習(xí)的基本思想是將多個獨(dú)立的、單一的基學(xué)習(xí)器按照某種結(jié)合策略有機(jī)地結(jié)合起來,從而獲得更準(zhǔn)確的預(yù)測模型。目前主要的集成學(xué)習(xí)范式有提升(Boosting)和裝袋(Bagging)2種。Boosting集成范式采用串行模式,每輪訓(xùn)練集的選擇與前一輪基學(xué)習(xí)器的學(xué)習(xí)效果相關(guān),且基學(xué)習(xí)器以加權(quán)組合的方式構(gòu)造集成模型。Bagging集成范式采用并行模式,各個基學(xué)習(xí)器之間獨(dú)立存在,模型相對簡單,能提高穩(wěn)定性差的基學(xué)習(xí)器的預(yù)測精度。
本文采用Bagging集成范式構(gòu)造代價敏感神經(jīng)網(wǎng)絡(luò)集成模型。首先對原始數(shù)據(jù)集中大類別樣本N進(jìn)行多次有放回的隨機(jī)下采樣,分別與小類別樣本M合并,構(gòu)造m個訓(xùn)練數(shù)據(jù)集;其次對每個訓(xùn)練數(shù)據(jù)集分別訓(xùn)練BP神經(jīng)網(wǎng)絡(luò),引入代價矩陣(Ci,j)n×n后,構(gòu)造m個代價敏感神經(jīng)網(wǎng)絡(luò);最后對所構(gòu)造出的m個代價敏感神經(jīng)網(wǎng)絡(luò)進(jìn)行并行組合。CSNN-Ensemble模型的算法流程如圖1所示,算法步驟如下:
圖1 CSNN-Ensemble模型的算法流程
1) 輸入小類別樣本M、大類別樣本N、基學(xué)習(xí)器數(shù)量m以及代價矩陣(Ci,j)n×n;
2) 使用有放回的獨(dú)立隨機(jī)下采樣方法,從N中采樣得到m個樣本子集Nk,使Nk的樣本量與M的樣本量相等,且Nk?N,k=1,2,…,m;
3) 將m個下采樣子集Nk分別與M合并,訓(xùn)練出m個神經(jīng)網(wǎng)絡(luò)Hk;
4) 對每個Hk,分別引入代價矩陣,將其概率值與之相對應(yīng)的誤分為其他類的代價相乘并求和,歸一化計算后得到代價敏感神經(jīng)網(wǎng)絡(luò)Hk′;
CSNN-Ensemble模型以代價敏感神經(jīng)網(wǎng)絡(luò)作為基學(xué)習(xí)器,模型相對簡單、復(fù)雜度低,且采用并行組合策略,能夠降低模型的方差,增加模型魯棒性。
對于分類問題,分類準(zhǔn)確率常常作為最重要的評價指標(biāo),但是在類別不平衡數(shù)據(jù)中,因?yàn)檫@種評價方法通常對大類別樣本偏袒嚴(yán)重,而忽略對小類別樣本的識別率,所以分類準(zhǔn)確率對于類別不平衡數(shù)據(jù)往往不太合理。因此,本節(jié)將混淆矩陣介紹F1值、ROC曲線和代價曲線作為模型性能度量方法?;煜仃囆问揭姳?所列。
表1 混淆矩陣
精準(zhǔn)率P、召回率R和假正例率RFP定義分別如下:
(2)
(3)
(4)
其中,召回率也稱為真正例率RTP。
F1值計算公式如下:
F1=2PR/(P+R)
(5)
ROC曲線是以假正例率RFP為橫坐標(biāo)、真正例率RTP為縱坐標(biāo)繪制而成。定義ROC曲線下方面積為AUC值,模型分類性能的優(yōu)劣與AUC值的大小成正比。代價曲線是一種考慮了誤分類代價的分類性能度量方法;它是以正例概率代價PC(+)為橫軸,以歸一化代價NEC為縱軸繪制而成。PC(+)和NEC定義如下:
(6)
(7)
其中:P(+)、P(-)分別為樣本中正、負(fù)例的概率;C(-|+)為正例誤判為負(fù)例的代價;C(+|-)為負(fù)例誤判為正例的代價;假反例率RFN=1-RTP。根據(jù)式(6)、式(7),將歸一化代價化簡為:
NEC=(1-RFP-RTP)PC(+)+RFP
(8)
由式(8)可知,歸一化代價和正例概率代價是一種線性關(guān)系,且ROC曲線上的每個點(diǎn)(RFP,RTP)對應(yīng)一條歸一化代價直線。連接歸一化代價直線的最小值點(diǎn)所形成的曲線即為代價曲線。定義代價曲線下方的面積為期望總體代價,模型分類性能的優(yōu)劣與期望總體代價的大小成反比。
本文選出UCI數(shù)據(jù)集中9組二分類數(shù)據(jù)作測試驗(yàn)證,數(shù)據(jù)信息見表2所列。
表2 數(shù)據(jù)集信息
有個別數(shù)據(jù)集中含有多種類別樣本,選擇其中一個樣本量少的類為小類別樣本,其余類別合并成大類別樣本。
在二分類問題中,3種代價矩陣類型沒有區(qū)別,且都可以用第3種類型進(jìn)行表示[5],因此本文使用第3種類型代價矩陣訓(xùn)練CSNN-Ensemble模型,對數(shù)據(jù)標(biāo)準(zhǔn)化處理后作為輸入數(shù)據(jù)進(jìn)行模型驗(yàn)證。
在9組數(shù)據(jù)集中,分別將GBDT模型、Random-Forest模型、Easy-Ensemble模型、Bagging模型、Adaboost模型與CSNN-Ensemble模型做對比,并采用10折交叉驗(yàn)證方式驗(yàn)證模型的有效性。
其中:Easy-Ensemble模型[10]的基學(xué)習(xí)器為Adaboost模型;Bagging模型的基學(xué)習(xí)器為BP神經(jīng)網(wǎng)絡(luò)模型;Adaboost模型的基學(xué)習(xí)器為決策樹模型。通過對比6種模型的F1值、ROC曲線和代價曲線完成性能評估。6種模型的ROC曲線和代價曲線如圖2、圖3所示;F1值、AUC值和期望總體代價的10折交叉驗(yàn)證結(jié)果見表3~表5所列。
表3 6種模型在9組數(shù)據(jù)集中的F1值
圖3 6種模型在9組數(shù)據(jù)集中的代價曲線
實(shí)證結(jié)果表明,在處理類別不平衡數(shù)據(jù)問題時,Adaboost模型在9組數(shù)據(jù)集中表現(xiàn)效果較差,而與之相比的其他5種模型都或多或少地表現(xiàn)出較強(qiáng)的分類性能。
F1值作為精準(zhǔn)率和召回率的調(diào)和平均數(shù),F1值越大,模型性能越優(yōu)。從表3可以看出,在F1值的平均值大于0.8的數(shù)據(jù)集中,GBDT模型、Random-Forest模型、CSNN-Ensemble模型表現(xiàn)出相對較好的性能;而在F1值的平均值小于0.8的數(shù)據(jù)集中,Easy-Ensemble模型和CSNN-Ensemble模型的性能較優(yōu);這2種模型都是使用下采樣方法進(jìn)行數(shù)據(jù)處理,因此下采樣處理類別不平衡問題是合理的。
從表4和表5可以看出,只有Balance數(shù)據(jù)集中6種集成模型結(jié)果相差較大,這可能是樣本特征屬性和樣本量較少的原因。在9組數(shù)據(jù)集中,僅CSNN-Ensemble模型的AUC值和期望總體代價優(yōu)于平均值。究其原因不難發(fā)現(xiàn),該模型在基學(xué)習(xí)器中引入代價因子后,改變了分類閾值,使模型對樣本的分類結(jié)果偏向于小類別樣本。
表4 6種模型在9組數(shù)據(jù)集中的AUC值
表5 6種模型在9組數(shù)據(jù)集中的期望總體代價
為了進(jìn)一步從整體上評價模型優(yōu)劣,對F1值、AUC值、期望總體代價3種性能結(jié)果采用Friedman檢驗(yàn),檢驗(yàn)結(jié)果見表6所列。
從表6可以看出,CSNN-Ensemble模型均獲得了最低的平均序值。根據(jù)3種平均序值計算的Friedman檢驗(yàn)值τF分別為2.532、4.857、6.098,均高于在顯著性水平α=0.05下的臨界值2.449,于是拒絕“所有模型性能相同”的假設(shè);因此CSNN-Ensemble模型優(yōu)于其他模型。
在類別不平衡數(shù)據(jù)問題研究中,針對下采樣方法導(dǎo)致的樣本丟失和分類過程中存在誤分類代價不等問題,本文結(jié)合代價敏感神經(jīng)網(wǎng)絡(luò)與并行集成思想,構(gòu)造了CSNN-Ensemble模型。首先通過多次隨機(jī)下采樣,每個基學(xué)習(xí)器能學(xué)習(xí)不同的訓(xùn)練樣本,防止樣本丟失;然后在此基礎(chǔ)上,構(gòu)造以代價敏感神經(jīng)網(wǎng)絡(luò)為基學(xué)習(xí)器的并行集成模型,降低數(shù)據(jù)擾動對基學(xué)習(xí)器的影響。該模型以投票的方式進(jìn)行決策,保證了所有基學(xué)習(xí)器的權(quán)重相同。實(shí)驗(yàn)結(jié)果表明CSNN-Ensemble模型有效提高了分類性能。然而,如何對基學(xué)習(xí)器采用加權(quán)組合的方式構(gòu)造集成模型將是下一步的研究方向。