欠采樣和過采樣解決分類樣本不平衡問題


什么是樣本不平衡

對於二分類問題,如果兩個類別的樣本數目差距很大,那么訓練模型的時候會出現很嚴重的問題。舉個簡單的例子,貓狗圖片分類,其中貓有990張,狗有10張,這時候模型只需要把所有輸入樣本都預測成貓就可以獲得99%的識別率,但這樣的分類器沒有任何價值,它無法預測出狗。
類別不平衡(class-imbalance)就是指分類任務中正負樣本數目差距很大的情況。生活中有很多類別不平衡的例子,如工業產品次品檢測,次品樣本數目遠小於正品樣本;欺詐問題,欺詐類觀測在樣本集中也只占據少數。因此,有必要了解解決類別不平衡的常用方法。

解決方法

欠采樣

  1. 什么是欠采樣
    顧名思義,欠采樣就是從大數目類別樣本選取和小數目類別樣本數目相當的樣本,然后和少數目類別樣本組成新的數據集,在新的數據集中正負樣本比例相當。

  2. 隨機欠采樣算法

隨機欠采樣算法圖示

隨機欠采樣正如上圖展示的,從大數目類別樣本中隨機選取和小數目類別樣本數目相當的樣本,然后和少數目類別樣本組成新的數據集。

缺點:
隨機欠采樣后樣本數目取決於原先小量類別樣本數目,而當大類別樣本和小類別樣本數目差距很大而且小類別樣本數目比較少時,這樣很有可能會導致大類別樣本損失一些重要信息。
為了克服這個問題,學者相繼提出了EasyEnsemble和BalanceCascade算法。

  1. 欠采樣代表性算法
  • EasyEnsemble
    算法步驟
    (1) 從多數類中有放回的隨機采樣n次,每次選取與少數類數目相近的樣本個數,從而得到n個樣本集合記作 \(\{S_{1maj}, S_{2maj},\cdots,S_{nmaj}\}\)
    (2) 將(1)中得到的n個集合分別與少數類樣本合並組成新的數據集去訓練模型,可以得到n個模型;
    (3) 將這些模型組成成集成學習系統,系統輸出為n個模型的平均值。

  • BalanceCascade
    BalanceCascade算法基於Adaboost,將Adaboost作為基分類器,核心思路如下:
    (1) 在每一輪訓練時都使用與少數類樣本數目相當的多數類樣本,訓練出一個Adaboost基分類器;
    (2) 然后使用該分類器對全體多數類進行預測,通過控制分類閾值來控制假正例率,將所有判斷正確的樣本刪除。
    (3) 最后,進入下一輪迭代中,繼續降低多數類數量。

擴展閱讀:
Liu X Y, Wu J, Zhou Z H. Exploratory undersampling for class-imbalance learning[J]
EasyEnsemble算法和BalanceCascade算法出自這篇論文。

過采樣

  1. 什么是過采樣方法
    對訓練集中少數類進行“過采樣”(oversampling),簡單來說就是少數類中一個樣本抽取多次,從而使正負樣本數目接近,再進行學習。
  2. 隨機過采樣
    隨機過采樣是指從少數類 \(S_{min}\) 中隨機選擇一些樣本,然后通過復制所選擇的樣本生成樣本集 \(E\),把它們添加到 \(S_{min}\) 中來擴大少數類數據集。擴充后少數類數據集 \(S_{min}+E\) 應和多數類 \(S_{maj}\) 樣本數目基本保持一致。
    缺點:
    少數類樣本的擴充會導致模型訓練復雜度加大;樣本的直接復制會使得學習期學得的規則過於具體化,容易過擬合。

為解決過擬合問題,出現了過采樣代表性算法:SMOTE和Borderline-SMOTE。

  1. 過采樣代表性算法
  • SMOTE
    SMOTE全稱是Synthetic Minority Oversampling即合成少數類過采樣技術。隨機過采樣直接對少數類樣本進行復制操作,容易導致過擬合,SMOTE算法針對復制操作進行改進,基本思想是:對每個少數類樣本 \(x_i\),從它的最近鄰(少數類)中隨機選擇一個樣本 \(\hat x_i\) ,然后在 \(x_i\)\(\hat x_i\)之間的連線上隨機選擇一點作為新合成的少數類樣本。算法描述如下:
    (1) 對於少數類樣本中的每一個樣本 \(x_i\), 計算它在 \(S_{min}\) 中的k個近鄰;
    (2) 根據類別不平衡比例設置一個采樣比例以確定采樣倍率N,從每個少數類樣本 \(x_i\) 的k個近鄰中挑選N個樣本,對該少數類樣本和其N個近鄰分別進行隨機線性插值生成N個新樣本;
    (3) 新樣本與原多數類樣本混合,產生新的數據集。

優缺點:
SMOTE算法摒棄了直接復制樣本的做法,可以防止過擬合問題,實踐證明可以提升分類器性能。但是SMOTE算法也存在下面兩個缺點:
(1) 易發生樣本重疊問題;
(2) 未考慮屬性特征和臨近樣本分布特點,易過度泛化。

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

  • Borderline-SMOTE
    Borderline-SMOTE采樣過程將少數類樣本分為3類:safe、danger和noise,然后僅使用danger少數類樣本進行過采樣。3類樣本定義如下,
    safe:樣本k近鄰(全體樣本,含多數類)中一半以上均為少數類樣本
    danger:樣本k近鄰中一半以上均為多數類樣本,這類樣本視為邊界點
    noise:樣本k近鄰中均為多數類樣本,視為異常值或噪聲
Borderline-SOMTE3類樣本圖解

下圖展示了Borderline-SMOTE算法采樣的案例。

Borderline-SOMTE案例

擴展閱讀:
Han H, Wang W Y, Mao B H. Borderline-SMOTE: a new over-sampling method in imbalanced data sets learning[C], 2005.
Borderline-SMOTE算法出自上面這篇論文。

算法選取建議

  • 在正負樣本都非常少的情況下,應該采取數據合成的方式,如:SMOTE和Borderline-SMOTE算法。
  • 在正負樣本都足夠充足且比例不是特別懸殊的情況下,應該考慮采樣的方法或者是加權的方法。

References

[1] 分類中解決類別不平衡問題
[2] 不平衡數據處理之SMOTE、Borderline SMOTE和ADASYN詳解及Python使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM