分類中解決類別不平衡問題

目錄:

1.什麼是類別不平衡問題

2.解決類別不平衡問題

2.1欠採樣方法

(1)什麼是欠採樣方法

(2)隨機欠採樣方法

(3)欠採樣代表性算法-EasyEnsemble

(4)欠採樣代表性算法-BalanceCascade

2.2過採樣方法

(1)什麼是過採樣方法

(2)隨機過採樣方法

(3)過採樣代表性算法-SMOTE

(4)Borderline-SMOTE算法介紹

2.3代價敏感學習

(1)代價矩陣

(2)代價敏感學習方法

(3)AdaCost算法

2.4不均衡學習的評價方法

(1)F1度量

(2)G-Mean

(3)ROC曲線AUC面積

3.如何選擇算法

總結

1.什麼是類別不平衡問題

如果不同類別的訓練樣例數目稍有差別,通常影響不大,但若差別很大,則會對學習過程造成困擾。例如有998個反例,但是正例只有2個,那麼學習方法只需要返回一個永遠將新樣本預測爲反例的學習器,就能達到99.8%的精度;然而這樣的學習器往往沒有價值,因爲它不能預測出任何正例。

類別不平衡(class-imbalance)就是指分類任務中不同類別的訓練樣例數目差別很大的情況。在現實的分類學習任務中,我們經常會遇到類別不平衡,例如在通過拆分法解決多分類問題時,即使原始問題中不同類別的訓練樣例數目相當,在使用OvR(一對其餘,One vs. Rest,簡稱OvR)、MvM(多對多,Many vs. Many,簡稱MvM)策略後產生的二分類任務扔可能出現類別不平衡現象,因此有必要了解類別不平衡性處理的基本方法。

2.解決類別不平衡問題

2.1欠採樣方法

(1)什麼是欠採樣方法

直接對訓練集中多數類樣本進行“欠採樣”(undersampling),即去除一些多數類中的樣本使得正例、反例數目接近,然後再進行學習。

(2)隨機欠採樣方法

隨機欠採樣顧名思義即從多數類中隨機選擇一些樣樣本組成樣本集。然後將樣本集中移除。新的數據集

缺點:

隨機欠採樣方法通過改變多數類樣本比例以達到修改樣本分佈的目的,從而使樣本分佈較爲均衡,但是這也存在一些問題。對於隨機欠採樣,由於採樣的樣本集合要少於原來的樣本集合,因此會造成一些信息缺失,即將多數類樣本刪除有可能會導致分類器丟失有關多數類的重要信息。

爲了克服隨機欠採樣方法導致的信息缺失問題,又要保證算法表現出較好的不均衡數據分類性能,出現了欠採樣法代表性的算法EasyEnsemble和BalanceCascade算法。

(3)欠採樣代表性算法-EasyEnsemble

算法步驟:

1)從多數類中有放回的隨機採樣n次,每次選取與少數類數目相近的樣本個數,那麼可以得到n個樣本集合記作

2)然後,將每一個多數類樣本的子集與少數類樣本合併並訓練出一個模型,可以得到n個模型。

3)最終將這些模型組合形成一個集成學習系統,最終的模型結果是這n個模型的平均值。

圖1:EasyEnsemble算法

(4)欠採樣代表性算法-BalanceCascade

BalanceCascade算法基於Adaboost,將Adaboost作爲基分類器,其核心思路是:

1)在每一輪訓練時都使用多數類與少數類數量相等的訓練集,訓練出一個Adaboost基分類器。

2)然後使用該分類器對全體多數類進行預測,通過控制分類閾值來控制假正例率(False Positive Rate),將所有判斷正確的類刪除。

3)最後,進入下一輪迭代中,繼續降低多數類數量。

圖2:BalanceCascade算法

擴展閱讀:

Liu X Y, Wu J, Zhou Z H. Exploratory undersampling for class-imbalance learning[J]. IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), 2009, 39(2): 539-550.

這篇論文提出了兩種欠採樣的方法:EasyEnsemble和BalanceCascade。

2.2過採樣方法

(1)什麼是過採樣方法

對訓練集裏的少數類進行“過採樣”(oversampling),即增加一些少數類樣本使得正、反例數目接近,然後再進行學習。

(2)隨機過採樣方法

隨機過採樣是在少數類中隨機選擇一些樣本,然後通過複製所選擇的樣本生成樣本集,將它們添加到中來擴大原始數據集從而得到新的少數類集合。新的數據集

缺點:

對於隨機過採樣,由於需要對少數類樣本進行復制來擴大數據集,造成模型訓練複雜度加大。另一方面也容易造成模型的過擬合問題,因爲隨機過採樣是簡單的對初始樣本進行復制採樣,這就使得學習器學得的規則過於具體化,不利於學習器的泛化性能,造成過擬合問題。

爲了解決隨機過採樣中造成模型過擬合問題,又能保證實現數據集均衡的目的,出現了過採樣法代表性的算法SMOTE和Borderline-SMOTE算法。

(3)過採樣代表性算法-SMOTE

SMOTE全稱是Synthetic Minority Oversampling即合成少數類過採樣技術。SMOTE算法是對隨機過採樣方法的一個改進算法,由於隨機過採樣方法是直接對少數類進行重採用,會使訓練集中有很多重複的樣本,容易造成產生的模型過擬合問題。而SOMT算法的基本思想是對每個少數類樣本,從它的最近鄰中隨機選擇一個樣本是少數類中的一個樣本),然後在之間的連線上隨機選擇一點作爲新合成的少數類樣本。

SMOTE算法合成新少數類樣本的算法描述如下:

1).對於少數類中的每一個樣本,以歐氏距離爲標準計算它到少數類樣本集中所有樣本的距離,得到其k近鄰。

2).根據樣本不平衡比例設置一個採樣比例以確定採樣倍率N,對於每一個少數類樣本,從其k近鄰中隨機選擇若干個樣本,假設選擇的是

3).對於每一個隨機選出來的近鄰,分別與按照如下公式構建新的樣本。

我們用圖文表達的方式,再來描述一下SMOTE算法。

1).先隨機選定一個少數類樣本

2).找出這個少數類樣本的K個近鄰(假設K=5),5個近鄰已經被圈出。


3).隨機從這K個近鄰中選出一個樣本(用綠色圈出來了)。

4).在少數類樣本和被選中的這個近鄰樣本之間的連線上,隨機找一點。這個點就是人工合成的新的樣本點(綠色正號標出)。

SMOTE算法摒棄了隨機過採樣複製樣本的做法,可以防止隨機過採樣中容易過擬合的問題,實踐證明此方法可以提高分類器的性能。但是SMOTE算法也存以下兩個缺點:

1)由於對每個少數類樣本都生成新樣本,因此容易發生生成樣本重疊的問題。

2)在SMOTE算法中,出現了過度泛化的問題,主要歸結於產生合成樣本的方法。特別是,SMOTE算法對於每個原少數類樣本產生相同數量的合成數據樣本,而沒有考慮其鄰近樣本的分佈特點,這就使得類間發生重複的可能性增大。

解釋缺點2)的原因:結合前面所述的SMOTE算法的原理,SMOTE算法產生新的人工少數類樣本過程中,只是簡單的在同類近鄰之間插值,並沒有考慮少數類樣本週圍多數類樣本的分佈情況。如3圖所示,綠色正號1、2分佈在多數類樣本週圍,它們離多數類樣本最近,這就導致它們有可能被劃分成多數類樣本。因此從3圖中可以看出,SMOTE算法的樣本生成機制存在一定的盲目性。

圖3:SMOTE算法結果

爲了克服以上兩點的限制,多種不同的自適應抽樣方法相繼被提出,其中具有代表性的算法包括Borderline-SMOTE算法。

擴展閱讀:

Chawla N V, Bowyer K W, Hall L O, et al. SMOTE: synthetic minority over-sampling technique[J]. Journal of artificial intelligence research, 2002, 16: 321-357.

這篇論文提出了SMOTE算法。

(4)Borderline-SMOTE算法介紹

對於Borderline-SMOTE算法最感興趣的就是用於識別少數類種子樣本的方法。在Borderline-SMOTE算法中,識別少數類種子樣本的過程如下:

1)首先,對於每個,確定一系列最近鄰樣本集,成該數據集爲,且

2)然後,對每個樣本,判斷出最近鄰樣本集中屬於多數類樣本的個數,即:

3)最後,選擇滿足下面不等式的

上面式子表明,只有最近鄰樣本集中多數類多於少數類的那些纔會被選中形成“危險集”(DANGER)。因此,DANGER集中的樣本代表少數類樣本的邊界(最容易被錯分的樣本)。然後對DANGER集中使用SMOTE算法在邊界附近產生人工合成少數類樣本。

我們可以看出,如果 。即:的所有k個最近鄰樣本都屬於多類。如4圖所示的樣本點C,我們就認爲樣本點C是噪聲且它不能生成合成樣本。

圖4:基於在邊界上樣本的數據建立

通過上面的介紹,我們對Borderline-SMOTE算法有了一定的瞭解。爲了讓大家理解的更透徹這個算法,我再給大家畫一個流程圖,詳細介紹一下。

圖5:Borderline-SMOTE算法流程圖

流程圖5中,訓練樣本集爲F,少數類樣本

1)步驟一:

(i)計算少數類樣本集中每一個樣本在訓練集F中的k個最近鄰。

(ii)然後,根據這k個最近鄰對中的樣本進行歸類:

  • 假設這k個最近鄰都是多數類樣本,則我們將該樣本定義爲噪聲樣本,將它放在集合中。

  • 反正k個最近鄰都是少數類樣本則該樣本是遠離分類邊界的,將其放入S集合中。

  • 最後,K個最近鄰即有多數類樣本又有少數類樣本,則認爲是邊界樣本,放入B集合中。

2)步驟二:

(i)設邊界樣本集,計算B集合中的每一個樣本 ,在少數類樣本集中的K個最近鄰,組成集合

(ii)隨機選出s(1<s<n)個最近鄰。

(iii)計算出它們各自與該樣本之間的全部屬性的差值

(iv)然後乘以一個隨機數,。如果集合或S集合中的樣本,則

(v)最後生成的人工少數類樣本爲:

3)步驟三:

重複步驟2的過程,直到生成人工少數類樣本的數目滿足要求,達到均衡樣本集的目的後結束算法。

擴展閱讀:

Han H, Wang W Y, Mao B H. Borderline-SMOTE: a new over-sampling method in imbalanced data sets learning[C]//International Conference on Intelligent Computing. Springer, Berlin, Heidelberg, 2005: 878-887.

這篇文章提出了Borderline-SMOTE算法。

2.3代價敏感學習(cost-sensitive learning)

(1)代價矩陣

採樣算法從數據層面解決不平衡數據的學習問題;在算法層面上解決不平衡數據學習的方法主要是基於代價敏感學習算法(Cost-Sensitive Learning)。

在現實任務中常會遇到這樣的情況:不同類型的錯誤所造成的後果不同。例如在醫療診斷中,錯誤地把患者診斷爲健康人與錯誤地把健康人診斷爲患者,看起來都是犯了“一次錯誤”,但是後者的影響是增加了進一步檢查的麻煩,前者的後果卻可能是喪失了拯救生命的最佳時機;再如,門禁系統錯誤地把可通行人員攔在門外,將使得用戶體驗不佳,但錯誤地把陌生人放進門內,則會造成嚴重的安全事故;在信用卡盜用檢查中,將正常使用誤認爲是盜用,可能會使用戶體驗不佳,但是將盜用誤認爲是正常使用,會使用戶承受巨大的損失。爲了權衡不同類型錯誤所造成的不同損失,可爲錯誤賦予“非均等代價”(unequal cost)。

代價敏感學習方法的核心要素是代價矩陣,如表1所示。其中表示將第i 類樣本預測爲第j類樣本的代價。一般來說,;若將第0類判別爲第1類所造成的損失更大,則 ;損失程度相差越大,的值差別越大。當相等時爲代價不敏感的學習問題。

表1:代價矩陣

(2)代價敏感學習方法

基於以上代價敏感矩陣的分析,代價敏感學習方法主要有以下三種實現方式,分別是:

1).從學習模型出發,對某一具體學習方法的改造,使之能適應不平衡數據下的學習,研究者們針對不同的學習模型如感知機、支持向量機、決策樹、神經網絡等分別提出了其代價敏感的版本。以代價敏感的決策樹爲例,可以從三個方面對其進行改造以適應不平衡數據的學習,這三個方面分別是決策閾值的選擇方面、分裂標準的選擇方面、剪枝方面,這三個方面都可以將代價矩陣引入。

2).從貝葉斯風險理論出發,把代價敏感學習看成是分類結果的一種後處理,按照傳統方法學習到一個模型,以實現損失最小爲目標對結果進行調整,優化公式如下所示。此方法的優點在於它可以不依賴所用的具體分類器,但是缺點也很明顯,它要求分類器輸出值爲概率。

3).從預處理的角度出發,將代價用於權重調整,使得分類器滿足代價敏感的特性,下面講解一種基於Adaboost的權重更新策略AdaCost算法。

(3)AdaCost算法

要想了解AdaCost算法,我們得先知道Adaboost算法,如圖6所示。Adaboost算法通過反覆迭代,每一輪迭代學習到一個分類器,並根據當前分類器的表現更新樣本的權重,如圖中紅框所示,其更新策略爲正確分類樣本權重降低,錯誤分類樣本權重增大,最終的模型是多次迭代模型的一個加權線性組合。分類越準確的分類器將會獲得越大的權重。

圖6:Adaboost算法

AdaCost算法修改了Adaboost算法的權重更新策略,其基本思想是對代價高的誤分類樣本大大地提高其權重,而對於代價高的正確分類樣本適當地降低其權重,使其權重降低相對較小。總體思想是代價高樣本權重增加得大降低的慢。其樣本權重按照如下公式進行更新。其中分別表示樣本被正確和錯誤分類情況下的的取值。

2.4不平衡學習的評價方法

(1)F1度量

這一部分涉及到模型的評價方法,如果你還沒有學習過,可以看我的公衆號之前發的關於這部分文章。同時,我也把鏈接地址貼出來,供大家快速學習。

【錯誤率、精度、查準率、查全率和F1度量】詳細介紹

ROC曲線和AUC面積理解


表2:分類結果混淆矩陣

例如在癌症預測的場景中,假設沒有患癌症的樣本爲正例,患癌症的樣本爲反例,反例佔的比例很少(大概0.1%),如果直接把分類器設置爲預測都是正例,那麼精度和查準率的值都是99.9%。可見精度、錯誤率和查準率都不能表示不平衡數據下的模型表現。而F1值則同時考慮了少數類的查準率和召回率,因此能衡量不平衡數據下模型的表現。

(2)G-Mean

G-Mean是另外一個指標,也能評價不平衡數據的模型表現,其計算公式如下。

(3)ROC曲線和AUC面積

我的這篇文章把ROC曲線和AUC面積分析的全面。ROC曲線和AUC面積可以很好的評價不平衡數據的模型表現。

ROC曲線和AUC面積理解


3.如何選擇算法

(1)在正負樣本都非常少的情況下,應該採用數據合成的方式,例如:SMOTE算法和Borderline-SMOTE算法。

(2)在正負樣本都足夠多且比例不是特別懸殊的情況下,應該考慮採樣的方法或者是加權的方法。

總結:

本文主要介紹了分類中類別不均衡時學習中常用的算法及評價指標,算法主要從數據和模型兩個層面介紹,數據層面的算法主要關於過採樣和欠採樣以及改進的算法,模型方面主要講解了基於代價的敏感學習。評價指標主要講解了F1度量、G-Mean和ROC曲線AUC面積。

歡迎掃碼關注:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章