一、樣本不均衡的介紹
1.1 樣本不均衡現(xiàn)象
樣本(類別)樣本不平衡(class-imbalance)指的是分類任務中不同類別的訓練樣例數(shù)目差別很大的情況蓝翰,一般地女嘲,樣本類別比例(多數(shù)類vs少數(shù)類)明顯大于1:1(如4:1)就可以歸為樣本不均衡的問題。現(xiàn)實中爆雹,樣本不平衡是一種常見的現(xiàn)象,如:金融欺詐交易檢測慧起,欺詐交易的訂單樣本通常是占總交易數(shù)量的極少部分册倒,而且對于有些任務而言少數(shù)樣本更為重要。注:本文主要探討分類任務的類別不均衡灿意,回歸任務的樣本不均衡詳見《Delving into Deep Imbalanced Regression》
1.2 不均衡的根本影響
很多時候我們遇到樣本不均衡問題時缤剧,很直接的反應就是去“打破”這種不平衡域慷。但是樣本不均衡有什么影響?有必要去解決嗎兄纺?
先具體舉個例子估脆,在一個欺詐識別的案例中座云,好壞樣本的占比(Imbalance Ratio)是1000:1,而如果我們直接拿這個比例去學習模型的話圃阳,因為扔進去模型學習的樣本大部分都是好的璧帝,就很容易學出一個把所有樣本都預測為好的模型睬隶,而且這樣預測的概率準確率還是非常高的。而模型最終學習的并不是如何分辨好壞银萍,而是學習到了”好 遠比 壞的多“這樣的先驗信息恤左,憑著這個信息把所有樣本都判定為“好”就可以了搀绣。這樣就背離了模型學習去分辨好壞的初衷了链患。
所以锣险,樣本不均衡帶來的根本影響是:模型會學習到訓練集中樣本比例的這種先驗性信息览闰,以致于實際預測時就會對多數(shù)類別有側(cè)重(可能導致多數(shù)類精度更好,而少數(shù)類比較差)崖咨。如下圖(示例代碼請見github.com/aialgorithm)油吭,類別不均衡情況下的分類邊界會“侵占”少數(shù)類的區(qū)域。更重要的一點歌豺,這會影響模型學習更本質(zhì)的特征类咧,影響模型的魯棒性蟹腾。
總結(jié)一下也就是娃殖,我們通過解決樣本不均衡,可以減少模型學習樣本比例的先驗信息堕虹,以獲得能學習到辨別好壞本質(zhì)特征的模型芬首。
1.3 判斷解決不均衡的必要性
從分類效果出發(fā),通過上面的例子可知,不均衡對于分類結(jié)果的影響不一定是不好的波附,那什么時候需要解決樣本不均衡昼钻?
學習任務的復雜度與樣本不平衡的敏感度是成正比的(參見《Survey on deep learning with class imbalance》)然评,對于簡單線性可分任務碗淌,樣本是否均衡影響不大抖锥。需要注意的是,學習任務的復雜度是相對意義上的纳像,得從特征強弱拯勉、數(shù)據(jù)噪音情況以及模型容量等方面綜合評估判哥。
判斷訓練樣本的分布與真實樣本分布是否一致且穩(wěn)定退渗,如果分布是一致的犀勒,帶著這種正確點的先驗對預測結(jié)果影響不大账蓉。但是逾一,還需要考慮到,如果后面真實樣本分布變了箱玷,這個樣本比例的先驗就有副作用了锡足。
出現(xiàn)某一類別樣本數(shù)目非常稀少的情況(樣本不足)壳坪,模型很有可能學習不好。這時類別不均衡是需要解決的沐批,如選擇一些數(shù)據(jù)增強的方法,或者嘗試如異常檢測的單分類模型九孩。
二、樣本不均衡解決方法
基本上煤墙,在學習任務有些難度的前提下仿野,不均衡解決方法可以歸結(jié)為:通過某種方法使得不同類別的樣本對于模型學習中的Loss(或梯度)貢獻是比較均衡的江解。以消除模型對不同類別的偏向性,學習到更為本質(zhì)的特征鳖枕。本文從數(shù)據(jù)樣本桨螺、模型算法、目標函數(shù)魏烫、評估指標等方面哄褒,對個中的解決方法進行探討煌张。
2.1 樣本層面
2.1.1欠采樣、過采樣
最直接的處理方式就是樣本數(shù)量的調(diào)整了链嘀,常用的可以:
- 減少多數(shù)類的數(shù)量(即欠采樣档玻,如隨機欠采樣、NearMiss霹琼、ENN)枣申。
- 盡量多地增加少數(shù)類的的樣本數(shù)量(即過采樣,如隨機過采樣、以及2.1.2數(shù)據(jù)增強方法)泊窘,以達到類別間數(shù)目。
- 還可結(jié)合兩者做混合采樣如(Smote+ENN)瓜贾。
具體可以參見【scikit-learn的imbalanced-learn.org/stable/user_guide.html以及github的awesome-imbalanced-learning】
2.1.2 數(shù)據(jù)增強
數(shù)據(jù)增強(Data Augmentation)是在不實質(zhì)性的增加數(shù)據(jù)的情況下祭芦,從原始數(shù)據(jù)加工出更多數(shù)據(jù)的表示憔鬼,提高原數(shù)據(jù)的數(shù)量及質(zhì)量,以接近于更多數(shù)據(jù)量產(chǎn)生的價值昌跌,從而提高模型的學習效果(具體介紹及代碼可見【數(shù)據(jù)增強】)照雁。如下列舉常用的方法:
- 基于樣本變換的數(shù)據(jù)增強
樣本變換數(shù)據(jù)增強即采用預設(shè)的數(shù)據(jù)變換規(guī)則進行已有數(shù)據(jù)的擴增,包含單樣本數(shù)據(jù)增強和多樣本數(shù)據(jù)增強萍诱。
單樣本增強(主要用于圖像):主要有幾何操作裕坊、顏色變換曙求、隨機擦除、添加噪聲等方法產(chǎn)生新的樣本静浴,可參見imgaug開源庫挤渐。
多樣本增強:是通過組合及轉(zhuǎn)換多個樣本,主要有Smote類(可見imbalanced-learn.org/stable/references/over_sampling.html)囤攀、SamplePairing宫纬、Mixup等方法在特征空間內(nèi)構(gòu)造已知樣本的鄰域值樣本。
- 基于深度學習的數(shù)據(jù)增強
生成模型如變分自編碼網(wǎng)絡(Variational Auto-Encoding network, VAE)和生成對抗網(wǎng)絡(Generative Adversarial Network, GAN)蝌衔,其生成樣本的方法也可以用于數(shù)據(jù)增強噩斟。這種基于網(wǎng)絡合成的方法相比于傳統(tǒng)的數(shù)據(jù)增強技術(shù)雖然過程更加復雜, 但是生成的樣本更加多樣孤个。
數(shù)據(jù)樣本層面的處理齐鲤,需要關(guān)注的是:
- 隨機欠采樣可能會導致丟棄含有重要信息的樣本。在計算性能足夠下营袜,可以考慮數(shù)據(jù)的分布信息(通常是基于距離的鄰域關(guān)系)的采樣方法丑罪,如ENN、NearMiss等跪另。
- 隨機過采樣或數(shù)據(jù)增強樣本也有可能是強調(diào)(或引入)片面噪聲免绿,導致過擬合擦盾。也可能是引入信息量不大的樣本。此時需要考慮的是調(diào)整數(shù)據(jù)增強方法辽故,或者通過半監(jiān)督算法(可借鑒Pu-Learning思路)選擇增強數(shù)據(jù)的較優(yōu)子集腐碱,以提高模型的泛化能力。
2.2 loss層面
loss層面的主流也就是常用的代價敏感學習方法(cost-sensitive)喂走,為不同的分類錯誤給予不同懲罰力度(權(quán)重),在調(diào)節(jié)類別平衡的同時乎芳,也不會增加計算復雜度帖池。
2.2.1 class weight
這最常用也就是scikit模型的’class weight‘方法,If ‘balanced’, class weights will be given by n_samples / (n_classes * np.bincount(y)). If a dictionary is given, keys are classes and values are corresponding class weights. If None is given, the class weights will be uniform.
,class weight可以為不同類別的樣本提供不同的權(quán)重(少數(shù)類有更高的權(quán)重)帮孔,從而模型可以平衡各類別的學習不撑。 如下圖(具體代碼請見github.com/aialgorithm)通過為少數(shù)類做更高的權(quán)重(類別權(quán)重除了設(shè)定為balanced,還可以作為一個超參搜索)姆坚,避免決策邊界偏重多數(shù)類的現(xiàn)象:
clf2 = LogisticRegression(class_weight={0:1,1:10}) # 代價敏感學習
2.2.2 OHEM 和 Focal Loss
In this work, we first point out that the class imbalance can be summarized to the imbalance in difficulty and the imbalance in difficulty can be summarized to the imbalance in gradient norm distribution.--原文可見《Gradient Harmonized Single-stage Detector
》
類別的不平衡可以歸結(jié)為難易樣本的不平衡兼呵,而難易樣本的不平衡可以歸結(jié)為梯度的不平衡腊敲。按照這個思路,OHEM和Focal loss都做了兩件事:難樣本挖掘以及類別的平衡懂昂。(另外的有 GHM没宾、 PISA等方法,可以自行了解)
OHEM(Online Hard Example Mining)算法的核心是選擇一些hard examples(多樣性和高損失的樣本)作為訓練的樣本铲敛,針對性地改善模型學習效果会钝。對于數(shù)據(jù)的類別不平衡問題,OHEM的針對性更強咽弦。
Focal loss的核心思想是在交叉熵損失函數(shù)(CE)的基礎(chǔ)上增加了類別的不同權(quán)重以及困難(高損失)樣本的權(quán)重(如下公式)型型,以改善模型學習效果。
2.3 模型層面
模型方面主要是選擇一些對不均衡比較不敏感的模型寺枉,比如绷落,對比邏輯回歸模型,決策樹在不平衡數(shù)據(jù)上面表現(xiàn)相對好一些(樹模型是按照增益遞歸地劃分數(shù)據(jù)筐喳,劃分過程考慮的是局部的增益函喉,全局樣本是不均衡,局部空間就不一定梳毙,所以比較不敏感一些些捐下。相關(guān)實驗可見arxiv.org/abs/2104.02240)。
解決不均衡問題牌废,更為優(yōu)秀的是基于采樣+集成樹模型等方法鸟缕,可以在類別不均衡數(shù)據(jù)上表現(xiàn)良好排抬。
2.3.1采樣+集成學習
這類方法簡單來說,通過重復組合少數(shù)類樣本與抽樣的同樣數(shù)量的多數(shù)類樣本番甩,訓練若干的分類器進行集成學習届搁。
BalanceCascade
BalanceCascade基于Adaboost作為基分類器,核心思路是在每一輪訓練時都使用多數(shù)類與少數(shù)類數(shù)量上相等的訓練集宴胧,然后使用該分類器對全體多數(shù)類進行預測,通過控制分類閾值來控制FP(False Positive)率乞娄,將所有判斷正確的類刪除显歧,然后進入下一輪迭代繼續(xù)降低多數(shù)類數(shù)量。EasyEnsemble
EasyEnsemble也是基于Adaboost作為基分類器范删,就是將多數(shù)類樣本集隨機分成 N 個子集拷肌,且每一個子集樣本與少數(shù)類樣本相同,然后分別將各個多數(shù)類樣本子集與少數(shù)類樣本進行組合,使用AdaBoost基分類模型進行訓練契沫,最后bagging集成各基分類器,得到最終模型拴清。示例代碼可見:www.kaggle.com/orange90/ensemble-test-credit-score-model-example
通常会通,在數(shù)據(jù)集噪聲較小的情況下,可以用BalanceCascade沪停,可以用較少的基分類器數(shù)量得到較好的表現(xiàn)(基于串行的集成學習方法裳涛,對噪聲敏感容易過擬合)。噪聲大的情況下舷礼,可以用EasyEnsemble郊闯,基于串行+并行的集成學習方法蛛株,bagging多個Adaboost過程可以抵消一些噪聲影響谨履。此外還有RUSB至朗、SmoteBoost、balanced RF等其他集成方法可以自行了解锹引。
2.3.2 異常檢測
類別不平衡很極端的情況下(比如少數(shù)類只有幾十個樣本)嫌变,將分類問題考慮成異常檢測(anomaly detection)問題可能會更好。
異常檢測是通過數(shù)據(jù)挖掘方法發(fā)現(xiàn)與數(shù)據(jù)集分布不一致的異常數(shù)據(jù)东涡,也被稱為離群點倘待、異常值檢測等等。無監(jiān)督異常檢測按其算法思想大致可分為幾類:基于聚類的方法凸舵、基于統(tǒng)計的方法、基于深度的方法(孤立森林)渐苏、基于分類模型(one-class SVM)以及基于神經(jīng)網(wǎng)絡的方法(自編碼器AE)等等琼富。具體方法介紹及代碼可見【異常檢測方法速覽】
2.4 決策及評估指標
本節(jié)關(guān)注的重點是庄新,當我們采用不平衡數(shù)據(jù)訓練模型,如何更好決策以及客觀地評估不平衡數(shù)據(jù)下的模型表現(xiàn)凡蚜。對于分類常用的precision吭从、recall、F1谱醇、混淆矩陣,樣本不均衡的不同程度副渴,都會明顯改變這些指標的表現(xiàn)。
對于類別不均衡下模型的預測斥滤,我們可以做分類閾值移動勉盅,以調(diào)整模型對于不同類別偏好的情況(如模型偏好預測負樣本,偏向0挑胸,對應的我們的分類閾值也往下調(diào)整)宰闰,達到?jīng)Q策時類別平衡的目的。這里解藻,通称系粒可以通過P-R曲線,選擇到較優(yōu)表現(xiàn)的閾值戳粒。
對于類別不均衡下的模型評估蔚约,可以采用AUC涂籽、AUPRC(更優(yōu))評估模型表現(xiàn)。AUC的含義是ROC曲線的面積树枫,其數(shù)值的物理意義是:隨機給定一正一負兩個樣本景东,將正樣本預測分值大于負樣本的概率大小。AUC對樣本的正負樣本比例情況是不敏感搔涝,即使正例與負例的比例發(fā)生了很大變化,ROC曲線面積也不會產(chǎn)生大的變化庄呈。具體可見 【 評估指標】