干貨整理:處理不平衡數(shù)據(jù)的技巧總結(jié)
在銀行欺詐檢測(cè),市場(chǎng)實(shí)時(shí)競(jìng)價(jià)或網(wǎng)絡(luò)入侵檢測(cè)等領(lǐng)域通常是什么樣的數(shù)據(jù)集呢?
在這些領(lǐng)域使用的數(shù)據(jù)通常有不到1%少量但“有趣的”事件,例如欺詐者利用信用卡,用戶點(diǎn)擊廣告或者損壞的服務(wù)器掃描網(wǎng)絡(luò)。
然而,大多數(shù)機(jī)器學(xué)習(xí)算法對(duì)于不平衡數(shù)據(jù)集的處理不是很好。 以下七種技術(shù)可以幫你訓(xùn)練分類器來(lái)檢測(cè)異常類。
1.使用正確的評(píng)估指標(biāo)
對(duì)使用不平衡數(shù)據(jù)生成的模型應(yīng)用不恰當(dāng)?shù)脑u(píng)估指標(biāo)可能是危險(xiǎn)的。

想象一下,我們的訓(xùn)練數(shù)據(jù)如上圖所示。 如果使用精度來(lái)衡量模型的好壞,使用將所有測(cè)試樣本分類為“0”的模型具有很好的準(zhǔn)確性(99.8%),但顯然這種模型不會(huì)為我們提供任何有價(jià)值的信息。
在這種情況下,可以應(yīng)用其他替代評(píng)估指標(biāo),例如:
- 精度/特異性:有多少個(gè)選定的相關(guān)實(shí)例。
- 調(diào)用/靈敏度:選擇了多少個(gè)相關(guān)實(shí)例。
- F1得分:精度和召回的諧波平均值。
- MCC:觀察和預(yù)測(cè)的二進(jìn)制分類之間的相關(guān)系數(shù)。
- AUC:正確率與誤報(bào)率之間的關(guān)系。
2.重新采樣訓(xùn)練集
除了使用不同的評(píng)估標(biāo)準(zhǔn)外,還可以選擇不同的數(shù)據(jù)集。使平衡數(shù)據(jù)集不平衡的兩種方法:欠采樣和過(guò)采樣。
欠采樣通過(guò)減少冗余類的大小來(lái)平衡數(shù)據(jù)集。當(dāng)數(shù)據(jù)量足夠時(shí)使用此方法。通過(guò)將所有樣本保存在少數(shù)類中,并在多數(shù)類中隨機(jī)選擇相等數(shù)量的樣本,可以檢索平衡的新數(shù)據(jù)集以進(jìn)一步建模。
相反,當(dāng)數(shù)據(jù)量不足時(shí)會(huì)使用過(guò)采樣,嘗試通過(guò)增加稀有樣本的數(shù)量來(lái)平衡數(shù)據(jù)集。不是去除樣本的多樣性,而是通過(guò)使用諸如重復(fù),自舉或SMOTE等方法生成新樣本(合成少數(shù)過(guò)采樣技術(shù))
請(qǐng)注意,一種重采樣方法與另一種相比沒(méi)有絕對(duì)的優(yōu)勢(shì)。這兩種方法的應(yīng)用取決于它適用的用例和數(shù)據(jù)集本身。過(guò)度取樣和欠采樣不足結(jié)合使用也會(huì)有很好的效果。
3.以正確的方式使用K-fold交叉驗(yàn)證
值得注意的是,使用過(guò)采樣方法來(lái)解決不平衡問(wèn)題時(shí),應(yīng)適當(dāng)?shù)貞?yīng)用交叉驗(yàn)證。切記,過(guò)采樣會(huì)觀察到稀有的樣本,并根據(jù)分布函數(shù)自舉生成新的隨機(jī)數(shù)據(jù)。如果在過(guò)采樣之后應(yīng)用交叉驗(yàn)證,那么我們所做的就是將模型過(guò)度適應(yīng)于特定的人工引導(dǎo)結(jié)果。這就是為什么在過(guò)采樣數(shù)據(jù)之前應(yīng)該始終進(jìn)行交叉驗(yàn)證,就像實(shí)現(xiàn)特征選擇一樣。只有對(duì)數(shù)據(jù)進(jìn)行重復(fù)采樣,可以將隨機(jī)性引入到數(shù)據(jù)集中,以確保不會(huì)出現(xiàn)過(guò)擬合問(wèn)題。
4.組合不同的重采樣數(shù)據(jù)集
生成通用模型的最簡(jiǎn)單方法是使用更多的數(shù)據(jù)。問(wèn)題是,開(kāi)箱即用的分類器,如邏輯回歸或機(jī)森隨林,傾向于通過(guò)丟棄稀有樣例來(lái)推廣。一個(gè)簡(jiǎn)單的最佳實(shí)現(xiàn)是建立n個(gè)模型,使用少數(shù)類的所有樣本和數(shù)量充足類別的n個(gè)不同樣本。假如您想要組合10個(gè)模型,需要少數(shù)類1000例,隨機(jī)抽取10.000例多數(shù)類的樣本。然后,只需將10000個(gè)樣本分成10個(gè)塊,訓(xùn)練出10個(gè)不同的模型。

如果您有大量數(shù)據(jù),那么這種方法很簡(jiǎn)單,完美地實(shí)現(xiàn)水平擴(kuò)展,因此您可以在不同的集群節(jié)點(diǎn)上訓(xùn)練和運(yùn)行模型。集合模型也趨于一般化,使得該方法容易處理。
5.用不同比例重新采樣
以前的方法可以通過(guò)少數(shù)類和多數(shù)類之間的比例進(jìn)行微調(diào)。最好的比例在很大程度上取決于所使用的數(shù)據(jù)和模型。但是,不是在整體中以相同的比例訓(xùn)練所有模型,合并不同的比例值得嘗試。 所以如果訓(xùn)練了10個(gè)模型,對(duì)一個(gè)模型比例為1:1(少數(shù):多數(shù)),另一個(gè)1:3甚至是2:1的模型是有意義的。 根據(jù)使用的模型可以影響一個(gè)類獲得的權(quán)重。

6. 對(duì)多數(shù)類進(jìn)行聚類
Sergey Quora提出了一種優(yōu)雅的方法[2]。他建議不要依賴隨機(jī)樣本來(lái)覆蓋訓(xùn)練樣本的種類,而是將r個(gè)分組中的多數(shù)類進(jìn)行聚類,其中r為r中的樣本數(shù)。對(duì)于每個(gè)組,只保留質(zhì)心(樣本的中心)。然后該模型僅保留了少數(shù)類和樣本質(zhì)心來(lái)訓(xùn)練。
7.設(shè)計(jì)自己的模型
以前的所有方法都集中在數(shù)據(jù)上,并將模型作為固定的組件。但事實(shí)上,如果模型適用于不平衡數(shù)據(jù),則不需要對(duì)數(shù)據(jù)進(jìn)行重新采樣。如果數(shù)據(jù)樣本沒(méi)有太多的傾斜,著名的XGBoost已經(jīng)是一個(gè)很好的起點(diǎn),因?yàn)樵撃P蛢?nèi)部對(duì)數(shù)據(jù)進(jìn)行了很好的處理,它訓(xùn)練的數(shù)據(jù)并不是不平衡的。但是再次,如果數(shù)據(jù)被重新采樣,它只是悄悄進(jìn)行。
通過(guò)設(shè)計(jì)一個(gè)損失函數(shù)來(lái)懲罰少數(shù)類的錯(cuò)誤分類,而不是多數(shù)類,可以設(shè)計(jì)出許多自然泛化為支持少數(shù)類的模型。例如,調(diào)整SVM以相同的比例懲罰未被充分代表的少數(shù)類的分類錯(cuò)誤。

綜上所述
這不是一份獨(dú)家的技術(shù)清單,而是處理不平衡數(shù)據(jù)的一個(gè)起點(diǎn)。
沒(méi)有適合所有問(wèn)題的最佳方法或模型,強(qiáng)烈建議您嘗試不同的技術(shù)和模型來(lái)評(píng)估哪些方法最有效。 可以嘗試創(chuàng)造性地結(jié)合不同的方法。
同樣重要的是,要注意在不平衡類出現(xiàn)的許多領(lǐng)域(例如欺詐檢測(cè),實(shí)時(shí)競(jìng)價(jià))中,“市場(chǎng)規(guī)則”正在不斷變化。所以,要查看一下過(guò)去的數(shù)據(jù)是否已經(jīng)過(guò)時(shí)了。