朱翌民,郭茹燕,巨家驥,張 帥,張 維
(上海工程技術(shù)大學(xué)電子電氣工程學(xué)院,上海 201620)
近年來,不平衡數(shù)據(jù)集學(xué)習(xí)成為機(jī)器學(xué)習(xí)領(lǐng)域的研究熱點(diǎn),其是指一個(gè)數(shù)據(jù)集中某類樣本數(shù)量遠(yuǎn)小于其他類樣本數(shù)量,通常將樣本數(shù)量較多的類別稱為多數(shù)類(負(fù)類),較少的稱為少數(shù)類(正類)。由于不平衡數(shù)據(jù)集中樣本類別分布的不平衡性,使用傳統(tǒng)算法進(jìn)行分類操作極易導(dǎo)致少數(shù)類樣本被多數(shù)類樣本“淹沒”,從而使少數(shù)類樣本被劃分為多數(shù)類。在大數(shù)據(jù)時(shí)代背景下,不平衡數(shù)據(jù)分類問題在現(xiàn)實(shí)中普遍存在,如網(wǎng)絡(luò)入侵[1]、電子郵件分類[2]、故障檢測(cè)[3]、質(zhì)量檢測(cè)[4]等。針對(duì)銀行信用卡系統(tǒng)中存在的欺詐問題[5],文獻(xiàn)[6]認(rèn)為這只是眾多交易行為中的冰山一角,正常交易與欺詐交易的數(shù)據(jù)不平衡問題使得欺詐交易很難被檢測(cè)出來,但銀行需要對(duì)欺詐事件作出及時(shí)響應(yīng),以減少財(cái)產(chǎn)損失。在醫(yī)療診斷領(lǐng)域,先進(jìn)的儀器和數(shù)據(jù)采集技術(shù)可產(chǎn)生大量醫(yī)療數(shù)據(jù),但每種疾病在人群中的發(fā)生率差異很大,使得數(shù)據(jù)集極度不平衡,不平衡數(shù)據(jù)集的處理對(duì)于準(zhǔn)確診斷病癥十分重要[7-8]。
針對(duì)不平衡數(shù)據(jù)集分類問題,研究人員提出多種解決方法,主要分為數(shù)據(jù)重采樣、模型改進(jìn)與算法適應(yīng)3 種。數(shù)據(jù)重采樣即按照某種特定規(guī)則濾除數(shù)據(jù)集中的多數(shù)類樣本,或添加少數(shù)類樣本,從而使原始數(shù)據(jù)集達(dá)到均衡狀態(tài)。最基本的重采樣方法包括隨機(jī)欠采樣(RUS)和隨機(jī)過采樣(ROS)兩種,但具有遺漏數(shù)據(jù)集特征和過于強(qiáng)調(diào)同一數(shù)據(jù)的缺點(diǎn),可能影響分類器性能。為此,很多研究者提出新的重采樣方法,如人工合成少數(shù)類過采樣技術(shù)(Synthetic Minority Oversampling Technique,SMOTE),其通過對(duì)少數(shù)類進(jìn)行分析,選取每個(gè)少數(shù)類樣本點(diǎn),在其他少數(shù)類中搜索k 個(gè)最近鄰樣本,并以0~1 之間的采樣倍率進(jìn)行線性插值,從而產(chǎn)生新的合成數(shù)據(jù)。改進(jìn)形式的SMOTE 使用每個(gè)少數(shù)類的歐氏距離調(diào)整類別分布,從而在其余少數(shù)類樣本附近合成新的少數(shù)類樣本[9]。例如,文獻(xiàn)[10]中的Broder?line-SMOTE 算法采用最近鄰原則將少數(shù)類分為safe、dan?ger、noise 3 種類型,僅在danger 類型的少數(shù)類樣本中合成新的少數(shù)類樣本;文獻(xiàn)[11]中的A-SMOTE 算法根據(jù)與原始少數(shù)類樣本的距離調(diào)整新引入的少數(shù)類樣本,向少數(shù)類中引入新樣本,并消除比少數(shù)類更接近多數(shù)類的示例;文獻(xiàn)[12]利用不平衡三角形合成數(shù)據(jù)(Imbalanced Triangle Synthetic Data Method,ITSD)彌補(bǔ)SMOTE 線性插值的不足,在數(shù)據(jù)集特征空間的分類超平面兩端取3 個(gè)數(shù)據(jù)點(diǎn)構(gòu)成不平衡三角形,最大限度地利用了少數(shù)類和多數(shù)類數(shù)據(jù)。
模型改進(jìn)策略則盡可能地保留原始數(shù)據(jù)的分布特征與數(shù)據(jù)集的內(nèi)在結(jié)構(gòu),通過調(diào)整傳統(tǒng)分類算法或優(yōu)化現(xiàn)有分類思想,使其適應(yīng)不平衡數(shù)據(jù)集的內(nèi)在特征,從而提高對(duì)少數(shù)類樣本的識(shí)別能力。例如,文獻(xiàn)[13]通過聚類算法對(duì)數(shù)據(jù)集進(jìn)行均衡處理,然后采用AdaBoost 算法進(jìn)行迭代獲得最終分類器;文獻(xiàn)[14]通過改進(jìn)的貝葉斯分類模型將貝葉斯思想引入不平衡分類任務(wù),用類別的間隔似然函數(shù)代替后驗(yàn)分布中樣本的概率似然函數(shù),優(yōu)化了分類判別依據(jù),提高了不平衡數(shù)據(jù)的分類精度。在深度學(xué)習(xí)領(lǐng)域也有模型改進(jìn)策略的提出,如Lee 等[15]提出利用經(jīng)驗(yàn)?zāi)B(tài)分解能譜數(shù)據(jù),然后通過GAN 生成新樣本,得到了比傳統(tǒng)過采樣技術(shù)更好的分類效果;魏正韜[16]提出對(duì)采樣結(jié)果增加約束條件,削弱采樣對(duì)類別不平衡的影響,在保證算法隨機(jī)性的同時(shí)利用生成的不平衡系數(shù)對(duì)每個(gè)決策樹進(jìn)行加權(quán)處理;劉耀杰等[17]在構(gòu)造隨機(jī)森林算法過程中對(duì)處于劣勢(shì)地位的少數(shù)類賦予較高的投票權(quán)重,從而提高了少數(shù)類樣本的識(shí)別率。
算法適用則是融合多種方法優(yōu)點(diǎn),使其訓(xùn)練出的分類器具有更好的多元性和魯棒性,代表性算法包括SMOTEBoost[18]、XgBoost[19]、AdaBoost[20]等。
上述文獻(xiàn)主要研究了樣本數(shù)量不平衡的問題,對(duì)難易樣本的不平衡問題沒有進(jìn)行深入討論。在模型訓(xùn)練中,如果一個(gè)樣本可以很容易地被正確分類,這個(gè)樣本對(duì)于模型來說即為易分樣本,但模型很難從易分樣本中得到更多信息。而被分錯(cuò)的樣本對(duì)于模型而言為難分樣本,其產(chǎn)生的梯度信息更加豐富,更能指導(dǎo)模型的優(yōu)化方向。在實(shí)際訓(xùn)練過程中,雖然單個(gè)易分樣本損失函數(shù)很小,單個(gè)難分樣本損失函數(shù)較大,但由于易分樣本占整個(gè)數(shù)據(jù)集的比重極高,易分樣本累積起來的損失函數(shù)仍會(huì)主導(dǎo)損失函數(shù),導(dǎo)致模型訓(xùn)練效率非常低,甚至?xí)霈F(xiàn)模型退化問題。因此,本文針對(duì)難易樣本不平衡問題,提出在提升樹模型的基礎(chǔ)上結(jié)合Focal Loss 損失函數(shù)的分類算法,通過Focal Loss 損失函數(shù)調(diào)整易分樣本和難分樣本在損失函數(shù)中的權(quán)重,使模型訓(xùn)練更關(guān)注于難分樣本。在UCI 和KEEL 數(shù)據(jù)庫中對(duì)建立的新算法與Borderline-SMOTE 結(jié)合梯度提升樹的算法進(jìn)行了比較,發(fā)現(xiàn)新算法雖然對(duì)分類精度的提升效果有限,但收斂速度明顯提升。
在目標(biāo)檢測(cè)問題中,每張圖片可能產(chǎn)生上萬個(gè)目標(biāo)候選區(qū),但通常只有少數(shù)候選區(qū)中含有需要識(shí)別的對(duì)象,其余部分均為圖片背景內(nèi)容,這便導(dǎo)致了類別不平衡問題。此外,負(fù)樣本大多是容易分類的,會(huì)使模型優(yōu)化方向背道而馳[21]。使用Focal Loss 損失函數(shù),通過減少易分類樣本的權(quán)重,使模型在訓(xùn)練時(shí)更專注于難分類樣本,以達(dá)到更高的分類準(zhǔn)確率。
對(duì)于一般的二分類問題,單樣本(x,y)的交叉熵?fù)p失函數(shù)為:
式中,y∈{ 0,1} 為類別標(biāo)簽,p∈[ 0,1 ]為預(yù)測(cè)樣本屬于類別1 的概率。
對(duì)于不平衡數(shù)據(jù)集的分類問題,可采用調(diào)整多數(shù)類和少數(shù)類樣本權(quán)重的方式提高模型對(duì)少數(shù)類樣本的分類效果,表達(dá)為:
Focal Loss 損失函數(shù)調(diào)整了易分樣本在損失函數(shù)中的權(quán)重,表達(dá)為:
式中,γ為調(diào)節(jié)系數(shù)。對(duì)比交叉熵?fù)p失函數(shù)可以看到,F(xiàn)ocal Loss 可在訓(xùn)練過程中動(dòng)態(tài)調(diào)整易分樣本與難分樣本在損失函數(shù)中的權(quán)重。
提升樹是一種Boosting 算法,采用的基函數(shù)為決策樹的加法模型,通過前向分布算法獲得新的弱學(xué)習(xí)器,將每一步的回歸樹組合起來,即可得到滿足需求的強(qiáng)學(xué)習(xí)器[22]。
當(dāng)損失函數(shù)取平方差損失和指數(shù)損失時(shí),每一步迭代的優(yōu)化都相對(duì)簡(jiǎn)單。但對(duì)于一般損失函數(shù)而言,每一步的優(yōu)化通常較難計(jì)算。針對(duì)該問題,F(xiàn)reidman[23]提出梯度提升算法,通過損失函數(shù)的負(fù)梯度在上一步迭代得到的學(xué)習(xí)器下的值擬合回歸樹。
一般情況下,在分類模型任務(wù)中,模型性能的優(yōu)劣與數(shù)據(jù)集中各類別樣本的分布特性有很大關(guān)系。在不平衡數(shù)據(jù)集中,可以根據(jù)正負(fù)、難易兩種標(biāo)準(zhǔn)將樣本分為4 種類型,分別為易分正樣本、難分正樣本、易分負(fù)樣本、難分負(fù)樣本。采用梯度方法訓(xùn)練模型時(shí),雖然每個(gè)易分樣本產(chǎn)生的梯度均較小,但由于數(shù)量較多,最終還是會(huì)主導(dǎo)梯度更新方向。在提升樹中引入Focal Loss 損失函數(shù),降低易分樣本在訓(xùn)練中的權(quán)重,使其更關(guān)注能有效指導(dǎo)模型優(yōu)化方向的難分樣本,從而提高算法的收斂速度。此外,由于難分負(fù)樣本占所有負(fù)樣本的比例較小,可降低樣本的不平衡程度,一定程度上提高不平衡數(shù)據(jù)集的分類準(zhǔn)確率。
為得到提升樹中葉子結(jié)點(diǎn)每次迭代更新的權(quán)值,假設(shè)輸入為x,二分類問題的標(biāo)簽為y∈{ 0,1},提升樹分類模型為,第m 輪迭代時(shí)學(xué)習(xí)到的提升樹基函數(shù)為,則學(xué)習(xí) 到的提升樹為:
通過牛頓法可得到式(5)的近似解,即葉結(jié)點(diǎn)的權(quán)值為:
根據(jù)上述計(jì)算,得到本文算法的具體步驟如下:
b)更新每個(gè)葉結(jié)點(diǎn)的輸出值cjm;
(3)最終的提升樹為fM(x)。
為驗(yàn)證該模型的有效性,選擇來自不同領(lǐng)域的3 組數(shù)據(jù)集,與Borderline-SMOTE 以及隨機(jī)森林算法進(jìn)行比較。實(shí)驗(yàn)硬件環(huán)境:Win10 系統(tǒng)、16GB 內(nèi)存以及Core i5 處理器;軟件環(huán)境:Python3.7。
使用來自UCI 與KEEL 數(shù)據(jù)庫的3 組數(shù)據(jù),數(shù)據(jù)集具體信息如表1 所示。其中Number 表示數(shù)據(jù)集的樣本總數(shù),At?tributes 表示樣本特征數(shù)量,Minor/Major 表示正類/負(fù)類,IR表示數(shù)據(jù)集的不平衡度。
Table 1 Dataset information表1 數(shù)據(jù)集信息
在不平衡數(shù)據(jù)分類中,單純使用準(zhǔn)確度評(píng)估算法的優(yōu)劣已不再適用。當(dāng)數(shù)據(jù)集的不平衡率較高時(shí),即使將正類樣本全部預(yù)測(cè)為負(fù)類,分類器仍然可以獲得很高的預(yù)測(cè)準(zhǔn)確度。因此,本文采用查全率(recall)、查準(zhǔn)率(precision)、F1-score 和G-mean 4 個(gè)性能度量指標(biāo)對(duì)模型進(jìn)行評(píng)估。以上指標(biāo)可根據(jù)表2 所示的混淆矩陣得到,具體表達(dá)如式(7)—式(10)所示。
Table 2 Confusion matrix表2 混淆矩陣
查全率(Recall)計(jì)算公式為:
查準(zhǔn)率(Precision)計(jì)算公式為:
F1-score 計(jì)算公式為:
G-mean 計(jì)算公式為:
采用十折交叉驗(yàn)證方法,將數(shù)據(jù)隨機(jī)分為10 等份,取9份作為訓(xùn)練集,1 份作為測(cè)試集,依次進(jìn)行實(shí)驗(yàn),10 次實(shí)驗(yàn)評(píng)價(jià)指標(biāo)的平均值作為1 次十折交叉驗(yàn)證的最終結(jié)果。
通過調(diào)整Focal Loss 損失函數(shù)中的γ值,可以動(dòng)態(tài)調(diào)節(jié)易分樣本與難分樣本在損失函數(shù)中的權(quán)重,從而使模型更專注于難分樣本。圖1、圖2 分別為在數(shù)據(jù)集HTRU2、Yeast3 上,不同γ值下訓(xùn)練損失隨迭代次數(shù)的變化情況??梢钥吹?,隨著γ值的上升,模型收斂速度明顯加快。由圖1 可知,當(dāng)γ=2 時(shí),數(shù)據(jù)集HTRU2 在第13 次迭代就接近收斂;當(dāng)γ=1 時(shí),需要約16 次迭代;當(dāng)γ=0 時(shí),則需要20 次以上迭代才逐漸收斂。由圖2 可知,當(dāng)γ=2 時(shí),數(shù)據(jù)集Yeast3 只需要14 次迭代便接近收斂;當(dāng)γ=1 時(shí),需要20 次迭代;當(dāng)γ=0 時(shí),則需要20 次以上迭代才逐漸收斂。
Fig.1 Change of training loss with the number of iterations under different γ(HTRU2)圖1 不同γ 值下訓(xùn)練損失隨迭代次數(shù)的變化(HTRU2)
Fig.2 Change of training loss with the number of iterations under different γ(Yeast3)圖2 不同γ 值下訓(xùn)練損失隨迭代次數(shù)的變化(Yeast3)
在數(shù)據(jù)集HTRU2 和Yeast3 上改變Focal Loss 的調(diào)節(jié)參數(shù)γ,采用Recall、Precision、F1-score 和G-mean 4 個(gè)指標(biāo)評(píng)價(jià)不同γ 值下的分類器性能,實(shí)驗(yàn)結(jié)果如表3 所示。Test 數(shù)據(jù)集的數(shù)據(jù)量過少,很容易產(chǎn)生過擬合,因此并沒有加入對(duì)照。采用Borderline-SMOTE 結(jié)合隨機(jī)森林的分類算法作為對(duì)比,首先對(duì)不平衡數(shù)據(jù)集進(jìn)行過采樣,獲得平衡數(shù)據(jù)集后再使用隨機(jī)森林進(jìn)行分類,實(shí)驗(yàn)結(jié)果如表4 所示。本文算法在Recall、Precision 和F1-score3 個(gè)指標(biāo)上表現(xiàn)較佳,但與對(duì)照算法相比優(yōu)勢(shì)并不顯著。在HTRU2 數(shù)據(jù)集上,本文算法F1-score 最佳值為0.970,而Boderline-SMOTE結(jié)合隨機(jī)森林算法的F1-score 為0.972,相差甚微。因此,單純改變模型中參數(shù)γ的值對(duì)分類效果的提升有限。
Table 3 Classification results of established algorithm under different γ表3 不同調(diào)節(jié)參數(shù)γ 下本文算法分類結(jié)果
Table 4 Classification results of Boderline-SMOTE with gradient boosting tree表4 Boderline-SMOTE 結(jié)合梯度提升樹分類結(jié)果
針對(duì)分類任務(wù)中的類別不平衡問題,本文提出結(jié)合Fo?cal Loss 損失函數(shù)的梯度提升樹算法,在數(shù)據(jù)集上進(jìn)行驗(yàn)證實(shí)驗(yàn)后發(fā)現(xiàn)調(diào)整權(quán)重γ值可大幅提高算法的收斂速度,但對(duì)不平衡數(shù)據(jù)集分類效果的提升較為有限。后續(xù)可嘗試在損失函數(shù)中加入平衡因子以提升算法的性能。此外,本文主要討論了二分類問題,今后可針對(duì)多分類問題進(jìn)行探討。