楊 毅,梅 穎
(麗水學院工學院,浙江麗水323000)
不平衡數據集廣泛地存在于實際生活中,如醫療診斷、垃圾郵件過濾、衛星圖像中的石油泄漏等。不平衡數據集是相對于平衡數據集而言的,指的是數據集的類別分布相差很大。
通常,樣本數目多的類別稱為多數類,樣本數目少的類別稱為少數類。分類器往往會因為數據的不平衡性而無法滿足分類的要求,因此在構建分類模型前,需要對不平衡數據集進行預處理[1-2]。
目前,處理不平衡數據集的分類問題主要分兩類。一類是從訓練集入手,改變訓練樣本的分布,改善數據集的不平衡性。另一類是從學習算法入手,標準的分類算法在處理不平衡問題時存在缺陷,分類結果會錯誤地傾向于多數類樣本,因此需要適當調整算法使之適用于不平衡數據集的分類問題。改善訓練集不平衡性的方法主要有隨機采樣和訓練集分類。學習算法層面的方法主要有分類器集成、代價敏感學習和特征選擇等。
隨機采樣的方法是通過增加少數類樣本和減少多數類樣本來改善不平衡數據集的不平衡性,從而提高分類器對少數類樣本的識別率。Chawla等人提出的SMOTE算法[3]是一種簡單有效的過采樣方法,該方法在少數類樣本中隨機選擇k近鄰,通過與k近鄰插值增加少數類樣本的數量,改善了不平衡數據集的分布。文[4]提出的B-SMOTE(Borderline-SMOT)算法是建立在SMOTE算法的基礎上的,它把少數類樣本分成噪聲、邊界樣本及安全樣本,對其中的邊界樣本進行近鄰插值,從而進一步改善數據集的不平衡分布。文[5]在B-SMOTE算法的基礎上提出了RB-SMOTE(Refined Borderline-SMOTE)算法,該方法根據邊界樣本的具體分布設置了不同的采樣倍率,再通過內插的方式合成新生的少數類樣本,進一步優化了不平衡數據集的分布。
集成學習算法[6-7]是構建并結合多個分類器來完成學習任務的。一般先產生一組基分類器,再用某些方法把基分類器組合成集成分類器。集成學習主要有兩個問題需要解決,一個是如何得到一組基分類器,另一個是如何選擇組合方法把基分類器合成一個集成的強分類器。組合方法主要有平均法、投票法和學習法等。集成分類器通常可以得到比單一分類器具有更加顯著的泛化性。經典的集成學習法有 bagging[8]、boosting[9]、隨機森林[10]、stacking[11]等等。
本文在RB-SMOTE算法的基礎上結合集成學習的投票法,提出了面向不平衡數據集的一種基于SMOTE的集成學習算法。該算法合成不平衡率不一的多個新訓練樣本集,利用這些新數據集訓練相應的支持向量機作為基分類器,剔除具有錯誤分類傾向的基分類器,通過投票的方式把剩余的基分類器組合成集成分類器。
設原始訓練樣本為T,分為少數類樣本P和多數類樣本 N。其中 pi∈P,i=1,2,…,pnum 表示少數類樣本,ni∈N,i=1,2,…,nnum 表示多數類樣本。
SMOTE算法首先計算少數類樣本中的每一個樣本pi與少數類樣本P的歐式距離,得到k近鄰;再根據采樣倍率,在k個近鄰中選擇適合的個數s;然后把該樣本pi與s個近鄰進行線性插值,合成新增加的少數類樣本;最后新增加的少數類樣本與原始數據合并,構成新的訓練樣本。
在SMOTE算法的基礎上,B-SMOTE算法把少數類樣本劃分為安全樣本、邊界樣本和噪聲。先計算少數類樣本中的每一個樣本pi與訓練樣本T的歐式距離,得到k近鄰;再根據采樣倍率,在k個近鄰中選擇適合的個數s,少數類中的邊界樣本插值合成新的少數類樣本。
RB-SMOTE算法在B-SMOTE的基礎上對少數類中的邊界樣本加以區分,選擇合適的采樣倍率,精細化分配新生成的樣本數量,進一步改善不平衡數據的不平衡性。
在集成學習的分類任務中,通過訓練m個基分類器C1,C2,…,Cm,選擇合適的組合方法,把多個基分類器合并成一個集成的強分類器。如圖1,輸入測試樣本到m個基分類器中,得到相應的m個預測結果q1,q2,…,qm,選擇投票方式獲得分類結果。

圖1 集成學習流程圖
反映不平衡數據集各類之間不平衡程度的一個重要指標是不平衡率,二分類數據集的不平衡率表示為:

下面給出基于SMOTE的集成學習算法的具體步驟:
步驟1 獲得少數類樣本的k近鄰。
計算少數類樣本 pi,i=1,2,…,pnum 與訓練樣本T的k近鄰,k近鄰中有k'(0≤k'≤k)個樣本屬于多數類樣本。
步驟2 劃分少數類樣本。
如果0≤k'<k/t(適當選取參數t),則pi屬于安全樣本;如果k/t≤k'<k,則pi屬于邊界樣本;如果k'=k(適當選取參數t),則pi屬于噪聲;其中,邊界類樣本記為 p't,t=1,2,…,dnum。
步驟 3 設置采樣倍率 Ut,t=1,2,…,dnum。

步驟4 訓練樣本的不平衡率rIR設置為m種情況,確定m種情況下需要增加的少數類樣本的個數。設置采樣倍率,邊界樣本p't與其近鄰插值合成 st個新增的少數類樣本。cj=p't+rj×dj,t=1,2,…,dnum,j=1,2,…,st,其中 s1+s2+…+sdnum為某一平衡率下增加的少數類樣本的個數,rj為0到1之間的隨機數,dj為p't與其近鄰的歐式距離。
步驟5 新增的少數類樣本分別與原始訓練樣本合并,構成新訓練樣本 T'1,T'2,…,T'm,m 個新訓練樣本與支持向量機構成m個基分類器。
步驟6 輸入測試樣本到m個基分類器中,剔除具有錯誤分類傾向的分類器,利用剩余的分類器進行投票分類。
實驗采取了5折交叉驗證法,運行30次,取其均值。仿真軟件為Matlab R2018a,實驗環境為操作系統Windows10 64 bit,處理器為Intel(R)Core(TM)i5-7200U CPU@2.50GHz 2.71GH,內存為8GB。利用支持向量機(SVM)[12-13]作為分類器,徑向基核選取的核寬為0.8[14]。
實驗數據來源于UCI數據集(https://archive.ics.uci.edu/ml/index.html) 和 KEEL數據集(http://sci2s.ugr.es/keel/study.php?Cod=24),其中選取了不平衡率不相同的10組數據集(表1),并且數據歸一化到[0,1]進行預處理。
在本文的仿真實驗中,新算法步驟5的m取11,分別設置不平衡率 rIR為 0.5,0.6,…,1.4,1.5 等11種情況。利用這11個數據集分別訓練得到11個分類器,剔除3個分類結果過于傾向于負類樣本和3個分類結果過于傾向于正類樣本的分類器,利用剩下5個基分類器進行投票。

表1 數據集的描述
目前,不平衡數據集的分類問題常用的評價標準有查全率、查準率、G-mean值、Fvalue值等等,這些評價標準兼顧了各類樣本的分類精度,能更好地評價不平衡數據集的整體性能。
表2給出了混淆矩陣,它是常用的一種評價分類性能的方法。表2中TP、TN分別表示正確分類的少數類和多數類樣本個數。FP、FN分別表示錯誤分類的少數類和多數類樣本個數。

表2 混淆矩陣的描述
查全率rTP、rTN及查準率公式如下:

綜合查全率和查準率的F值公式如下:

G-mean值公式如下:

圖 2 給出了 SMOTE、B-SMOTE、RB-SMOTE、11個集成、5個集成等5種方法的G-mean值比較。

圖2 各種算法的G-mean值比較
從G-mean值的角度看,RB-SMOTE結合集成學習的算法優于單一的RB-SMOTE算法,5個集成學習的算法略優于11個集成學習的算法,如圖2。
表 3、表 4分別給出了 SMOTE、B-SMOTE、RB-SMOTE、11個集成、5個集成等5種算法的rTP值與Fvalue值比較。表中顯示,11集成與5集成不論是rTP還是Fvalue值都優于其他算法。

表3 各種算法的rTP值比較

表4 各種算法的Fvalue值比較
本文提出了一種基于SMOTE的集成學習算法。B-SMOTE算法是在SMOTE算法的基礎上建立起來的,RB-SMOTE算法精細化了B-SMOTE算法,新算法是把RB-SMOTE算法結合了的集成學習算法,分別設置11個與5個平衡率不同的數據集,并投票獲得分類結果。新算法結合了RB-SMOTE方法與集成學習方法的優勢,使得新分類器穩定性更強。仿真實驗表明基于SMOTE的集成學習分類器比 SMOTE、B-SMOTE和RB-SMOTE整體上更優。