類別不平衡

在機器學習分類任務中,類別不平衡是指不同類別的訓練樣例數差別很大。

基本介紹

  • 中文名:類別不平衡
  • 外文名:Category imbalance
介紹,解決方法,1、擴大數據集,2、欠採樣,3、過採樣,4、使用新評價指標,5、嘗試不同的分類算法,

介紹

在現實的分類任務中,我們會經常遇到類別不平衡的問題。例如,在銀行信用欺詐交易識別中,屬於欺詐交易的應該是很少部分,絕大部分交易是正常的,這就是一個正常的類別不平衡問題。一般而已,如果類別不平衡比例超過4:1,那么其分類器會大大地因為數據不平衡性而無法滿足分類要求的。因此在構建分類模型之前,需要對分類不平衡性問題進行處理。
我們假設有這種情況,訓練數據有反例998個,正例2個,模型是一個永遠將新樣本預測為反例的學習器,就能達到99.8%的精度,這樣顯然是不合理的。

解決方法

1、擴大數據集

當遇到類別不均衡問題時,首先應該想到,是否可能再增加數據(一定要有小類樣本數據),更多的數據往往戰勝更好的算法。因為機器學習是使用現有的數據對整個數據的分布進行估計,因此更多的數據往往能夠得到更多的分布信息。即使再增加小類樣本數據時,又增加了大類樣本數據,也可以使用放棄一部分大類數據(即對大類數據進行欠採樣)來解決。

2、欠採樣

欠採樣(under-sampling):對大類的數據樣本進行採樣來減少該類數據樣本的個數,使其與其他類數目接近,然後再進行學習。欠採樣若隨機丟棄大類樣本,可能會丟失一些重要信息。
欠採樣的代表算法是EasyEnsemble:利用集成學習機制,將大類劃分為若干個集合供不同的學習器使用。這樣對每個學習器來看都進行了欠採樣,但在全局來看卻不會丟失重要信息。

3、過採樣

過採樣(over-sampling ):對小類的數據樣本進行採樣來增加小類的數據樣本個數。 過採樣的代表算法是SMOTE(原始論文)和ADASYN原始論文。
總結:採樣算法容易實現,運行速度快,且效果也不錯。
在欠採樣、過採樣中的小經驗:
1、考慮對大類下的樣本(超過1萬、十萬甚至更多)進行欠採樣,即刪除部分樣本;
2、 考慮對小類下的樣本(不足1為甚至更少)進行過採樣,即添加部分樣本的副本;
3、考慮嘗試隨機採樣與非隨機採樣兩種採樣方法;
4、 考慮對各類別嘗試不同的採樣比例,不一定是1:1,有時候1:1反而不好,因為與現實情況相差甚遠;
5、考慮同時使用過採樣與欠採樣,對二者進行結合;
值得注意的是,使用過採樣方法來解決不平衡問題時應適當地套用交叉驗證。這是因為過採樣會觀察到罕見的樣本,並根據分布函式套用自舉生成新的隨機數據,如果在過採樣之後套用交叉驗證,那么我們所做的就是將我們的模型過擬合於一個特定的人工引導結果。這就是為什麼在過度採樣數據之前應該始終進行交叉驗證,就像實現特徵選擇一樣。只有重複採樣數據可以將隨機性引入到數據集中,以確保不會出現過擬合問題。

4、使用新評價指標

在一開始的例子中可以看出,準確度這個評價指標在類別不均衡的分類任務中並不適用,甚至進行誤導。因此在類別不均衡分類任務中,需要使用更有說服力的評價指標來對分類器進行評價。
1. 混淆矩陣(Confusion Matrix):使用一個表格對分類器所預測的類別與其真實的類別的樣本統計,分別為:TP、FN、FP與TN。由此計算精確率(precision)、召回率(recall)、F1值(F1 value)。
2. ROC曲線(ROC Curves)
3. AUC
4. Kappa (Cohen kappa)

5、嘗試不同的分類算法

因為不同的算法適用於不同的任務與數據,應該使用不同的算法進行比較。決策樹往往在類別不均衡數據上表現不錯。它使用基於類變數的劃分規則去創建分類樹,因此可以強制地將不同類別的樣本分開。流行的決策樹算法有:C4.5、C5.0、CART和Random Forest等。

相關詞條

熱門詞條

聯絡我們