分類任務中資料類別不平衡問題的幾種解決方案
類別不平衡(class-imbalance),是指分類任務中不同類別的訓練樣例數目差別很大的情況(例如,訓練集正類樣例10個,反類樣例90個),本文假設正類樣例較少,反類樣例較多。
現有解決方案大體分為三類,如下文所示。
欠取樣(undersampling)
欠取樣方法,即去除一些反類樣例,使得正、反類樣例數量接近。
EasyEnsemble為欠取樣的代表性演算法,利用繼承學習機制,將反例劃分為若干個集合,供不同學習器使用,這樣對每個學習器來看都進行了欠取樣,但在全域性來看卻不會丟失重要資訊。
上圖為EasyEnsemble示意圖,若反例樣本是正例樣本數量的4倍,將反例樣本隨機劃分成4個集合,每個集合分別和全部正例樣本組成不同的訓練集,每個訓練集由不同學習器進行學習,這樣,每個訓練集的資料都是平衡的,全域性來看又不會捨棄掉任何反例樣本。
過取樣(oversampling)
過取樣,即增加一些正例,使得正、反類樣例數量接近。
SMOTE,過取樣的代表性演算法,通過對訓練集的正例進行插值,來產生額外的正例。
閾值移動(threshold-moving)
閾值移動,直接基於原始訓練集進行學習,但是修改分類器預測時的決策過程;下面以邏輯迴歸(logistics regression)為例,進行說明。
邏輯迴歸(logistics regression),即對數機率迴歸,其模型可以表示為:
即:
其中,
為預測得到結果,
為輸入樣本資料,
和
為模型權值和偏置。
如上圖所示,圖中曲線為對數機率函式(Sigmoid 函式的一種),因此, 在0到1之間。
我們將 視為樣本 為正例的可能性,那麼 是其為反例的可能性,機率 反映了正例可能性和反例可能性之比。
一般情況下,
當樣本平衡時,分類器的決策規則為:
- 若 ,則 預測為正例;
- 上條規則亦可以表示為,若 ,則 預測為正例。
當樣本不平衡時,記 為正例樣本數量, 為反例樣本數量,分類器決策規則變為:
- 若 ,則 預測為正例;
- 上條規則亦可以表示為,若 ,或 ,則 預測為正例。
這種類別不平衡學習的策略也叫“再縮放”(rescaling)或“再平衡”(rebalance)