1. 數據不平衡的數據處理
2. 數據不平衡的分類器評價指標
1. 前言
什么是不平衡數據呢?顧名思義即我們的數據集樣本類別比例不均衡。數據不平衡問題主要存在於有監督機器學習任務中。當遇到不平衡數據時,以總體分類准確率為學習目標的傳統分類算法會過多地關注多數類,從而使得少數類樣本的分類性能下降。絕大多數常見的機器學習算法對於不平衡數據集都不能很好地工作。
1.1 數據不平衡例子
不平衡數據的場景出現在互聯網應用的方方面面,如搜索引擎的點擊預測(點擊的網頁往往占據很小的比例)、電子商務領域的商品推薦(推薦的商品被購買的比例很低)、信用卡欺詐檢測、網絡攻擊識別、癌症檢測等等。
主要有以下幾種處理數據不平衡的方法
2. 數據層面
2.1 重采樣
2.1.1 欠采樣(下采樣)
欠采樣是通過減少豐富類的大小來平衡數據集,當數據量足夠時就該使用此方法。通過保存所有稀有類樣本,並在豐富類別中隨機選擇與稀有類別樣本相等數量的樣本,然后根據平衡的新數據集以進一步建模。
2.1.2 過采樣(上采樣)
當數據量不足時主要使用過采樣,它嘗試通過增加稀有樣本的數量來平衡數據集,而不是去除豐富類別的樣本的數量。通過使用重復、自舉或合成少數類過采樣等方法(SMOTE)來生成新的稀有樣品。
2.2 增加權值
首先根據代價敏感學習,學習一個合理的類別樣本分布比例(相當於不同類別的權值)。然后將大類樣本隨機划分成一系列不相交子集。這些子集的大小由稀有類樣本集的數量和預先學習的樣本分布比例決定。接下來分別將這些不相交子集跟稀有類樣本結合,組成一系列平衡的分類子問題,單獨訓練成子分類器。最后將這些子分類器的輸出進一步學習成組合分類器。這種方法在信用卡非法使用檢測問題上大大降低了總代價。
3. 算法層面
集成方法
- 平衡隨機森林的方法,該方法對正類和反類分別進行重采樣,重采樣多次后采用多數投票的方法進行集成學習。
- 將boosting算法與SMOTE算法結合成SMOTEBoost算法,該算法每次迭代使用SMOTE生成新的樣本,取代原有AdaBoost算法中對樣本權值的調整,使得Boosting算法專注於正類中的難分樣本。
代價敏感方法
在大部分不平衡分類問題中,稀有類是分類的重點。在這種情況下,正確識別出稀有類的樣本比識別大類的樣本更有價值。反過來說,錯分稀有類的樣本需要付出更大的代價。代價敏感學習賦予各個類別不同的錯分代價(Cost),它能很好地解決不平衡分類問題。以二分類問題為例,假設正類是稀有類,並具有更高的錯分代價,則分類器在訓練時,會對錯分正類樣本做更大的懲罰迫使最終分類器對正類樣本有更高的識別率。如Metacost和Adacost等算法。
其他方法
一分類(One Class Learning或異常檢測(Novelty Detection)
對於正負樣本極不平衡的場景,我們可以換一個完全不同的角度來看待問題:把它看做一分類(One Class Learning)或異常檢測(Novelty Detection)問題。這類方法的重點不在於捕捉類間的差別,而是為其中一類進行建模,經典的工作包括One-class SVM等。調整SVM以懲罰稀有類別的錯誤分類。
處理的經驗
- 在正負樣本都非常之少的情況下,應該采用數據合成的方式;
- 在負樣本足夠多,正樣本非常之少且比例及其懸殊的情況下,應該考慮一分類方法(癌症檢測);
- 在正負樣本都足夠多且比例不是特別懸殊的情況下,應該考慮采樣或者加權的方法。