【機器學習】非平衡數據集的機器學習常用處理方法

本文轉自http://blog.csdn.net/chenriwei2/article/details/49227205

定義:不平衡數據集:在分類等問題中,正負樣本,或者各個類別的樣本數目不一致。

例子:在人臉檢測中,比如訓練庫有10萬張人臉圖像,其中9萬沒有包含人臉,1萬包含人臉,這個數據集就是典型的不平衡數據集。
直觀的影響就是,用這些不平衡的數據訓練出來的模型,其預測結果偏向於訓練數據中數據比較多的那一類,在人臉檢測的例子中,就是檢測器的檢測結果大部分都偏向於沒有檢測到人臉圖像。
另外一個不平衡數據集,就是信用卡欺詐交易,如果平均的抽取數據,則大部分的數據都是非欺詐交易,只有非常少的部分數據是欺詐交易

影響:不平衡的數據集上做訓練和測試,其得到的準確率是虛高的,比如在不平衡數據中,正負樣本的比例爲9:1時,當它的精度爲90%時,我們很有理由懷疑它將所有的類別都判斷爲數據多的那一類。

解決方法:8種

1.收集更多的數據: 好處:更夠揭露數據類別的本質差別,增加樣本少的數目以便後面的數據重採樣。

2.嘗試改變性能評價標準:
當數據不平衡時,準確度已經失去了它原有的意義,
可以參考的度量標準有:1> 混淆矩陣CM 2>精度 3>召回率 4>F1 分數(權衡精度和召回率);5.Kappa 6,ROC曲線

3.重採樣數據:
1,拷貝一部分樣本偏少的數據多分,已達到平衡(過採樣);
2,刪除一部分樣本偏多的數據,以使得達到平衡(欠採樣);
在實際中,過採樣和欠採樣都會使用的。
在測試中,如果樣本總數比較多,可以用欠採樣的數據進行測試,如果樣本總數比較少,可以用過採樣的數據進行測試;另外應該測試隨機採樣的數據和非隨機採樣的數據,同時,測試不同比例正負樣本的數據。

4.生成合成數據:
最簡單的是,隨機採樣樣本數目比較少的屬性,
另外一個比較出名的方法爲:SMOTE:它是一種過採樣的方法,它從樣本比較少的類別中創建新的樣本實例,一般,它從相近的幾個樣本中,隨機的擾動一個特徵,

5.使用不同的算法:
不要試圖用一個方法解所有的問題,嘗試一些其他不同的方法,比如決策樹一般在不平衡數據集上表現的比較的好。

6.嘗試懲罰模型:
意思就是添加新的懲罰項到cost函數中,以使得小樣本的類別被判斷錯誤的cost更大,迫使模型重視小樣本的數據。
比如:帶懲罰項的SVM

7.使用不同的視角:
不平衡的數據集,有專門的鄰域和算法做這個,可以參考他們的做法和術語。
比如:異常檢測。

8.嘗試新的改進:
比如:1.把樣本比較多的類別,分解爲一些更多的小類別,比如:原始我們想區分數字0和其它數字這二分類問題,我們可以把其它數字在分爲9類,變成0–9的分類問題;

以上材料主要是學習這篇博客 並結合自己平時應用的筆記


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章