樣本不平衡問題

2021-09-17 18:43:19 字數 1660 閱讀 8135

樣本不平衡是指:不同類別的樣本差別比較大,比如說正類和負類的樣本比例為50:1。

處理樣本不平衡的原因:

一般而已,如果類別不平衡比例超過4:1,那麼其分類器會大大地因為資料不平衡性而無法滿足分類要求的。因此在構建分類模型之前,需要對分類不均衡性問題進行處理。

在前面,我們使用準確度這個指標來評價分類質量,可以看出,在類別不均衡時,準確度這個評價指標並不能work。因為分類器將所有的樣本都分類到大類下面時,該指標值仍然會很高。即,該分類器偏向了大類這個類別的資料。

解決辦法:

一、增加資料集

(1)在增加資料集的同時不僅增加了小類的樣本個數,同時也增加了大類的樣本個數。

(2)選擇大類樣本中的一部分資料進行訓練。

二、嘗試其它評價指標

混淆矩陣:

精確度:分類正確的樣本數佔樣本總數的比例。

查準率和查全率。

召回率:召回率是覆蓋面的度量,度量有多個正例被分為正例,recall=tp/(tp+fn)=tp/p=sensitive,可以看到召回率與靈敏度是一樣的。

f1得分(f1 score):精確度與找召回率的加權平均。

roc曲線:roc(receiver operating characteristic)曲線是以假正率(fp_rate)和真正率(tp_rate)為軸的曲線,roc曲線下面的面積我們叫做auc,如下圖所示:

三、對資料集進行重取樣

上取樣、下取樣:讓目標值(如0和1分類)中的樣本資料量相同。

下取樣:以資料量少的那一類為標準。獲取資料時一般是從分類樣本多的資料從隨機抽取等數量的樣本。

上取樣:以資料量多的一方的樣本數量為標準,把樣本數量較少的類的樣本數量生成和樣本數量多的一方相同,稱為上取樣。

四、設定懲罰係數

你可以使用相同的分類演算法,但是使用乙個不同的角度,比如你的分類任務是識別那些小類,那麼可以對分類器的小類樣本資料增加權值,降低大類樣本的權值(這種方法其實是產生了新的資料分布,即產生了新的資料集,譯者注),從而使得分類器將重點集中在小類樣本身上。乙個具體做法就是,在訓練分類器時,若分類器將小類樣本分錯時額外增加分類器乙個小類樣本分錯代價,這個額外的代價可以使得分類器更加「關心」小類樣本。如penalized-svm和penalized-lda演算法。

weka中有乙個懲罰模型的通用框架costsensitiveclassifier,它能夠對任何分類器進行封裝,並且使用乙個自定義的懲罰矩陣對分錯的樣本進行懲罰。 

如果你鎖定乙個具體的演算法時,並且無法通過使用重取樣來解決不均衡性問題而得到較差的分類結果。這樣你便可以使用懲罰模型來解決不平衡性問題。但是,設定懲罰矩陣是乙個複雜的事,因此你需要根據你的任務嘗試不同的懲罰矩陣,並選取乙個較好的懲罰矩陣。

參考:

樣本不平衡問題小記

來準備用vgg來做些fine tuning快速交個差,結果半天卡在0.3公升不上去 入行沒多久,不能肯定是方向有問題,找了個pascal voc跑跑分類 結果發現總是卡在0.2左右,在metric.py裡改了幾行 草根就該用mxnet 把predict label和ground truth打出來,發...

機器學習之樣本不平衡

1.樣本不平衡導致什麼問題?在機器學習的分類問題中,以二分類為例,如果訓練集合的正例和負例的樣本不平衡,相差懸殊很大。比如針對這個不平衡的訓練結合運用邏輯回歸的時候,一般來說,邏輯回歸的閾值0 1,常取0.5,當樣本不平衡時,採用預設的分類閾值可能會導致輸出全部為反例,產生虛假的高準確度,導致分類失...

keras中處理樣本不平衡

參考文獻 兩者的區別為 class weight 主要針對的上資料不均衡問題,比如 異常檢測的二項分類問題,異常資料僅佔1 正常資料佔99 此時就要設定不同類對loss的影響。sample weight 主要解決的是樣本質量不同的問題,比如前1000個樣本的可信度,那麼它的權重就要高,後1000個樣...