非平衡資料集的機器學習常用處理方法

李博Garvin發表於2017-09-13

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

例子:在人臉檢測中,比如訓練庫有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的分類問題;


原文:http://blog.csdn.net/chenriwei2/article/details/49227205

相關文章