處理機(jī)器學(xué)習(xí)中不平衡類的5種策略
類失衡:假設(shè)您有一個罕見的疾病機(jī)器學(xué)習(xí)數(shù)據(jù)集,即大約8%的陽性。在這種情況下,即使你不訓(xùn)練,只是簡單地說沒有生病,這也會給出92%的準(zhǔn)確率。因此,在類不平衡的情況下,準(zhǔn)確性是不準(zhǔn)確的。
在本指南中,我們介紹了處理機(jī)器學(xué)習(xí)中不平衡類的5種策略:
- 對少數(shù)類進(jìn)行上采樣
- 對多數(shù)類進(jìn)行下采樣
- 更改性能指標(biāo)
- 懲罰算法
- 使用基于樹的算法
1. 上采樣少數(shù)類:指隨機(jī)復(fù)制少數(shù)類的觀察結(jié)果,使樣本數(shù)量與多數(shù)類匹配。
首先,我們將每個類的觀察結(jié)果分成不同的DataFrame。
接下來,我們將使用替換重取樣少數(shù)類,設(shè)置樣本數(shù)以匹配多數(shù)類的樣本數(shù)。
***,我們將上采樣的少數(shù)類DataFrame與原始的多數(shù)類DataFrame相結(jié)合。
創(chuàng)建合成樣本(數(shù)據(jù)增強(qiáng))
創(chuàng)建合成樣本是上采樣的近親,有些人可能會將它們歸類在一起。例如,SMOTE算法是一種從少數(shù)類中重新采樣的方法,同時稍微調(diào)整特征值,從而創(chuàng)建“新的”樣本。
2. 下采樣多數(shù)類:下采樣涉及從多數(shù)類中隨機(jī)移除觀測值,以防止其信號支配學(xué)習(xí)算法。
首先,我們將每個類的觀察結(jié)果分成不同的DataFrame。
接下來,我們將重采樣多數(shù)類而不進(jìn)行替換,將樣本數(shù)設(shè)置為與少數(shù)類相匹配。
***,我們將下采樣的多數(shù)類DataFrame與原始的少數(shù)類DataFrame結(jié)合起來。
3. 更改性能指標(biāo):AUROC(ROC曲線下面積)
假設(shè)我們有一個概率的二元分類器,如邏輯回歸。
在呈現(xiàn)ROC曲線之前,必須理解混淆矩陣的概念。當(dāng)我們進(jìn)行二元預(yù)測時,可以有4種類型的結(jié)果:
- 我們預(yù)測0而真正的類實際上是0:這被稱為真陰性,即我們正確地預(yù)測該類是負(fù)的(0)。例如,防病毒軟件未將無害文件檢測為病毒。
- 我們預(yù)測0而真正的類實際上是1:這被稱為假陰性,即我們錯誤地預(yù)測該類是負(fù)的(0)。例如,防病毒軟件無法檢測到病毒。
- 我們預(yù)測1而真正的類實際上是0:這被稱為假陽性,即我們錯誤地預(yù)測該類是正的(1)。例如,防病毒軟件認(rèn)為無害文件是病毒。
- 我們預(yù)測1而真正的類實際上是1:這被稱為真陽性,即我們正確地預(yù)測該類是正的(1)。例如,防病毒軟件正確地檢測到了病毒。
為了獲得混淆矩陣,我們回顧機(jī)器學(xué)習(xí)項模型所做的所有預(yù)測,并計算這4種結(jié)果中的每一種發(fā)生的次數(shù):
在這個混淆矩陣的例子中,在被分類的50個數(shù)據(jù)點中,45個被正確分類,5個被錯誤分類。
由于為了比較不同的模型,通常使用單個度量比使用多個度量更方便,所以我們從混淆矩陣中計算兩個度量,然后將其合并為一個:
- 真陽性率(TPR),又名靈敏度、***率和召回率,定義為+TPTP+ FN。直觀地,該度量對應(yīng)于相對于所有正數(shù)據(jù)點被正確認(rèn)為為正的正數(shù)據(jù)點的比例。換句話說,TPR越高,我們將錯過的正數(shù)據(jù)點越少。
- 假陽性率(FPR),又名 fall-out,定義為+FPFP+ TN。直觀地,該度量對應(yīng)于相對于所有負(fù)數(shù)據(jù)點被錯誤地認(rèn)為是正數(shù)的負(fù)數(shù)據(jù)點的比例。換句話說,F(xiàn)PR越高,更多的負(fù)數(shù)據(jù)點將被錯誤分類。
為了將FPR和TPR合并為一個度量,我們首先計算邏輯回歸中具有許多不同閾值的前兩個度量(例如0.00、0.01、0.02、……、1.000.00;0.01、0.02、……、1.00),然后將它們繪制在一個圖上,橫坐標(biāo)上是FPR值,縱坐標(biāo)上是TPR值。得到的曲線稱為ROC曲線,我們考慮的度量是這條曲線的AUC,我們稱之為AUROC。
下圖以圖形方式顯示AUROC:
在該圖中,藍(lán)色區(qū)域?qū)?yīng)于AUROC的曲線下面積。對角線中的虛線表示隨機(jī)預(yù)測器的ROC曲線:它的AUROC為0.5。
AUROC介于0和1之間,AUROC = 1意味著預(yù)測模型是***的。事實上,AUROC距離0.5越遠(yuǎn)越好:如果AUROC <0.5,那么你只需要反轉(zhuǎn)模型所做的決定。因此,如果AUROC = 0,這是個好消息,因為您只需要反轉(zhuǎn)模型的輸出以獲得***的機(jī)器學(xué)習(xí)模型。
4. 懲罰算法:
下一個策略是使用懲罰學(xué)習(xí)算法,提高少數(shù)類的分類錯誤的成本。
該技術(shù)的流行算法是Penalized-SVM:支持向量機(jī)
在訓(xùn)練期間,我們可以使用參數(shù)class_weight ='balanced'來懲罰少數(shù)群體類的錯誤,其數(shù)量與其代表性不足的數(shù)量成正比。
如果我們想為支持向量機(jī)算法啟用概率估計,還需要包含參數(shù)probability=True。
讓我們在原始不平衡數(shù)據(jù)集上使用Penalized-SVM訓(xùn)練模型:
5. 使用基于樹的算法
我們將考慮的***策略是使用基于樹的算法。決策樹通常在不平衡數(shù)據(jù)集上表現(xiàn)良好,因為它們的層次結(jié)構(gòu)允許它們從兩個類中學(xué)習(xí)信號。
在現(xiàn)代應(yīng)用機(jī)器學(xué)習(xí)中,樹集合(隨機(jī)森林,梯度提升樹等)幾乎總是優(yōu)于單一決策樹:
97%的準(zhǔn)確率和接近100%的AUROC。
樹形組合已經(jīng)變得非常流行,因為它們在許多現(xiàn)實問題上表現(xiàn)得非常好。
然而:雖然這些結(jié)果令人鼓舞,但機(jī)器學(xué)習(xí)模型可能過度擬合,因此在做出最終決策之前,您仍應(yīng)在測試集上評估機(jī)器學(xué)習(xí)模型。