不平衡學習是機器學習問題的一個重要子域,其主要關注於如何從類別分佈不均衡的資料中學習資料的模式。在這篇文章中我們主要關注不平衡分類問題,特別地,我們主要關注類別極端不平衡場景下的二分類問題所面臨的困難。
在這篇文章中我們將:
描述類別不平衡的定義與實際應用場景
給出不平衡場景下常用的評價指標
討論不平衡場景下分類器學習困難的來源
概覽已有的不平衡學習方法並分析其優劣
給出一些直覺的視覺化來幫助理解不平衡學習過程
給出一些場景/模型選擇中的個人經驗
為簡潔起見,文中出現的Min代表少數類樣本(正類,positive,y=1),Maj代表多數類樣本(負類,negative,y=0)
問題概述
當一個分類任務的資料集中來自不同類別的樣本數目相差懸殊時,我們通常稱該資料集為“類別不平衡”的。以一個現實任務為例:在點選率預估(click-through rate prediction)任務中,每條展示給使用者的廣告都產生一條新樣本,而使用者最終是否點選了這條廣告決定了樣本的標籤。顯然,只有很少一部分的使用者會去點選網頁裡的嵌入廣告,這就導致最終得到的訓練資料集中正/負例樣本的數量差距懸殊。同樣的情況也發生在很多實際應用場景中,如金融欺詐檢測(正常/欺詐),醫療輔助診斷(正常/患病),網路入侵檢測(正常連線/攻擊連線)等等[1,2,3]。 需要注意的是,儘管少數類的樣本個數更少,表示的質量也更差,但其通常會攜帶更重要的資訊,因此一般我們更關注模型正確分類少數類樣本的能力。
分類問題的一個underlying assumption是各個類別的資料都有自己的分佈,當某類資料少到難以觀察結構的時候,我們可以考慮拋棄該類資料,轉而學習更為明顯的多數類模式,而後將不符合多數類模式的樣本判斷為異常/少數類,某些時候會有更好的效果。此時該問題退化為異常檢測(anomaly detection)問題。
有關異常檢測 (Anomaly detection)
Anomaly detection 除數值分析類方法外,同樣有一系列的經典方法;如One-class SVM 及其派生的One-class NN,Isolation Forest,以及一系列Auto Encoder-Decoder based methods (One class NN 某種意義上也屬於此類)。 由於只關心多數類的分佈,這些方法一般為unsupervised / weakly-supervised,只使用單類別資料訓練。
基本符號
在二元不平衡分類中,資料集中只存在兩個類別:少數類,即樣本數量較少的類,與多數類,即樣本數量相對較多的類別。我們使用D來表示全部訓練資料樣本的集合,每一個樣本用(x, y)表示,其中 y ∈ {0, 1}。在二分類條件下,y取值為1代表該樣本屬於正類(少數類),為0則代表該樣本屬於負類(多數類)。
由此我們可以定義少數類集合:
及多數類集合:
從而有:
由此,對於(高度)不平衡的資料集我們有 。為了以統一的形式描述不同資料集的不平衡程度,我們定義不平衡比IR(Imbalance Ratio)為多數類樣本數量與少數類樣本數量的比值:
模型評價準則
對於一般的機器學習方法,最常見的評價指標無疑是分類準確度ACC (accuracy),ACC的含義非常直觀並且在通常情況下都很有效。然而對於不平衡的分類任務,ACC並不能很好地反映分類器的效能。考慮以下情況:一個含有10000條樣本的資料集,其中 。此時一個將所有樣本都判斷成多數類樣本的分類器能夠獲得99%的分類準確率,這是一個相當高的分數,但給一個完全無法區分出少數類樣本的分類器如此高的分數顯然是不合理的。由於ACC等傳統評價指標的特性,在資料分佈不平衡時其往往會導致分類器的輸出傾向於在資料集中佔多數的類別:輸出多數類會帶來更高的分類準確率,但在我們所關注的少數類中表現不佳。
類別不平衡問題有一些更加合理的評價準則,這些指標通常是基於真正例TP/真負例TF/假正例FP/假負例FN的個數計算的。在二分類場景下,上述四種樣本的數量可以通過計算混淆矩陣得到(見下表)。
需要注意的是一個常用的評價指標AUCROC(Area Under Receiver-Operator Characteristic curve)其實是有偏的,它不適用於不平衡場景下的模型評估[7]。
Receiver Operator Characteristic (ROC) curves are commonly used to present results for binary decision problems in machine learning. However, when dealing with highly skewed datasets, Precision-Recall (PR) curves give a more informative picture of an algorithm's performance.
-- Davis J, et al. The Relationship Between Precision-Recall and ROC Curves, ICML 2006
不平衡場景下學習困難的來源
通常情況下,類別不平衡程度越高,資料集的分類難度越大。但在一些工作中,發現存在某些高度不平衡的資料集,在這些資料集上不加任何修改的標準學習模型(如,SVM,Decision Tree等)仍能得到很好的分類結果。顯然,類別不平衡本身並不是分類困難的來源,其背後的原因需要對資料分佈以及模型在訓練過程中的行為進行更細緻的觀察。
一些研究工作嘗試說明不平衡資料集上分類困難的本質原因,這些工作認為分類困難的原因來自於資料分佈中的一些本質因素。如,
過多的少數類樣本出現在多數類樣本密集的區域 [8]
類別之間的分佈嚴重重疊(即不同類別的樣本相對密集地出現在特徵空間的同一區域)[8]
資料中本身存在的噪聲,尤其是少數類的噪聲 [9]
少數類分佈的稀疏性(sparsity)以及稀疏性導致的拆分多個子概念(sub-concepts,可理解為子clusters)並且每個子概念僅含有較少的樣本數量 [10]
因素4又被稱為small disjuncts問題。它導致分類困難的原因很直觀:在同樣的特徵空間中,相比於只有一個cluster的簡單少數類分佈,具有多個子概念的少數類分佈需要模型給出更復雜的決策邊界來獲得良好的預測。在模型複雜度不變的情況下,分類效能會因子概念個數的增多而變差。因此該問題的解決辦法也較為簡單:上更大容量的模型(DL: 更寬,更深,更強)。
至於因素1、2、3,我個人認為儘管三者的成因不同,這三個因素為學習帶來的困難本質上是一樣的。拋開資料集本身所帶有的噪聲因素來考慮。因素2,類別之間的分佈嚴重重疊,所造成的結果即過多的少數類樣本出現在多數類樣本密集的區域(因素3,這話反過來說也合理)。而這些嵌入在多數類樣本密集區域的少數類樣本即我們通常說的離群點。以我個人而言,在不平衡分類任務中,離群點和噪聲點所起到的作用沒有本質上的區別。因此我們將因素1、2、3都歸因為一個因素:噪聲。
另外,在實際的工業應用當中,這些難度因素還會與其他實際問題一同出現,如特徵中的缺失值,巨大的資料集規模等。
最後在圖1中我們給出一個直觀的視覺化來幫助理解類別不平衡比/類別分佈重疊之間的關係:即使不平衡比相同,類別重疊/不重疊的資料集也會表現出極其不同的分類難度。深藍色的點代表它們可以被模型很好地分類,而深紅色的樣本點代表模型完全無法正確分類這些資料點。
在圖1(a)中,資料集是用兩個不重疊的的二維高斯分佈生成的。我們可以觀察到不平衡比的增長並不會影響分類該資料集的難度(圖1(c))。而在圖1(b)中,資料集由兩個相互重疊的二維高斯混合分佈生成。隨著不平衡比的增加,它從一個相對簡單的分類任務變成了一個極其困難的任務(圖1(d))。
已有的不平衡學習方法概覽
標準機器學習演算法假設屬於不同類別的樣本數量大致相似。因此類別的不均勻分佈給在不平衡資料集上應用標準學習演算法帶來了困難:這些學習演算法的設計背後隱含的優化目標是資料集上的分類準確度,而這會導致學習演算法在不平衡資料上更偏向於含更多樣本的多數類。多數不平衡學習(imbalance learning)演算法都是為了解決這種“對多數類的偏好”而提出。
我將已有的不平衡學習演算法劃分為3類:資料級方法,演算法級方法以及整合方法。
資料級方法
資料級方法是不平衡學習領域發展最早、影響力最大、使用最廣泛的一類方法,也可稱為重取樣方法。該類方法關注於通過修改訓練資料集以使得標準學習演算法也能在其上有效訓練。根據實現方式的不同,資料級方法可被進一步分類為:
1. 從多數類別中刪除樣本的方法(欠取樣,如RUS、NearMiss[11]、ENN[12]、Tomeklink[13]等)
2. 為少數類別生成新樣本的方法(過取樣,如SMOTE[14],ADASYN[15],Borderline-SMOTE[16]等)
3. 結合上述兩種方案的混合類方法(過取樣+欠取樣去噪,如SMOTE+ENN[17]等)
標準的隨機重取樣方法使用隨機方法來選擇用於預處理的目標樣本。然而隨機方法可能會導致丟棄含有重要資訊的樣本(隨機欠取樣)或者引入無意義的甚至有害的新樣本(隨機過取樣),因此有一系列更高階的方法,試圖根據根據資料的分佈資訊來在進行重取樣的同時保持原有的資料結構。
Strength
1. 該類方法能夠去除噪聲/平衡類別分佈:在重取樣後的資料集上訓練可以提高某些分類器的分類效能。
2. 欠取樣方法減小資料集規模:欠取樣方法會去除一些多數類樣本,從而可能降低模型訓練時的計算開銷。
Weakness
1. 取樣過程計算效率低下:這一系列的“高階”重取樣方法通常使用基於距離的鄰域關係(通常是k-最近鄰方法)來提取資料分佈資訊。該方式的缺點是需要計算每個資料樣本之間的距離,而計算距離需要的計算量隨著資料集的大小呈平方級增長,因此在大規模資料集上應用這些方法可能會帶來極低的計算效率。
2. 易被噪聲影響:此外在具有高不平衡比且包含大量噪聲的工業資料集中,少數類的結構可能並不能被樣本的分佈很好地表示。而被這些重取樣方法用來提取分佈資訊的最近鄰演算法很容易被噪聲干擾,因此可能無法得到準確的分佈資訊,從而導致不合理的重取樣策略。
3. 過取樣方法生成過多資料:當應用於大規模且高度不平衡的資料集時,過取樣類的方法可能會生成大量的少數類樣本以平衡資料集。這會進一步增大訓練集的樣本數量,增大計算開銷,減慢訓練速度,並可能導致過擬合。
4. 不適用於無法計算距離的複雜資料集:最重要的一點是這些重取樣方法依賴於明確定義的距離度量,使得它們在某些資料集上不可用。在實際應用中,工業資料集經常會含有類別特徵(即不分佈在連續空間上的特徵,如使用者ID)或者缺失值,此外不同特徵的取值範圍可能會有巨大的差別。在這些資料集上定義合理的距離度量十分困難。
演算法級方法
演算法級方法專注於修改現有的標準機器學習演算法以修正他們對多數類的偏好。在這類方法中最流行的分支是代價敏感學習[18,19](cost-sensitive learning),我們在此也只討論該類演算法。代價敏感學習給少數類樣本分配較高的誤分類代價,而給多數類樣本分配較小的誤分類代價。通過這種方式代價敏感學習在學習器的訓練過程中人為提高了少數類別樣本的重要性,以此減輕分類器對多數類的偏好。
Strength
1. 不增加訓練複雜度:使用該類演算法魔改後的演算法通常會有更好的表現,並且沒有增加訓練的計算複雜度。
2. 可直接用於多分類問題:該類演算法通常只修改誤分類代價,因此可直接擴充套件到多分類問題上。
Weakness
1. 需要領域先驗知識:必須注意的是,代價敏感學習中的代價矩陣(cost matrix)需要由領域專家根據任務的先驗知識提供,這在許多現實問題中顯然是不可用的。因此在實際應用時代價矩陣通常被直接設定為歸一化的不同類別樣本數量比。由於缺乏領域知識的指導,這種擅自設定的代價矩陣並不能保證得到最優的分類效能。
2. 不能泛化到不同任務:對於特定問題設計的代價矩陣只能用於該特定任務,在其他任務上使用時並不能保證良好的效能表現。
3. 依賴於特定分類器:另一方面,對於諸如神經網路的需要以批次訓練(mini-batch training)方法訓練的模型,少數類樣本僅僅存在於在很少的批次中,而大部分批次中只含有多數類樣本,這會給神經網路訓練帶來災難性的後果:使用梯度下降更新的非凸優化過程會很快陷入區域性極值點/鞍點(梯度為0),導致網路無法進行有效學習。使用敏感代價學習來給樣本加權並不能解決這個問題。
整合學習方法
整合學習類方法專注於將一種資料級或演算法級方法與整合學習相結合,以獲得強大的整合分類器。由於其在類別不平衡任務中表現出色,在實際應用中整合學習越來越受歡迎。它們中的大多數基於某種特定的整合學習演算法(例如,Adaptive Boosting [20])並在整合的過程中嵌入一種其他的不平衡學習方法(例如,SMOTE[14])。
e.g., SMOTE+Boosting=SMOTEBoost [21]; SMOTE+Bagging=SMOTEBagging [22];
另有一些整合學習方法的基學習器也是整合學習器(例如,EasyEnsemble,BalanceCascade[23])。因此最終的分類器是一個“整合的整合”。
“整合的整合”並不代表一定會有更好的表現,作為基學習器的整合學習方法也會影響分類效能。如上述兩種方法使用AdaBoost作為基分類器,Boosting類方法本身就對噪聲敏感,加上BalanceCascade本身有相同的問題,因此使用非整合分類器可能效果反而更好(如直接使用C4.5)。
PS,這兩種方法使用AdaBoost做基學習器的原因大概率是為了蹭熱點(2010年左右)。
Strength
1. 效果通常較好:沒有什麼問題是ensemble不能解決的,如果有,再多加一個base learner。根據我的經驗整合學習方法(魔改的)仍然是解決不平衡學習問題最有效的方法。
2. 可使用迭代過程中的反饋進行動態調整:極少數的整合方法具有了動態重取樣的思想,如BalanceCascade會在每輪迭代中丟棄那些已經被當前分類器很好地分類的多數類樣本(assumption是這些樣本已經不含對模型有貢獻的資訊)。該方法在實際應用時也實現了相比於其他降取樣方法更快的收斂速度,使其可以使用相對較少的分類器來得到更優的分類表現。
Weakness
1. 包含所使用的不平衡學習方法的缺點:由於大多數不平衡整合學習方法仍然在其pipeline中使用了標準的資料級/演算法級方法,因此上述兩類方法的缺點也同樣存在於使用他們的整合方法中。
2. 過取樣+整合進一步增大計算開銷:當應用於實際任務時,即便整合能夠提升大部分方法的分類表現,這些資料級/演算法級方法仍然存在計算效率低,適用性差並且易被噪聲影響的缺點。例如,作為過取樣方法的SMOTE在單獨使用時已經引入了大量的新訓練樣本,使用SMOTE生成更多的訓練資料集並訓練更多的分類器只會使整個訓練過程變得更慢。
3. 對噪聲不魯棒:BalanceCascade做出了非常有意義的探索,但其一味保留難以分類樣本的策略可能導致在後期的迭代中過度擬合噪聲/離群點,並最終惡化整合分類器的表現。換言之,其對噪聲不魯棒。
訓練過程視覺化
為了更直觀地闡明上述對不平衡學習方法的分析,我構建了一個合成資料集用於視覺化(圖2):
在該資料集上測試下列五種方法:
RandUnder即隨機降取樣,它隨機選取與少數類樣本個數相同的多數類樣本來組成一個平衡的訓練集,並在其上訓練一個分類器。
Clean指Neighborhood Cleaning Rule方法,它從資料集中移除那些最近鄰都來自少數類的多數類樣本。
SMOTE [14] 指少數類過取樣技術(Synthetic Minority Over-sampling TechniquE),它根據最近鄰關係向資料集中加入人工合成的少數類樣本。
Easy [23] 指EasyEnsemble,它通過多次使用RandUnder來訓練多個Adaptive Boosting [20] (AdaBoost)分類器並結合他們的輸出得到一個整合分類器。需要注意的是AdaBoost本身也是一個整合分類器。
Cascade [23] 指BalanceCascade,它是EasyEnsemble的擴充套件。與Easy不同的是,它在每一輪迭代中都丟棄那些已經被當前基分類器很好地分類的多數類樣本,以此減小取樣空間並關注在更加難以分類的樣本上。
所有方法皆使用AdaBoost(基)分類器。
圖2展示了不同方法在checkerboard任務上的訓練集(上列,藍/紅色點代表一個來自多數/少數類的樣本)以及最終預測(下列,藍/紅色點代表分類器傾向於將一個樣本分類為多數/少數類)。由於整合學習方法Easy以及Cascade使用多個不同的訓練集訓練基學習器,此處我們選擇它們用於訓練第5和第10個分類器的訓練集用於視覺化。
從圖中可以觀察到RandUnder和Easy執行簡單的隨機欠取樣,因此可能會丟失一些資訊。Clean嘗試清理被少數類資料點包圍的多數類離群點,但是它保留了所有的背景樣本,這導致分類器在訓練時無法專注於那些含有更多資訊的資料點。此外由於類別之間的重疊,SMOTE受到噪聲影響過度泛化了少數類的空間分佈。Cascade在後期迭代中只保留了一些多數類的離群點,強行擬合這些離群點最終導致了糟糕的泛化效能。
需要強調為了視覺化的效果,我們使用的該合成資料集含有相當多的噪聲。在實際應用中BalanceCascade仍然是一種相當出色的不平衡學習方法。
人生經驗
總而言之,要根據問題性質的不同選擇不同的方法,梳理一下
欠取樣:一般是用來平衡資料集、去噪。平衡資料集的有隨機欠取樣/NearMiss,取樣和訓練速度都很快。隨機欠取樣在任何情況下都能用,但在資料集不平衡程度較高時會不可避免地丟棄大部分多數類樣本造成資訊損失。NearMiss對噪聲極端敏感,有噪聲基本就廢掉。去噪方法有很多,如Tomeklink,AllKNN等,需要資料集上有良好定義的距離度量,在大規模資料集上計算量大。去噪之後對有的分類器有效,有的無效。
過取樣:隨機過取樣任何情況下都不要用,及其容易造成過擬合。SMOTE、ADASYN在小規模資料上可以一試。當資料規模大且不平衡程度高時,過取樣方法生成巨量的合成樣本,需要很多額外計算資源。同時此類過取樣基於少數類樣本的結構資訊,在少數類的表示質量很差時甚至會反向優化:過取樣效果還不如直接訓練。
混合取樣:理論上加入了去噪類的欠取樣演算法來清潔過取樣之後的資料集。實際使用起來我沒感覺到有什麼不同,唯一的區別是加了去噪方法之後更慢了。
Cost-sensitive:在資料集不平衡程度不高時可用,訓練分類器的效率跟使用原始資料訓練沒有什麼區別。缺點是一般需要自己當“領域專家”來設定cost matrix(多了個引數要調),設的不好通常也會得到不理想的效果。此外在不平衡嚴重的時候,由於沒有對資料集的修改,神經網路的訓練會crash:連續數個mini-batch都是多數類樣本,分分鐘陷到local optimal/鞍點。
整合:隨機降取樣+整合,在不平衡比較高時需要較多的基學習器來達到較好的效果。注意Boosting容易被噪聲影響,Bagging方法是真正的萬金油,增加基學習器數量效果一般不會下降。高階降取樣+整合,也可以嘗試,執行會慢並且效果不能保證比隨機方法好。高階過取樣+整合,同上,資料規模大且不平衡程度高情況下,訓練樣本數量爆炸。尤其是整合方法還要訓練好多個基學習器。BalanceCascade,資訊利用效率高,只用很少的基學習器就能達到較好的效果,但對噪聲不魯棒。
我們為了解決上述高度不平衡、含有較多噪聲、且資料規模極大的不平衡分類問題做了一些微小的工作,並且與傳統不平衡學習方法做了全面的比較實驗,我們的方法計算開銷更小,結果更優。過一陣時間可能會掛到arxiv上,屆時敬請關注。
BTW
一些經典綜述:[3,24,25,26]
一個包:imbalanced-learn python package(https://github.com/scikit-learn-contrib/imbalanced-learn)
這個包裡實現的很多方法效果都不盡人意,(尤其是整合類方法:RUSBoost/EasyEnsemble/BalanceCascade等)發現不好用的話建議自己手寫一個/用其他的實現。
References
[1] Gamberger D, Lavrac N, Groselj C. Experiments with noise filtering in a medical domain//ICML. 1999: 143-151.
[2] Graepel T, Candela J Q, Borchert T, et al. Web-scale bayesian click-through rate prediction for sponsored search advertising in microsoft’s bing search engine// Omnipress, 2010.
[3] Sun Y, Wong A K, Kamel M S. Classification of imbalanced data: A review. International Journal of Pattern Recognition and Artificial Intelligence, 2009, 23 (04):687-719.
[4] Powers D M. Evaluation: from precision, recall and f-measure to roc, informed-ness, markedness and correlation. 2011.
[5] Sokolova M, Japkowicz N, Szpakowicz S. Beyond accuracy, f-score and roc: a family of discriminant measures for performance evaluation//Australasian joint conference on artificial intelligence. Springer, 2006: 1015-1021.
[6] Boughorbel S, Jarray F, El-Anbari M. Optimal classifier for imbalanced data using matthews correlation coefficient metric. PloS one, 2017, 12(6):e0177678.
[7] Davis J, Goadrich M. The relationship between precision-recall and roc curves// Proceedings of the 23rd international conference on Machine learning. ACM, 2006: 233-240.
[8] García V, Sánchez J, Mollineda R. An empirical study of the behavior of classifiers on imbalanced and overlapped data sets//Iberoamerican Congress on Pattern Recognition. Springer, 2007: 397-406.
[9] Napierała K, Stefanowski J, Wilk S. Learning from imbalanced data in presence of noisy and borderline examples//International Conference on Rough Sets and Current Trends in Computing. Springer, 2010: 158-167.
[10] Prati R C, Batista G E, Monard M C. Learning with class skews and small dis- juncts//Brazilian Symposium on Artificial Intelligence. Springer, 2004: 296-306.
[11] Mani I, Zhang I. knn approach to unbalanced data distributions: a case study involving information extraction//Proceedings of workshop on learning from imbalanced datasets: volume 126. 2003.
[12] Wilson D L. Asymptotic properties of nearest neighbor rules using edited data. IEEE Transactions on Systems, Man, and Cybernetics, 1972(3):408-421.
[13]Tomek I. Two modifications of cnn. IEEE Trans. Systems, Man and Cybernetics, 1976, 6:769-772.
[14] Chawla N V, Bowyer K W, Hall L O, et al. Smote: synthetic minority over-sampling technique. Journal of artificial intelligence research, 2002, 16:321-357.
[15] He H, Bai Y, Garcia E A, et al. Adasyn: Adaptive synthetic sampling approach for imbalanced learning// 2008 IEEE International Joint Conference on Neural Networks (IEEE World Congress on Computational Intelligence). IEEE, 2008: 1322-1328.
[16] Han H, Wang W Y, Mao B H. Borderline-smote: a new over-sampling method in imbalanced data sets learning//International conference on intelligent computing. Springer, 2005: 878-887.
[17] Batista GE, Prati RC, Monard MC. A study of the behavior of several methods for balancing machine learning training data. ACM SIGKDD explorations newsletter, 2004, 6(1):20-29.
[18] Elkan C. The foundations of cost-sensitive learning//International joint conference on artificial intelligence: volume 17. Lawrence Erlbaum Associates Ltd, 2001:973-978.
[19] Liu X Y, Zhou Z H. The influence of class imbalance on cost-sensitive learning: An empirical study//Sixth International Conference on Data Mining (ICDM’06). IEEE, 2006: 970-974.
[20] Freund Y, Schapire R E. A decision-theoretic generalization of on-line learning and an application to boosting. Journal of computer and system sciences, 1997,55(1):119-139.
[21] Chawla N V, Lazarevic A, Hall L O, et al. Smoteboost: Improving prediction of the minority class in boosting//European conference on principles of data mining and knowledge discovery. Springer, 2003: 107-119.
[22] Wang S, Yao X. Diversity analysis on imbalanced data sets by using ensemble models//2009 IEEE Symposium on Computational Intelligence and Data Mining. IEEE, 2009: 324-331.
[23] Liu X Y, Wu J, Zhou Z H. Exploratory undersampling for class-imbalance learning. IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), 2009, 39(2):539-550.
[24] He H, Garcia E A. Learning from imbalanced data. IEEE Transactions on Knowledge & Data Engineering, 2008(9):1263-1284.
[25] He H, Ma Y. Imbalanced learning: foundations, algorithms, and applications. John Wiley & Sons, 2013.
[26] Haixiang G,Yijing L,Shang J, et al. Learning from class-imbalanced data: Review of methods and applications. Expert Systems with Applications, 2017, 73:220-239
[27] Lemaître G, Nogueira F, Aridas C K. Imbalanced-learn: A python toolbox to tackle the curse of imbalanced datasets in machine learning. Journal of Machine Learning Research, 2017, 18(17):1-5. jmlr.org/papers/v18/16-.