解決樣本不平衡問題的奇技淫巧 彙總

2021-09-24 07:25:07 字數 1601 閱讀 8562

先舉乙個「恐怖」的例子,直觀的感受一下樣本不平衡問題:

你根據1000個正樣本和1000個負樣本正確訓練出了乙個準確率90%召回率90%的分類器,且通過實驗驗證沒有欠取樣過取樣的問題哦~完美的樣本,完美的模型,破費,你心裡暗自得意。然後模型上線,正式**每天的未知樣本~。

開始一切都很美好,準確率召回率都很好。直到有一天,資料發生了一點變化,還是原來的資料型別和特徵,只是每天新資料中正負樣本變成了100個正樣本,10000個負樣本。注意,先前準確率90%的另一種表達是負樣本有10%的概率被誤檢為正樣本。好了,模型不變,現在誤檢的負樣本數是10000*0.1=1000個,正樣本被檢出100*0.9(召回)=90個,好了,這個時候召回率不變仍為90%,但是新的準確率=90/(1000+90)=8.26% 。震驚嗎!?恐怖嗎!?

結論: 同乙個模型僅僅是改變了驗證集的正負樣本比例,模型已經從可用退化成不可用了!!樣本不平衡問題可怕就可怕在這,往往你的模型引數,訓練,資料,特徵都是對的!能做的都做了,但你的準確率就是上不去!!絕望吧。。。。。。

問題定義:資料集中,每個類別下的樣本數目相差很大(數量級上的差距)。以下以二分類問題為例說明。

1. smote(synthetic minority over-sampling technique)過取樣小樣本(擴充小類,產生新資料)

即該演算法構造的資料是新樣本,原資料集中不存在的。該基於距離度量選擇小類別下兩個或者更多的相似樣本,然後選擇其中乙個樣本,並隨機選擇一定數量的鄰居樣本對選擇的那個樣本的乙個屬性增加雜訊,每次處理乙個屬性。這樣就構造了更多的新生資料。(優點是相當於合理地對小樣本的分類平面進行的一定程度的外擴;也相當於對小類錯分進行加權懲罰(解釋見3))

2. 欠取樣大樣本(壓縮大類,產生新資料)

設小類中有n個樣本。將大類聚類成n個簇,然後使用每個簇的中心組成大類中的n個樣本,加上小類中所有的樣本進行訓練。(優點是保留了大類在特徵空間的分布特性,又降低了大類資料的數目)

3. 對小類錯分進行加權懲罰

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

對小樣本進行過取樣(例如含l倍的重複資料),其實在計算小樣本錯分cost functions時會累加l倍的懲罰分數。

4. 分治ensemble

將大類中樣本聚類到l個聚類中,然後訓練l個分類器;每個分類器使用大類中的乙個簇與所有的小類樣本進行訓練得到;最後對這l個分類器採取少數服從多數對未知類別資料進行分類,如果是連續值(**),那麼採用平均值。

5. 分層級ensemble

使用原始資料集訓練第乙個學習器l1;將l1錯分的資料集作為新的資料集訓練l2;將l1和l2分類結果不一致的資料作為資料集訓練l3;最後測試集上將三個分類器的結果彙總(結合這三個分類器,採用投票的方式來決定分類結果,因此只有當l2與l3都分類為false時,最終結果才為false,否則true。)

6. 基於異常檢測的分類

用異常檢測演算法(如高斯混合模型、聚類等)檢測得到離群點或異常點;再對這些異常點為訓練集學習乙個分類器。

解決樣本不平衡問題的奇技淫巧 彙總

先舉乙個 恐怖 的例子,直觀的感受一下樣本不平衡問題 你根據1000個正樣本和1000個負樣本正確訓練出了乙個準確率 precison,下同 90 召回率 recall,下同 90 的分類器,且通過實驗驗證沒有欠取樣過取樣的問題哦 完美的樣本,完美的模型,破費,你心裡暗自得意。然後模型上線,正式 每...

樣本不平衡問題

樣本不平衡是指 不同類別的樣本差別比較大,比如說正類和負類的樣本比例為50 1。處理樣本不平衡的原因 一般而已,如果類別不平衡比例超過4 1,那麼其分類器會大大地因為資料不平衡性而無法滿足分類要求的。因此在構建分類模型之前,需要對分類不均衡性問題進行處理。在前面,我們使用準確度這個指標來評價分類質量...

樣本不平衡問題小記

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