不平衡數據下的機器學習方法簡介 imbalanced time series classification
imbalanced time series classification
http://www.vipzhuanli.com/pat/books/201510229367.5/2.html?page=2
這個專利可以去國家專利局網站查詢,有具體文檔。
https://www.jianshu.com/p/3e8b9f2764c8
機器學習已經成為了當前互聯網領域不可或缺的技術之一,前輩們對機器學習模型的研究已經給我們留下了一筆非常寶貴的財富,然而在工業界的應用中我們可以看到,應用場景千千萬萬,數據千千萬萬但是我們的模型卻依然是那些,在機器學習的應用中對數據的處理與分析往往扮演著比模型更加重要的角色,本文針對機器學習應用數據處理的一個方面即“不平衡數據”下的機器學習方法進行了簡單介紹,我的博客。
引言
不管是在學術界還是工業界,不平衡學習已經吸引了越來越多的關註,不平衡數據的場景也出現在互聯網應用的方方面面,如搜索引擎的點擊預測(點擊的網頁往往占據很小的比例),電子商務領域的商品推薦(推薦的商品被購買的比例很低),信用卡欺詐檢測,網絡攻擊識別等等。
問題定義
那麽什麽是不平衡數據呢?顧名思義即我們的數據集樣本類別極不均衡,以二分類問題為例,假設我們的數據集是$S$,數據集中的多數類為$S_maj$,少數類為$S_min$,通常情況下把多數類樣本的比例為$100:1$,$1000:1$,甚至是$10000:1$這種情況下為不平衡數據,不平衡數據的學習即需要在如此分布不均勻的數據集中學習到有用的信息。
為什麽不平衡學習
傳統的學習方法以降低總體分類精度為目標,將所有樣本一視同仁,同等對待,如下圖1所示,造成了分類器在多數類的分類精度較高而在少數類的分類精度很低。機器學習模型都有一個待優化的損失函數,以我們最常用最簡單的二元分類器邏輯回歸為例,其損失函數如下公式1所示,邏輯回歸以優化總體的精度為目標,不同類別的誤分類情況產生的誤差是相同的,考慮一個$500:1$的數據集,即使把所有樣本都預測為多數類其精度也能達到$500/501$之高,很顯然這並不是一個很好的學習效果,因此傳統的學習算法在不平衡數據集中具有較大的局限性。
圖1 傳統學習在不平衡數據下的缺點
不平衡學習的方法
既然傳統的學習算法在不平衡數據中具有較大的局限性,那麽針對不平衡數據集又有怎樣的解決方案呢?解決方法主要分為兩個方面,第一種方案主要從數據的角度出發,主要方法為抽樣,既然我們的樣本是不平衡的,那麽可以通過某種策略進行抽樣,從而讓我們的數據相對均衡一些;第二種方案從算法的角度出發,考慮不同誤分類情況代價的差異性對算法進行優化,使得我們的算法在不平衡數據下也能有較好的效果。
采樣
隨機采樣
采樣算法通過某一種策略改變樣本的類別分布,以達到將不平衡分布的樣本轉化為相對平衡分布的樣本的目的,而隨機采樣是采樣算法中最簡單也最直觀易懂的一種方法。隨機采樣主要分為兩種類型,分別為隨機欠采樣和隨機過采樣兩種。隨機欠采樣顧名思義即從多數類$S_maj$中隨機選擇少量樣本$E$再合並原有少數類樣本作為新的訓練數據集,新數據集為$S_min+E$,隨機欠采樣有兩種類型分別為有放回和無放回兩種,無放回欠采樣在對多數類某樣本被采樣後不會再被重復采樣,有放回采樣則有可能。隨機過采樣則正好相反,即通過多次有放回隨機采樣從少數類$S_min$中抽取數據集$E$,采樣的數量要大於原有少數類的數量,最終的訓練集為$S_maj+E$。
可以看到隨機采樣通過改變多數類或少數類樣本比例以達到修改樣本分布的目的,從而讓樣本分布較為均衡,但是他們也存在一些問題。對於隨機欠采樣,由於采樣的樣本要少於原樣本集合,因此會造成一些信息缺失,未被采樣的樣本往往帶有很重要的信息。對於隨機過采樣,由於需要對少數類樣本進行復制因此擴大了數據集,造成模型訓練復雜度加大,另一方面也容易造成模型的過擬合問題。針對這些問題提出了幾種其它的采樣算法。
SMOTE算法
SMOTE全稱是Synthetic Minority Oversampling Technique即合成少數類過采樣技術,它是基於隨機過采樣算法的一種改進方案,由於隨機過采樣采取簡單復制樣本的策略來增加少數類樣本,這樣容易產生模型過擬合的問題,即使得模型學習到的信息過於特別(Specific)而不夠泛化(General),SMOTE算法的基本思想是對少數類樣本進行分析並根據少數類樣本人工合成新樣本添加到數據集中,具體如圖2所示,算法流程如下。
- 對於少數類中每一個樣本$x$,以歐氏距離為標準計算它到少數類樣本集$S_min$中所有樣本的距離,得到其k近鄰。
- 根據樣本不平衡比例設置一個采樣比例以確定采樣倍率$N$,對於每一個少數類樣本$x$,從其k近鄰中隨機選擇若幹個樣本,假設選擇的近鄰為$\hat{x}$。
-
對於每一個隨機選出的近鄰$\hat{x}$,分別與原樣本按照如下的公式構建新的樣本。
圖2 SMOTE算法
SMOTE算法摒棄了隨機過采樣復制樣本的做法,可以防止隨機過采樣易過擬合的問題,實踐證明此方法可以提高分類器的性能。但是由於對每個少數類樣本都生成新樣本,因此容易發生生成樣本重疊(Overlapping)的問題,為了解決SMOTE算法的這一缺點提出一些改進算法,其中的一種是Borderline-SMOTE算法,如圖3所示。
在Borderline-SMOTE中,若少數類樣本的每個樣本$x_i$求k近鄰,記作$S_i-knn$,且$S_i-knn$屬於整個樣本集合$S$而不再是少數類樣本,若滿足
則將樣本$x_i$加入DANGER集合,顯然DANGER集合代表了接近分類邊界的樣本,將DANGER當作SMOTE種子樣本的輸入生成新樣本。特別地,當上述條件取右邊界,即k近鄰中全部樣本都是多數類時,此樣本不會被選擇為種樣本生成新樣本,此情況下的樣本為噪音。
圖3 Borderline-SMOTE算法
Informed Undersampling
既然SMOTE可以解決隨機過采樣容易發生的模型過擬合問題,對應地也有一些采樣方法可以解決隨機欠采樣造成的數據信息丟失問題,答案是Informed undersampling采樣技術,informed undersampling采樣技術主要有兩種方法分別是EasyEnsemble算法和BalanceCascade算法。
EasyEnsemble算法如下圖4所示,此算法類似於隨機森林的Bagging方法,它把數據劃分為兩部分,分別是多數類樣本和少數類樣本,對於多數類樣本$S_maj$,通過n次有放回抽樣生成n份子集,少數類樣本分別和這n份樣本合並訓練一個模型,這樣可以得到n個模型,最終的模型是這n個模型預測結果的平均值。BalanceCascade算法是一種級聯算法,BalanceCascade從多數類$S_maj$中有效地選擇N且滿足$\midN\mid=\midS_min\mid$,將N和$\S_min$合並為新的數據集進行訓練,新訓練集對每個多數類樣本$x_i$進行預測若預測對則$S_maj=S_maj-x_i$。依次叠代直到滿足某一停止條件,最終的模型是多次叠代模型的組合。
圖4 EasyEsemble算法
代價敏感學習
代價矩陣
采樣算法從數據層面解決不平衡數據的學習問題,在算法層面上解決不平衡數據學習的方法主要是基於代價敏感學習算法(Cost-Sensitive Learning),代價敏感學習方法的核心要素是代價矩陣,我們註意到在實際的應用中不同類型的誤分類情況導致的代價是不一樣的,例如在醫療中,“將病人誤疹為健康人”和“將健康人誤疹為病人”的代價不同;在信用卡盜用檢測中,“將盜用誤認為正常使用”與“將正常使用識破認為盜用”的代價也不相同,因此我們定義代價矩陣如下圖5所示。標記$C_ij$為將類別j誤分類為類別i的代價,顯然$C_00=C_11=0$,$C_01,C_10$為兩種不同的誤分類代價,當兩者相等時為代價不敏感的學習問題。
圖5 代價矩陣
代價敏感學習方法
基於以上代價矩陣的分析,代價敏感學習方法主要有以下三種實現方式,分別是:
- 從學習模型出發,著眼於對某一具體學習方法的改造,使之能適應不平衡數據下的學習,研究者們針對不同的學習模型如感知機,支持向量機,決策樹,神經網絡等分別提出了其代價敏感的版本。以代價敏感的決策樹為例,可從三個方面對其進行改進以適應不平衡數據的學習,這三個方面分別是決策閾值的選擇方面、分裂標準的選擇方面、剪枝方面,這三個方面中都可以將代價矩陣引入,具體實現算法可參考參考文獻中的相關文章。
-
從貝葉斯風險理論出發,把代價敏感學習看成是分類結果的一種後處理,按照傳統方法學習到一個模型,以實現損失最小為目標對結果進行調整,優化公式如下所示。此方法的優點在於它可以不依賴所用具體的分類器,但是缺點也很明顯它要求分類器輸出值為概率。
- 從預處理的角度出發,將代價用於權重的調整,使得分類器滿足代價敏感的特性,下面講解一種基於Adaboost的權重更新策略。
AdaCost算法
讓我們先來簡單回顧一下Adaboost算法,如下圖6所示。Adaboost算法通過反復叠代,每一輪叠代學習到一個分類器,並根據當前分類器的表現更新樣本的權重,如圖中紅框所示,其更新策略為正確分類樣本權重降低,錯誤分類樣本權重加大,最終的模型是多次叠代模型的一個加權線性組合,分類越準確的分類器將會獲得越大的權重。
圖6 Adaboost算法
AdaCost算法修改了Adaboost算法的權重更新策略,其基本思想是對於代價高的誤分類樣本大大地提高其權重,而對於代價高的正確分類樣本適當地降低其權重,使其權重降低相對較小。總體思想是代價高樣本權重增加得大降低得慢。其樣本權重按照如下公式進行更新。其中$\beta_+$和$\beta_-$分別表示樣本被正確和錯誤分類情況下$\beta$的取值。
不平衡學習的評價方法
正確率和F值
正確率和F值的計算都是基於混淆矩陣(Confusion Matrix)的,混淆矩陣如下圖7所示,每行代表預測情況,每列代表實際類別,TP,FP,FN,TN分別代表正類正確分類數量,預測為正類但是真實為負類,預測為負類但是真實為正類,負類正確分類數量。
圖7 混淆矩陣
正確率(Accuracy)和F值的計算如下式所示。可見正確率或錯誤率並不能表示不平衡數據下模型的表現,對於不平衡數據即使全部預測為多數類也可以達到較高的正確率較低的錯誤率,而F值同時考慮到了少數類的準確率和召回率,因此能衡量不平衡數據下模型的表現,其中$\beta$取值通常為1。
G-Mean
G-Mean是另外一個指標,也能評價不平衡數據的模型表現,其計算公式如下。
ROC曲線和AUC
為了介紹ROC曲線首先引入兩個是,分別是FP_rate和TP_rate,它們分別表示1-負類召回率和正類召回率,顯然模型表示最好的時候FP_rate=0且TP_rate=1,我們以FP_rate為橫坐標,TP_rate為縱坐標可以得到點(FP_rate,TP_rate),通過調整模型預測的閾值可以得到不同的點,將這些點可以連成一條曲線,這條曲線叫做接受者工作特征曲線(Receiver Operating Characteristic Curve,簡稱ROC曲線)如下圖8所示。顯然A點為最優點,ROC曲線越靠近A點代表模型表現越好,曲線下面積(Area Under Curve, AUC)越大,AUC是衡量模型表現好壞的一個重要指標。
圖8 ROC曲線
總結
本文介紹了不平衡數據下學習的常用方法及其評價指標,方法主要從數據和模型兩個層面考慮,數據方面的方法主要為采樣算法,模型方面主要基於代價敏感學習。本文主要來源於論文“Learning from Imbalanced Data”,借著組會主講的契機作了總結分享給各位,感謝師姐精美的PPT給了我很多靈感。
作者:練緒寶
鏈接:https://www.jianshu.com/p/3e8b9f2764c8
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並註明出處。
不平衡數據下的機器學習方法簡介 imbalanced time series classification