機器學習中的數據不平衡問題----通過隨機采樣比例大的類別使得訓練集中大類的個數與小類相當,或者模型中加入懲罰項


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

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

首先,數據集不平衡會造成怎樣的問題呢。一般的學習器都有下面的兩個假設:一個是使得學習器的准確率最高,另外一個是學習器應該用在與訓練集有相同分布的測試集上。如果數據不平衡,那么學習器使得它的准確率最高肯定是更偏向於預測結果為比例更大的類別。比如說陽性的比例為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://www.jianshu.com/p/403be933dab2

1 數據不平衡問題

這個問題是經常遇到的。就拿有監督的學習的二分類問題來說吧,我們需要正例和負例樣本的標注。如果我們拿到的訓練數據正例很少負例很多,那么直接拿來做分類肯定是不行的。通常需要做以下方案處理:

1.1 數據集角度

通過調整數據集中正負樣本的比例來解決數據不平衡,方法有:

1.1.1 增加正樣本數量

正樣本本來就少,怎么增加呢?方法是直接復制已有的正樣本丟進訓練集。這樣可以稍微緩解正樣本缺失的困境,但是容易帶來一個問題,就是過擬合的潛在危險。因為這樣粗暴的引入正樣本並沒有增加數據集的樣本多樣性。如何設計復制哪些正樣本有一些技巧,比如選擇有特定意義的代表性的那些。

1.1.2 減少負樣本的數量

首先這是一個通用的合理的方法,但是負樣本的減少必然導致數據多樣性的損失。有一種方法可以緩解這個問題,那就是類似於隨機森林方法,每次正樣本數量不變,隨機選擇等量的不同的負樣本進行模型訓練,反復幾次,訓練多個模型,最后所有的模型投票決定最終的分類結果。

1.2 損失函數的角度

可以重新修改模型訓練的損失函數,使得錯分正樣本的損失變大,錯分負樣本的損失變小。這樣訓練出來的模型就會對正負樣本有一個合理的判斷。

更多於此話題相關內容請移步:

分類中數據不平衡問題的解決經驗

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



作者:MapleLeaff
鏈接:http://www.jianshu.com/p/403be933dab2
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

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



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