寫在前面:首先需要明確了解的是正負樣本比例懸殊不是本質原因,而是表象,不均衡導致模型表現差的本質原因是;1.類別分布的重疊,簡單來說就是不同類別的特非常接近,或者更極端的是特征沒差的情況下標簽卻不同;2.噪聲問題,很多完全沒用的樣本被引入,比如因為一些意外的原因標注錯誤的樣本等;3.類別分布的子分布,舉個例子:異常檢測問題很多時候按照異常與正常分為兩類,實際上異常樣本可能有不同形式的異常,例如異常用戶中可能由欺詐用戶、普通的老賴、死亡用戶等,這些用戶的分布可能差異性很大,但卻被業務或者標注人員統一標注為異常類,換句話說,這些問題在比例正常的數據集中也會出現,但是在正負樣本比例懸殊並且正樣本數量特別稀少的情況下這種現象很經常發生。
概念
類別數據不均衡是分類任務中一個典型的存在的問題。簡而言之,即數據集中,每個類別下的樣本數目相差很大。例如,在一個二分類問題中,共有100個樣本(100行數據,每一行數據為一個樣本的表征),其中80個樣本屬於class 1,其余的20個樣本屬於class 2,class 1:class2=80:20=4:1,這便屬於類別不均衡。當然,類別不均衡問同樣會發生在多分類任務中。它們的解決方法是一樣的。
現實中有很多類別不均衡問題,它是常見的,並且也是合理的,符合人們期望的。如,在欺詐交易識別中,屬於欺詐交易的應該是很少部分,即絕大部分交易是正常的,只有極少部分的交易屬於欺詐交易。這就是一個正常的類別不均衡問題。又如,在客戶流失的數據集中,絕大部分的客戶是會繼續享受其服務的(非流失對象),只有極少數部分的客戶不會再繼續享受其服務(流失對象)。一般而已,如果類別不平衡比例超過4:1,那么其分類器會大大地因為數據不平衡性而無法滿足分類要求的。因此在構建分類模型之前,需要對分類不均衡性問題進行處理。
解決方案
迄今為止 , 解決不平衡分類問題的策略可以分 為兩大類 .一類是從訓練集入手 , 通過改變訓練集樣本分布 ,降低不平衡程度 .另一類是從學習算法入手 , 根據算法在解決不平衡問題時的缺陷 , 適當地修改算法使之適應不平衡分類問題 .平衡訓練集的方法主要有訓練集重采樣 (re-sampling)方法和訓練集划分方法 .學習算法層面的策略包括分類器集成 、代價敏感學習和特征選擇方法等 .
一、數據層面
1、重采樣
重采樣方法是通過增加稀有類訓練樣本數的上采樣 (up-sampling)和減少大類樣本數的下采樣(down-samplings)使不平衡的樣本分布變得比較平衡,從而提高分類器對稀有類的識別率 .
上采樣
最原始的上采樣方法是復制稀有類的樣本 , 但是這樣做容易導致過學習, 並且對提高稀有類識 別率沒有太大幫助 .較高級的上采樣方法則采用一些啟發式技巧 , 有選擇地復制稀有類樣本 , 或者生成新的稀有類樣本。Chawla等人提出的SMOTE算法是一種簡單有效的上采樣方法,該方法首先為每個稀有類樣本隨機選出幾個鄰近樣本,並且在該樣本與這些鄰近的樣本的連線上隨機取點,生成無重復的新的稀有類樣本。還有一些其他的方法,如添加隨機噪聲,還有一些其他的研究,具體可以看相關論文。
這里有SMOTE算法的多個不同語言的實現版本:
* Python: UnbalancedDataset模塊提供了SMOTE算法的多種不同實現版本,以及多種重采樣算法。
* R: DMwR package。
* Weka: SMOTE supervised filter。
下采樣
下采樣通過舍棄部分大類樣本的方法 , 降低不平衡程度 .Kubat和MatwinAddressing the Curse of Imbalanced Training Sets: One-Sided Selection采用單邊采樣方式,去除大類中的噪音樣本 、邊界樣本和冗余樣本 .Chen等人Pruning support vectors for imbalanced data classification則通過修剪大類的支持向量,達到平衡支持向量個數的目的,從而提高稀有類的識別率 .Raskutti和KowalczykRaskutti B, Kowalczyk A. Extreme Re-balancing for SVMs: A Case Study. 同時考慮上采樣和下采樣 , 並且擴展到一類學習 , 即只采用一類的樣本作為訓練集 , 因此不存在不平衡分類問題 .Estabroks和JapkowicA Mixture-of-Experts Framework for Learning from Imbalanced Data Sets同時采用上采樣和下采樣以及不同的采樣率,獲得大量的子分類器 , 並使用混合專家
(mixture-of-experts)學習框架將這些子分類器集成 . 他們的結果顯示,這種方法比普通的 AdaBost有更好的分類效果 , 但並不清楚到底是上采樣還是下采樣更有效 , 也不清楚哪種采樣率最合適 .
雖然重采樣在一些數據集上取得了不錯的效果 , 但是這類方法也存在一些缺陷 .上采樣方法並不增加任何新的數據 , 只是重復一些樣本或增加一些 人工生成的稀有類樣本 , 增加了訓練時間 .更危險的是 ,上采樣復制某些稀有類樣本 , 或者在它周圍生成新的稀有類樣本,使得分類器過分注重這些樣本,導致過學習.上采樣不能從本質上解決稀有類樣 本的稀缺性和數據表示的不充分性 , 因此有人指出它的性能不如下采樣.下采樣在去除大類樣本的時候 , 容易去除重要的樣本信息 .雖然有些啟發式的下采樣方法 , 只是去除冗余樣本和噪聲樣本,但是多數情況下這類樣本只是小部分 ,因此這種方法能夠調整的不平衡度相當有限 .
2、訓練集划分方法
對訓練數據集進行划分 , 是另一種有效的訓練
集平衡方法 .Chan 和 StolfoToward Scalable Learning with Non-uniform Class and Cost Distributions: A Case Study in Credit Card Fraud Detection
首先根據代價敏感學習的需要 ,學習一個合理的類別樣本分布比例 .然后將大類樣本隨機划分成一系列不相交子集 .這些子 集的大小由稀有類樣本集的數量和預先學習的樣本 分布比例決定 .接下來分別將這些不相交子集跟稀 有類樣本結合 , 組成一系列平衡的分類子問題 , 單獨訓練成子分類器.最后通過元學習 (meta learning) 將這些子分類器的輸出進一步學習成組合分類器 . 這種方法在信用卡非法使用檢測問題上大大降低了總代價.
二、算法層面
1、 分類器集成方法
Chen等 提出了平衡隨機森林的方法 ,該方法對正類和反類分別進行重采樣, 重采樣多次后采用多數投票的方法進行集成學習.Chawla等人將boosting算法與 SMOTE算
法結合成SMOTEBoost算法 , 該算法每次迭代使用SMOTE生成新的樣本 ,取代原有 AdaBoost算法中對樣本權值的調整, 使得Boosting算法專注於正類中的難分樣本
2、 代價敏感方法
在大部分不平衡分類問題中 , 稀有類是分類的重點 .在這種情況下 , 正確識別出稀有類的樣本比識 別大類的樣本更有價值 .反過來說 , 錯分稀有類的樣 本需要付出更大的代價 .代價敏感學習賦予各個類別不同的錯分代價 , 它能很好地解決不平衡分類 問題 .以兩類問題為例 , 假設正類是稀有類 , 並具有 更高的錯分代價 , 則分類器在訓練時 , 會對錯分正類 樣本做更大的懲罰 , 迫使最終分類器對正類樣本有更高的識別率 .如Metacost和Adacost等算法。
代價敏感學習能有效地提高稀有類的識別率 . 但問題是 , 一方面 , 在多數情況下 , 真實的錯分代價 很難被准確地估計.另一方面,雖然許多分類器 可以直接引入代價敏感學習機制 , 如支持向量機和 決策樹 , 但是也有一些分類器不能直接使用代價敏感學習 , 只能通過調整正負樣本比例或者決策閾值間接的實現代價敏感學習,這樣不能保證代價敏感學習的效果。
3、 特征選擇方法
特征選擇方法對於不平衡分類問題同樣具有重要意義 .樣本數量分布很不平衡時,特征的分布同樣會不平衡.尤其在文本分類問題中,在大類中經常出現的特征,也許在稀有類中根本不出現 .因此 ,根據不平衡分類問題的特點 , 選取最具有區分能力的特征 ,有利於提高稀有類的識別率 .
通過采用特征選擇來解決不平衡分類問題主要
集中於自然語言處理領域 .Cardie和 HoweOptimally combining positive and negative features for text categorization
以基於事例學習 (casebasedlearning)的框架為基礎,提出了一種與測試樣本相關的動態特征加權方法 .該方法首先利用訓練集得到一棵決策樹, 然后計算每個測試樣本在測試路徑上的信息收益, 並以此計算每個特征的權值, 最后 , 從訓練集中挑選 k個與測試樣本最接近的樣本 ,並對他們測試類別進行投票 .該方法在提高正類樣本准確率的同時確保了總的准確率不下降
4、其他算法
Wu和 Chang KBA: kernel boundary alignment considering imbalanced data distribution
提出了一種修改支持向量機核
函數矩陣 (kernelmatrix)方法 , 該方法通過將核函數 矩陣進行保角變換(conformaltransformation), 擴大 稀有類特征向量處的邊界 , 從而增加正負類樣本的 分離度 , 減少大類的支持向量數目 , 起到降低不平衡 度的效果 .理論分析和仿真試驗結果表明 , 該方法在 一些不平衡數據集上有比較好的效果 .
一 類 學 習 (one-clas slearning)Estimating the support of a high-dimensional distribution也 被 用 於 處 理 不平衡問題 .當樣本數量不平衡時 , 並且當特征空間 中混雜有大量噪音特征時 , 基於學習單一稀有類樣本的產生式模型 , 相比於學習兩類問題的判別式模型具有更好的性能.
分類器評價指標
在評估分類器的性能和指導分類器建模方面,評估標准發揮了關鍵作用。 在傳統的分類方法中,准確率是常用的指標。 然而在不平衡數據分類中,准確率不再是恰當的指標。 在兩類問題中,正例數目很少但具有很高的識別重要性,另一類為負例。
從該表我們可以得到下列度量指標:
真陽性率:TPrate= TP/(TP+FN)
真陰性率:TNrate=TN/(TN+FP)
假陽性率:FPrate=FP/(TN+FP)
假陰性率:FNrate=FN/(TP+FN)
陽性預測值:PPvalue=TP/(TP+FP)
假性預測值:NPvalue=TN/(TN+FN)
上述度量指標都不能很好的評估不平衡數據分類, 針對不平衡數據分類我們用幾個新的度量指標如下:
(1)F-measure
在信息檢索領域,真陽性率被稱為 recall,
陽性預測值被稱為精確率分別定義如下:
Recall =TPrate =TP/(TP+FN),
Precision =PPvalue = TP/(TP+FP)
F-measure=2×Recall×Precision/(Recall+Precision)
F-measure是 Precision 和 Recall 的調和平均值。 兩個數值的調和平均更加接近兩個數當中較小的那 個, 因此如果要使得 F-measure 很高的話那么 Recall 和 Precision 都必須很高。
(2)G-mean
當兩個類別的性能都需要考慮時,TPrate 和 TNrate 需要同時高,Kubat 等人提出了 G-mean。
G-mean 評估一個學習算法的綜合性能。 根據之前 的研究, 為了能夠獲得盡可能多的關於每個類別對最 終性能的貢獻大小信息,並且考慮到數據的不平衡率, 很多研究者試圖在不平衡領域提出新的度量指標。 如調整G-mean,提出了 Adjusted G-mean
(3)ROC 曲線以及 AUC
ROC 曲線指受試者工作特征曲線(receiver operating characteristic curve), 是反映敏感性和特異性連續 變量的綜合指標,用構圖法揭示敏感性和特異性的相互 關系。 在分類中每個樣本屬於不同類別對應的有概率 值,最終類別預測根據設置的不同概率閾值,類別也會 變化。 每一個閾值對應的有一組衡量指標(FPrate, TPrate),將 FPrate 為 x 軸,TPrate 為 y 軸,在坐標軸上繪 制圖形。 即可得到 ROC 曲線,曲線下方形成的面積即為 AUC。 AUC 從總體上度量了分類器的性能,一 般來說面積越大,算法性能越好。 下圖 是一個 ROC 曲 線的例子。