機器學習中的數據不平衡問題


最近碰到一個問題,其中的陽性數據比陰性數據少很多,這樣的數據集在進行機器學習的時候會使得學習到的模型更偏向於預測結果為陰性。查找了相關的一些文獻,了解了一些解決這個問題的一些方法和技術。

首先,數據集不平衡會造成怎樣的問題呢。一般的學習器都有下面的兩個假設:一個是使得學習器的准確率最高,另外一個是學習器應該用在與訓練集有相同分布的 測試集上。如果數據不平衡,那么學習器使得它的准確率最高肯定是更偏向於預測結果為比例更大的類別。比如說陽性的比例為1%,陰性的比例為99%,很明顯 的是即使不學習,直接預測所有結果為陰性,這樣做的准確率也能夠達到99%,而如果建立學習器也很有可能沒有辦法達到99%。這就是數據比例不平衡所造成 的問題。這樣建立的模型即使准確率再高,在實際應用的時候效果肯定不好,而且也不是我們想要的模型。

明白了數據集的不平衡對於學習過程所造成的問題,相應的解決辦法也有不少。下面是一些常用的兩類方法。
1 從數據集入手。既然數據不平衡,那我們就人為的把數據集給平衡一下。可以通過隨機采樣比例大的類別使得訓練集中大類的個數與小類相當,也可以重復小類 使得小類的個數與大類相當。前者的問題是可能會丟失信息,因為只采用部分樣本。后者的問題是可能造成過擬合,因為有重復樣本。前者的問題可以通過 esemble的方法來解決,即每次形成訓練集的時候包括所有小類樣本,同時從大類樣本中隨機選擇樣本構成訓練集,這樣重復很多次得到很多訓練集和訓練模 型。在測試的時候使用投票的方法來判斷分類結果。
除了平衡數據集外,還可以通過分別在大類和小類中篩選特征,然后組合起來構成學習器。這樣也可能提高效果。

2 從學習器入手。最簡單的是通過改變判斷類別的cutoff來改變類別樣本比例;也可以只學習一個類別。此外,在學習的時候考慮到誤判不同樣本的不同成本,使得學習器更偏向於預測小類。這樣也能夠改進模型。

如何處理不平衡數據集相關的問題有很多研究,詳細的請見參考文獻中的綜述。

參考文獻
1 Sotiris Kotsiantis, et al. Handing imbalanced datasets:A review.2006.
2Foster Provost. Machine learning from imbalanced data sets.


http://blog.sciencenet.cn/blog-54276-377102.html  此文來自科學網彭友松博客,轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM