6種方式處理機器學習中不平衡的資料集 - svpino

banq發表於2021-07-08

讓我們從一個例子開始:您正在嘗試構建一個分類模型。
  • 1 類:貓
  • 2 類:狗

不幸的是,您的資料非常不準確:有 950 張貓圖片和 50 張狗圖片。
如果您的模型將每張圖片都歸類為貓,那麼您的準確率將達到 95%。想一想:由於類別不平衡,愚蠢的模型將使您達到 95% 的準確率。這是業界非常普遍的問題。
注意:“不平衡”並不意味著“每個類別的樣本數量不同”。擁有 550 張貓圖片和 450 張狗圖片不一定是問題。
現在讓我們透過一些技巧來解決這個問題:

1. 不要在不平衡的資料集上使用“準確性”。
對於這些問題,精度並不是一個好的效能指標。
相反,請檢視以下內容:

  • 精度
  • Recall召回
  • F-Score
  • 混淆矩陣
  • ROC 曲線

 
2. 收集更多資料。

在我們的示例中,您可能能夠找到更多的狗圖片新增到您的資料集中並減少差異。我總是喜歡從這裡開始,但收集更多資料並不總是一種選擇。
 

3. 用合成資料擴充資料集。
這是處理非結構化資料的好方法:建立類似於真實資料的新樣本。非結構化資料是指:影片、影像、文字、音訊。
您可以轉換一些狗圖片以建立新樣本:

  •  更改對比度
  •  水平翻轉
  •  輕微旋轉
  •  新增噪聲
  •  ...
  •  

結合這些技術,我們可以生成大量新資料。
對於結構化資料,增強要困難得多,有時根本不可能。結構化資料 是指: 表格資料(想想列和行。)
 

4. 重新取樣您的資料集。
有幾種方法可以做到這一點:

  •  對狗的圖片進行過取樣。
  •  對貓的圖片取樣不足。

您也可以將兩者結合起來。
以下是對我們的資料集重新取樣的示例:
  •  將每張狗圖片使用四次。
  • 使用所有其他貓圖片。

新資料集:
  •  狗:400 張圖片(50 × 4)
  •  貓:475 張圖片(950 ÷ 2)

好多了,嗯?
重要提示:過取樣和欠取樣都會給您的資料集帶來偏差:您正在透過任意弄亂現有樣本來改變資料的分佈。請務必牢記這一點並考慮後果。
 

5. 使用成本敏感性Cost Sensitivity。
向模型新增成本敏感層是最佳化預測的好方法。這將有助於權衡在不平衡資料上訓練的模型的結果。我們只關心錯誤,因為如果模型正確,成本為 0 美元。在相信結果之前,我們將計算出錯時的潛在錯誤成本。
 

6. 檢查不同的演算法。
決策樹非常擅長處理不平衡的類。當然,我們不能將決策樹用於“貓與狗”問題,但在處理結構化資料時它可能是一個很好的解決方案。

 

相關文章