當(dāng)機(jī)器學(xué)習(xí)中遇到類(lèi)不平衡,該怎么辦?
類(lèi)失衡:假設(shè)您有一個(gè)罕見(jiàn)的疾病機(jī)器學(xué)習(xí)數(shù)據(jù)集,即大約8%的陽(yáng)性。在這種情況下,即使你不訓(xùn)練,只是簡(jiǎn)單地說(shuō)沒(méi)有生病,這也會(huì)給出92%的準(zhǔn)確率。因此,在類(lèi)不平衡的情況下,準(zhǔn)確性是不準(zhǔn)確的。
在本指南中,我們介紹了處理機(jī)器學(xué)習(xí)中不平衡類(lèi)的5種策略:
對(duì)少數(shù)類(lèi)進(jìn)行上采樣
對(duì)多數(shù)類(lèi)進(jìn)行下采樣
更改性能指標(biāo)
懲罰算法
使用基于樹(shù)的算法
1. 上采樣少數(shù)類(lèi):指隨機(jī)復(fù)制少數(shù)類(lèi)的觀(guān)察結(jié)果,使樣本數(shù)量與多數(shù)類(lèi)匹配。
首先,我們將每個(gè)類(lèi)的觀(guān)察結(jié)果分成不同的DataFrame。
接下來(lái),我們將使用替換重取樣少數(shù)類(lèi),設(shè)置樣本數(shù)以匹配多數(shù)類(lèi)的樣本數(shù)。
最后,我們將上采樣的少數(shù)類(lèi)DataFrame與原始的多數(shù)類(lèi)DataFrame相結(jié)合。
創(chuàng)建合成樣本(數(shù)據(jù)增強(qiáng))
創(chuàng)建合成樣本是上采樣的近親,有些人可能會(huì)將它們歸類(lèi)在一起。例如,SMOTE算法是一種從少數(shù)類(lèi)中重新采樣的方法,同時(shí)稍微調(diào)整特征值,從而創(chuàng)建“新的”樣本。
2. 下采樣多數(shù)類(lèi):下采樣涉及從多數(shù)類(lèi)中隨機(jī)移除觀(guān)測(cè)值,以防止其信號(hào)支配學(xué)習(xí)算法。
首先,我們將每個(gè)類(lèi)的觀(guān)察結(jié)果分成不同的DataFrame。
接下來(lái),我們將重采樣多數(shù)類(lèi)而不進(jìn)行替換,將樣本數(shù)設(shè)置為與少數(shù)類(lèi)相匹配。
最后,我們將下采樣的多數(shù)類(lèi)DataFrame與原始的少數(shù)類(lèi)DataFrame結(jié)合起來(lái)。
3. 更改性能指標(biāo):AUROC(ROC曲線(xiàn)下面積)
假設(shè)我們有一個(gè)概率的二元分類(lèi)器,如邏輯回歸。
在呈現(xiàn)ROC曲線(xiàn)之前,必須理解混淆矩陣的概念。當(dāng)我們進(jìn)行二元預(yù)測(cè)時(shí),可以有4種類(lèi)型的結(jié)果:
我們預(yù)測(cè)0而真正的類(lèi)實(shí)際上是0:這被稱(chēng)為真陰性,即我們正確地預(yù)測(cè)該類(lèi)是負(fù)的(0)。例如,防病毒軟件未將無(wú)害文件檢測(cè)為病毒。
我們預(yù)測(cè)0而真正的類(lèi)實(shí)際上是1:這被稱(chēng)為假陰性,即我們錯(cuò)誤地預(yù)測(cè)該類(lèi)是負(fù)的(0)。例如,防病毒軟件無(wú)法檢測(cè)到病毒。
我們預(yù)測(cè)1而真正的類(lèi)實(shí)際上是0:這被稱(chēng)為假陽(yáng)性,即我們錯(cuò)誤地預(yù)測(cè)該類(lèi)是正的(1)。例如,防病毒軟件認(rèn)為無(wú)害文件是病毒。
我們預(yù)測(cè)1而真正的類(lèi)實(shí)際上是1:這被稱(chēng)為真陽(yáng)性,即我們正確地預(yù)測(cè)該類(lèi)是正的(1)。例如,防病毒軟件正確地檢測(cè)到了病毒。
為了獲得混淆矩陣,我們回顧機(jī)器學(xué)習(xí)項(xiàng)模型所做的所有預(yù)測(cè),并計(jì)算這4種結(jié)果中的每一種發(fā)生的次數(shù):
在這個(gè)混淆矩陣的例子中,在被分類(lèi)的50個(gè)數(shù)據(jù)點(diǎn)中,45個(gè)被正確分類(lèi),5個(gè)被錯(cuò)誤分類(lèi)。
由于為了比較不同的模型,通常使用單個(gè)度量比使用多個(gè)度量更方便,所以我們從混淆矩陣中計(jì)算兩個(gè)度量,然后將其合并為一個(gè):
真陽(yáng)性率(TPR),又名靈敏度、命中率和召回率,定義為+TPTP+ FN。直觀(guān)地,該度量對(duì)應(yīng)于相對(duì)于所有正數(shù)據(jù)點(diǎn)被正確認(rèn)為為正的正數(shù)據(jù)點(diǎn)的比例。換句話(huà)說(shuō),TPR越高,我們將錯(cuò)過(guò)的正數(shù)據(jù)點(diǎn)越少。
假陽(yáng)性率(FPR),又名 fall-out,定義為+FPFP+ TN。直觀(guān)地,該度量對(duì)應(yīng)于相對(duì)于所有負(fù)數(shù)據(jù)點(diǎn)被錯(cuò)誤地認(rèn)為是正數(shù)的負(fù)數(shù)據(jù)點(diǎn)的比例。換句話(huà)說(shuō),F(xiàn)PR越高,更多的負(fù)數(shù)據(jù)點(diǎn)將被錯(cuò)誤分類(lèi)。
為了將FPR和TPR合并為一個(gè)度量,我們首先計(jì)算邏輯回歸中具有許多不同閾值的前兩個(gè)度量(例如0.00、0.01、0.02、……、1.000.00;0.01、0.02、……、1.00),然后將它們繪制在一個(gè)圖上,橫坐標(biāo)上是FPR值,縱坐標(biāo)上是TPR值。得到的曲線(xiàn)稱(chēng)為ROC曲線(xiàn),我們考慮的度量是這條曲線(xiàn)的AUC,我們稱(chēng)之為AUROC。
下圖以圖形方式顯示AUROC:
在該圖中,藍(lán)色區(qū)域?qū)?yīng)于A(yíng)UROC的曲線(xiàn)下面積。對(duì)角線(xiàn)中的虛線(xiàn)表示隨機(jī)預(yù)測(cè)器的ROC曲線(xiàn):它的AUROC為0.5。
AUROC介于0和1之間,AUROC = 1意味著預(yù)測(cè)模型是完美的。事實(shí)上,AUROC距離0.5越遠(yuǎn)越好:如果AUROC