1. 程式人生 > >分類任務中資料類別不平衡問題的幾種解決方案

分類任務中資料類別不平衡問題的幾種解決方案

類別不平衡(class-imbalance),是指分類任務中不同類別的訓練樣例數目差別很大的情況(例如,訓練集正類樣例10個,反類樣例90個),本文假設正類樣例較少,反類樣例較多。

現有解決方案大體分為三類,如下文所示。

欠取樣(undersampling)

欠取樣方法,即去除一些反類樣例,使得正、反類樣例數量接近。

EasyEnsemble為欠取樣的代表性演算法,利用繼承學習機制,將反例劃分為若干個集合,供不同學習器使用,這樣對每個學習器來看都進行了欠取樣,但在全域性來看卻不會丟失重要資訊。

欠取樣示意圖

上圖為EasyEnsemble示意圖,若反例樣本是正例樣本數量的4倍,將反例樣本隨機劃分成4個集合,每個集合分別和全部正例樣本組成不同的訓練集,每個訓練集由不同學習器進行學習,這樣,每個訓練集的資料都是平衡的,全域性來看又不會捨棄掉任何反例樣本。

過取樣(oversampling)

過取樣,即增加一些正例,使得正、反類樣例數量接近。

SMOTE,過取樣的代表性演算法,通過對訓練集的正例進行插值,來產生額外的正例。

閾值移動(threshold-moving)

閾值移動,直接基於原始訓練集進行學習,但是修改分類器預測時的決策過程;下面以邏輯迴歸(logistics regression)為例,進行說明。

邏輯迴歸(logistics regression),即對數機率迴歸,其模型可以表示為:
y =

1 1 + e ( w
T
x + b )
y=\frac{1}{1+e^{-(w^\mathrm{T}x+b)}}
即:
ln y 1 y = w T x + b \ln{\frac{y}{1-y}}=w^\mathrm{T}x+b
其中, y y 為預測得到結果, x x 為輸入樣本資料, w w b b 為模型權值和偏置。

img

如上圖所示,圖中曲線為對數機率函式(Sigmoid 函式的一種),因此, y y 在0到1之間。

我們將 y y 視為樣本 x x 為正例的可能性,那麼 1 y 1-y 是其為反例的可能性,機率 y 1 y \frac{y}{1-y} 反映了正例可能性和反例可能性之比。

一般情況下,

樣本平衡時,分類器的決策規則為:

  • y 1 y > 1 \frac{y}{1-y}>1 ,則 預測為正例;
  • 上條規則亦可以表示為,若 y > 0.5 y>0.5 ,則 預測為正例。

樣本不平衡時,記 m + m^+ 為正例樣本數量, m m^- 為反例樣本數量,分類器決策規則變為:

  • y 1 y > m + m \frac{y}{1-y}>\frac{m^+}{m^-} ,則 預測為正例;
  • 上條規則亦可以表示為,若 y 1 y × m m + > 1 \frac{y}{1-y}\times\frac{m^-}{m^+}>1 ,或 y > m + m y>\frac{m^+}{m} ,則 預測為正例。

這種類別不平衡學習的策略也叫“再縮放”(rescaling)或“再平衡”(rebalance)