imbalanced time series classificationhtml
http://www.vipzhuanli.com/pat/books/201510229367.5/2.html?page=2算法
這個專利能夠去國家專利局網站查詢,有具體文檔。網絡
https://www.jianshu.com/p/3e8b9f2764c8app
機器學習已經成爲了當前互聯網領域不可或缺的技術之一,前輩們對機器學習模型的研究已經給咱們留下了一筆很是寶貴的財富,然而在工業界的應用中咱們能夠看到,應用場景千千萬萬,數據千千萬萬可是咱們的模型卻依然是那些,在機器學習的應用中對數據的處理與分析每每扮演着比模型更加劇要的角色,本文針對機器學習應用數據處理的一個方面即「不平衡數據」下的機器學習方法進行了簡單介紹,個人博客。機器學習
不論是在學術界仍是工業界,不平衡學習已經吸引了愈來愈多的關注,不平衡數據的場景也出如今互聯網應用的方方面面,如搜索引擎的點擊預測(點擊的網頁每每佔據很小的比例),電子商務領域的商品推薦(推薦的商品被購買的比例很低),信用卡欺詐檢測,網絡攻擊識別等等。函數
那麼什麼是不平衡數據呢?顧名思義即咱們的數據集樣本類別極不均衡,以二分類問題爲例,假設咱們的數據集是$S$,數據集中的多數類爲$S_maj$,少數類爲$S_min$,一般狀況下把多數類樣本的比例爲$100:1$,$1000:1$,甚至是$10000:1$這種狀況下爲不平衡數據,不平衡數據的學習即須要在如此分佈不均勻的數據集中學習到有用的信息。性能
傳統的學習方法以下降整體分類精度爲目標,將全部樣本一視同仁,同等對待,以下圖1所示,形成了分類器在多數類的分類精度較高而在少數類的分類精度很低。機器學習模型都有一個待優化的損失函數,以咱們最經常使用最簡單的二元分類器邏輯迴歸爲例,其損失函數以下公式1所示,邏輯迴歸以優化整體的精度爲目標,不一樣類別的誤分類狀況產生的偏差是相同的,考慮一個$500:1$的數據集,即便把全部樣本都預測爲多數類其精度也能達到$500/501$之高,很顯然這並非一個很好的學習效果,所以傳統的學習算法在不平衡數據集中具備較大的侷限性。學習
既然傳統的學習算法在不平衡數據中具備較大的侷限性,那麼針對不平衡數據集又有怎樣的解決方案呢?解決方法主要分爲兩個方面,第一種方案主要從數據的角度出發,主要方法爲抽樣,既然咱們的樣本是不平衡的,那麼能夠經過某種策略進行抽樣,從而讓咱們的數據相對均衡一些;第二種方案從算法的角度出發,考慮不一樣誤分類狀況代價的差別性對算法進行優化,使得咱們的算法在不平衡數據下也能有較好的效果。優化
採樣算法經過某一種策略改變樣本的類別分佈,以達到將不平衡分佈的樣本轉化爲相對平衡分佈的樣本的目的,而隨機採樣是採樣算法中最簡單也最直觀易懂的一種方法。隨機採樣主要分爲兩種類型,分別爲隨機欠採樣和隨機過採樣兩種。隨機欠採樣顧名思義即從多數類$S_maj$中隨機選擇少許樣本$E$再合併原有少數類樣本做爲新的訓練數據集,新數據集爲$S_min+E$,隨機欠採樣有兩種類型分別爲有放回和無放回兩種,無放回欠採樣在對多數類某樣本被採樣後不會再被重複採樣,有放回採樣則有可能。隨機過採樣則正好相反,即經過屢次有放回隨機採樣從少數類$S_min$中抽取數據集$E$,採樣的數量要大於原有少數類的數量,最終的訓練集爲$S_maj+E$。網站
能夠看到隨機採樣經過改變多數類或少數類樣本比例以達到修改樣本分佈的目的,從而讓樣本分佈較爲均衡,可是他們也存在一些問題。對於隨機欠採樣,因爲採樣的樣本要少於原樣本集合,所以會形成一些信息缺失,未被採樣的樣本每每帶有很重要的信息。對於隨機過採樣,因爲須要對少數類樣本進行復制所以擴大了數據集,形成模型訓練複雜度加大,另外一方面也容易形成模型的過擬合問題。針對這些問題提出了幾種其它的採樣算法。
SMOTE全稱是Synthetic Minority Oversampling Technique即合成少數類過採樣技術,它是基於隨機過採樣算法的一種改進方案,因爲隨機過採樣採起簡單複製樣本的策略來增長少數類樣本,這樣容易產生模型過擬合的問題,即便得模型學習到的信息過於特別(Specific)而不夠泛化(General),SMOTE算法的基本思想是對少數類樣本進行分析並根據少數類樣本人工合成新樣本添加到數據集中,具體如圖2所示,算法流程以下。
對於每個隨機選出的近鄰$\hat{x}$,分別與原樣本按照以下的公式構建新的樣本。
SMOTE算法摒棄了隨機過採樣複製樣本的作法,能夠防止隨機過採樣易過擬合的問題,實踐證實此方法能夠提升分類器的性能。可是因爲對每一個少數類樣本都生成新樣本,所以容易發生生成樣本重疊(Overlapping)的問題,爲了解決SMOTE算法的這一缺點提出一些改進算法,其中的一種是Borderline-SMOTE算法,如圖3所示。
在Borderline-SMOTE中,若少數類樣本的每一個樣本$x_i$求k近鄰,記做$S_i-knn$,且$S_i-knn$屬於整個樣本集合$S$而再也不是少數類樣本,若知足
既然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$。依次迭代直到知足某一中止條件,最終的模型是屢次迭代模型的組合。
採樣算法從數據層面解決不平衡數據的學習問題,在算法層面上解決不平衡數據學習的方法主要是基於代價敏感學習算法(Cost-Sensitive Learning),代價敏感學習方法的核心要素是代價矩陣,咱們注意到在實際的應用中不一樣類型的誤分類狀況致使的代價是不同的,例如在醫療中,「將病人誤疹爲健康人」和「將健康人誤疹爲病人」的代價不一樣;在信用卡盜用檢測中,「將盜用誤認爲正常使用」與「將正常使用識破認爲盜用」的代價也不相同,所以咱們定義代價矩陣以下圖5所示。標記$C_ij$爲將類別j誤分類爲類別i的代價,顯然$C_00=C_11=0$,$C_01,C_10$爲兩種不一樣的誤分類代價,當二者相等時爲代價不敏感的學習問題。
基於以上代價矩陣的分析,代價敏感學習方法主要有如下三種實現方式,分別是:
從貝葉斯風險理論出發,把代價敏感學習當作是分類結果的一種後處理,按照傳統方法學習到一個模型,以實現損失最小爲目標對結果進行調整,優化公式以下所示。此方法的優勢在於它能夠不依賴所用具體的分類器,可是缺點也很明顯它要求分類器輸出值爲機率。
讓咱們先來簡單回顧一下Adaboost算法,以下圖6所示。Adaboost算法經過反覆迭代,每一輪迭代學習到一個分類器,並根據當前分類器的表現更新樣本的權重,如圖中紅框所示,其更新策略爲正確分類樣本權重下降,錯誤分類樣本權重加大,最終的模型是屢次迭代模型的一個加權線性組合,分類越準確的分類器將會得到越大的權重。
AdaCost算法修改了Adaboost算法的權重更新策略,其基本思想是對於代價高的誤分類樣本大大地提升其權重,而對於代價高的正確分類樣本適當地下降其權重,使其權重下降相對較小。整體思想是代價高樣本權重增長得大下降得慢。其樣本權重按照以下公式進行更新。其中$\beta_+$和$\beta_-$分別表示樣本被正確和錯誤分類狀況下$\beta$的取值。
正確率和F值的計算都是基於混淆矩陣(Confusion Matrix)的,混淆矩陣以下圖7所示,每行表明預測狀況,每列表明實際類別,TP,FP,FN,TN分別表明正類正確分類數量,預測爲正類可是真實爲負類,預測爲負類可是真實爲正類,負類正確分類數量。
正確率(Accuracy)和F值的計算以下式所示。可見正確率或錯誤率並不能表示不平衡數據下模型的表現,對於不平衡數據即便所有預測爲多數類也能夠達到較高的正確率較低的錯誤率,而F值同時考慮到了少數類的準確率和召回率,所以能衡量不平衡數據下模型的表現,其中$\beta$取值一般爲1。
G-Mean是另一個指標,也能評價不平衡數據的模型表現,其計算公式以下。
爲了介紹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是衡量模型表現好壞的一個重要指標。
本文介紹了不平衡數據下學習的經常使用方法及其評價指標,方法主要從數據和模型兩個層面考慮,數據方面的方法主要爲採樣算法,模型方面主要基於代價敏感學習。本文主要來源於論文「Learning from Imbalanced Data」,藉着組會主講的契機做了總結分享給各位,感謝師姐精美的PPT給了我不少靈感。