分類問題樣本不均衡常見的解決方法

分類時,由於訓練集合中各樣本數量不均衡,導致模型訓偏在測試集合上的泛化性不好。解決樣本不均衡的方法主要包括兩類:(1)數據層面,修改各類別的分佈;(2)分類器層面,修改訓練算法或目標函數進行改進。還有方法是將上述兩類進行融合。

數據層面

1. 過採樣

(1) 基礎版本的過採樣:隨機過採樣訓練樣本中數量比較少的數據;缺點,容易過擬合;

(2) 改進版本的過採樣:SMOTE,通過插值的方式加入近鄰的數據點;

(3) 基於聚類的過採樣:先對數據進行聚類,然後對聚類後的數據分別進行過採樣。這種方法能夠降低類間和類內的不平衡。

(4) 神經網絡中的過採樣:SGD訓練時,保證每個batch內部樣本均衡。

2. 欠採樣

與過採樣方法相對立的是欠採樣方法,主要是移除數據量較多類別中的部分數據。這個方法的問題在於,丟失數據帶來的信息缺失。爲克服這一缺點,可以丟掉一些類別邊界部分的數據。

分類器層面

1. Thresholding

Thresholding的方法又稱爲post scaling的方法,即根據測試數據的不同類別樣本的分佈情況選取合適的閾值判斷類別,也可以根據貝葉斯公式重新調整分類器輸出概率值。一般的基礎做法如下:

假設對於某個類別class在訓練數據中佔比爲x,在測試數據中的佔比爲x’。分類器輸出的概率值需要做scaling,概率轉換公式爲:

當然這種加權的方式亦可在模型訓練過程中進行添加,即對於二分類問題目標函數可以轉換爲如下公式:

2. Cost sensitive learning

根據樣本中不同類別的誤分類樣本數量,重新定義損失函數。Threshold moving和post scaling是常見的在測試過程進行cost調整的方法。這種方法在訓練過程計算損失函數時亦可添加,具體參見上一部分。

另外一種cost sensitive的方法是動態調節學習率,認爲容易誤分的樣本在更新模型參數時的權重更大一些。

3. One-class分類

區別於作類別判決,One-class分類只需要從大量樣本中檢測出該類別即可,對於每個類別均是一個獨立的detect model。這種方法能很好地樣本極度不均衡的問題。

4. 集成的方法

主要是使用多種以上的方法。例如SMOTEBoost方法是將Boosting和SMOTE 過採樣進行結合。

CNN分類處理方法

CNN神經網絡有效地應用於圖像分類、文本分類。目前成功解決數據不均衡的問題的一種方法是two-phrase training,即分兩階段訓練。首先,在均衡的數據集上進行訓練,然後在不均衡的原始數據集合上fine tune最後的output layer。

參考文獻

[1] https://www.kaggle.com/c/quora-question-pairs/discussion/31179

[2] Buda M, MakiA, Mazurowski M A, et al. A systematic study of the class imbalance problem inconvolutional neural networks[J]. Neural Networks, 2018: 249-259.

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