1. 程式人生 > >處理不平衡資料的技巧總結!

處理不平衡資料的技巧總結!

概念

類別資料不均衡是分類任務中一個典型的存在的問題。簡而言之,即資料集中,每個類別下的樣本數目相差很大。例如,在一個二分類問題中,共有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

下采樣

雖然重取樣在一些資料集上取得了不錯的效果 , 但是這類方法也存在一些缺陷 .上取樣方法並不增加任何新的資料 , 只是重複一些樣本或增加一些 人工生成的稀有類樣本 , 增加了訓練時間 .更危險的是 ,上取樣複製某些稀有類樣本 , 或者在它周圍生成新的稀有類樣本,使得分類器過分注重這些樣本,導致過學習.上取樣不能從本質上解決稀有類樣 本的稀缺性和資料表示的不充分性 , 因此有人指出它的效能不如下采樣.下采樣在去除大類樣本的時候 , 容易去除重要的樣本資訊 .雖然有些啟發式的下采樣方法 , 只是去除冗餘樣本和噪聲樣本,但是多數情況下這類樣本只是小部分 ,因此這種方法能夠調整的不平衡度相當有限 .

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 曲 線的例子。

這裡寫圖片描述