在機器學習中,如何處理數據不平衡的問題?

流浪的小孩18

數據不平衡問題在機器學習中是一種很常見的數據預處理的問題。

指的是數據在分佈上的不均勻,比如對淘寶評論進行好評和差評的分類的問題,往往好評的數據特別多,而差評的數據則相對較少。在醫學上對癌症的預測,同時是沒發生病變的數據遠遠多於發生病變的數據量。

這種數據不平衡的問題會對機器學習結果造成很大影響,比如對於癌症的二分類問題來說,由於正例(沒有病變)特別多如有990個,反例(發生病變)特別少如只有10個。因此就算不加選擇的都預測為正例,那麼準確率也會特別高,達到99%。因此算法就無法真正的學習到二者之間的區別。

解決的方式可以從兩方面來處理:一種是對數據進行處理;二是使用針對不平衡數據的算法。

對數據進行處理

1. 通過二次採樣來改變數據的分佈

包括兩種方式為過採樣和欠採樣:

一是隨機複製少數類樣本。但是這種方法的缺陷是,容易讓模型對少數類樣本產生過擬合,無法真正學到二者之間的差別。改進的方法可以向少數類樣本中加入隨機的噪聲。

二是通過減少多數類樣本來提高對少數類的預測效果。隨機的丟掉一些多數類樣本,來使得數據更加平衡。缺點是同時也丟失了多數類樣本的一些信息,會降低模型學習的性能。

2. 數據合成

利用已知樣本來生成更多的數據。常用的算法是SMOTE(Synthetic Minority Oversampling Technique),即合成少數類過採樣技術。具體方式如下圖所示:左邊是數據不平衡的數據集;中間值利用SMOTE算法進行數據合成;右邊則是合成後的結果。


改進算法

上面的方法都是從數據的分佈的方面來改進學習效果;而在算法方面上改進的方法主要是基於代價敏感學習算法(Cost-Sensitive Learning),即提高少數類樣本錯誤分類的權重,降低多數類樣本錯誤分類的權重。從而使得模型更加關注少數類樣本的分佈狀況。



分享到:


相關文章: