機器學習之類別不平衡問題:不平衡問題的常用指標
在上一篇中,我們主要介紹了機器學習中分類模型的評價指標,這些指標主要是基於混淆矩陣演變而來,不同的指標有著不同的適用性。在不平衡問題中,單一的指標就不太適用了,如準確率等。在本篇中,我們來看看有哪些指標能夠反映模型的效果,以及在不平衡問題中我們應該採用哪些指標作為我們評價的標準。本篇主要介紹 ROC 曲線和 PR 曲線及其對應的 AUC ,以及 K-S 曲線。
那麼先來看看什麼是類別不平衡問題。
1 、什麼是類別不平衡問題
所謂的類別不平衡問題指的是資料集中各個類別的樣本數量極不均衡。以二分類問題為例,假設正類的樣本數量遠大於負類的樣本數量,通常情況下把樣本類別比例超過 4:1 的資料就可以稱為不平衡資料,因為此時某些分類器就會因為資料的不平衡性而無法達到效能上的要求。類別不平衡問題是現實中很常見的問題,最常見的例子是欺詐交易檢測,欺詐交易的訂單應該是佔總交易數量極少部分;又如工廠中產品質量檢測問題,合格產品的數量應該是遠大於不合格產品的。因此,在類別不平衡問題中,一些簡單、常用的評價指標(準確率和錯誤率等)就不再適用了。 在分類問題中,我們通常 是將比較 關注的類作為 正 類, 另外 的作為負類。
2、 ROC 曲線
ROC 曲線( Receiver Operating Characteristic )在風控領域、醫學領域比較常用。 ROC 曲線曲線下的面積( AUC , Area under Curve ),能夠用來直觀的評價分類器泛化效能 的 好壞,其值介於 0.5 到 1 之間,值越大,表明分類器的泛化效能越好。在大多數比賽中常被用來作為評分標準。
ROC 曲線最初是針對二分類問題,因此於常用在二分類問題中,當然在多分類問題下,也能夠獲取到 ROC 曲線,本文主要介紹二分類問題下的 ROC 曲線。
ROC曲線圖
可以看到 ROC 曲線的橫軸座標分別是我們上篇文章中提到的 False Positive Rate (FPR ,假正例率 ) 和 True Positive Rate (TPR ,真正例率 ) 又稱 Sensitivity( 敏感性 ) 、 Recall ( 查全率,召回率 ) 。可以回顧下兩者的具體定義。
上圖的 ROC 曲線使用的 資料集的樣本量為 5000 ,特徵數量為 10 ,正負類 比例為 492: 4508 。將資料集的 80% 樣本作為訓練集, 20% 樣本作為測試集,測試集中 正負樣本的比例為 98 : 901 ,使用邏輯迴歸( LR , Logistic Regression )演算法並畫出該分類器的 ROC 曲線(藍線)。
由於我們的分類器對每個樣本的預測結果是該樣本屬於正負類的概率值。最終得到預測樣本的類別還需要通過一個閾值進行判斷,通常情況下,我們會認為屬於哪個類別的概率大,該樣本就屬於哪個類,此時我們取的閾值 (threshold) 為 0.5 。得到樣本的類別後我們就可以得到對應的混淆矩陣,也就能夠得到在這個閾值下分類器的 TPR 和 FPR 了。
於是我們便可以去繪製 ROC 曲線了。將預測得到的樣本概率從大到小排序,於是“最可能 ”屬於正類的樣本 排在了最前面, “最不可能 ”屬於正類的 樣本排 到了最後面 。然後分別取每一個樣本的概率作為閾值,將整個 測試集切分 成兩個部分 ,前一部分則作為正類 ,後一部分則作為 負類。 接著就可以 計算當前閾值下分類器的 TPR 和 FPR ,以 TPR 和 FPR 為縱、橫軸作圖。當測試集的樣本數量較小時, ROC 曲線會顯的“不光滑”呈現階梯狀,如下圖所示,下圖的測試集樣本數為 19 。因此 ROC 曲線實際上是不同閾值下 TPR 和 FPR 的軌跡,是二者之間的一個權衡。曲線越靠近左上角,意味著模型的整體效能越好。
另外圖中的紅色虛線是隨機線也稱無識別率線,在該線上的任意一點都表示對應閾值下 TPR 與 FPR 相等,對應的 是 “ 隨機 猜測 ” 模型,該 模型 沒有任何的識別能力。
而 AUC 則是 ROC 曲線下的面積,其意義為:假設一個分類器的 AUC 值為 0.7 ,表示的是在測試集的正樣本中隨機抽取一個樣本 A ,再從測試集的負樣本中隨機抽取一個樣本 B ,在 70% 的情況下,分類器判斷 A 為正樣本的“可能性”比判斷 B 為正樣本的“可能性”大,即分類器預測 A 為正類的概率大於 B 。在隨機線上方的點,即為 TPR 大於 FPR 的點,這樣的點表示的是正樣本被判斷為正樣本的概率大於負樣本被判斷為正樣本的概率。
ROC 曲線的優缺點
由於 ROC 曲線使用了 TPR 和 FPR 兩個指標,從 兩者的計算公式可以看出, TPR 主要關注正類的預測結果, FPR 主要關注負類的預測結果, ROC 曲線結合二者,作為 二者之間的一個權衡 能夠 反映模型的整體效能。
同時 , ROC 曲線 使用的兩個指標, 都只 關注某一 類, 因此 當樣本 中某一類的數量 發生變化,即樣本 的 正負 類比例發生變動 時, ROC 曲線 也不會 發生明顯 的變化。 同樣 在上述的資料集上,我們將測試集的 負 樣本個數 增加 10 倍, 即 測試集 中 正 負樣本 變 為 98 : 9010 ,此時 的 ROC 曲線如 下圖中綠 線 所示,藍線 為 之前的 ROC 曲線 。 可以 看到 增加 了 10 倍 的 負 樣本後, ROC 曲線沒有 明顯的變化 ,表明 ROC 曲線在類別數量發生明顯改變的情況下依然能客觀地識別出較好的分類器, 具有魯棒性。 相反, 後續將提到的 PR 曲線在這 種 情況 下就會有明顯的變化。
負樣本增加10倍後的ROC曲線與原始ROC曲線圖
在某些情況 下, ROC 曲線 不受 類別個數 影響 的 優點也是其缺點。 正如 上述的例子中,當 負 樣本增加了 10 倍 之後,從 ROC 曲線 上無法 反映 出 變化 。 從下圖的混淆 矩陣中, 我們可以 明顯的看出兩種情況下的區別。 可以 看到此時 實際為負,預測為正的樣本 點大量增加( 即 FP ) , 這將導致 正 類的 精準率( Precision ) 顯著 的降低 。從分類 報告中可以看到 正 類的 Precision 從 0.94 降低 到了 0.14 。也就是 說,在 極 不平衡 的 資料集下, ROC 曲線會給出 一個 過於 樂觀的 估計 。
(a) 原始資料的混淆矩陣
(b) 負樣本增加10倍後的混淆矩陣
(a) 原始資料的分類報告
precision |
recall |
f1-score |
support |
|
Positive |
0.94 |
0.17 |
0.29 |
98 |
Negative |
0.92 |
1.00 |
0.96 |
901 |
Avg/ total |
0.92 |
0.92 |
0.89 |
999 |
(b) 負樣本增加10倍後 的分類報告
precision |
recall |
f1-score |
support |
|
Positive |
0.14 |
0.16 |
0.15 |
98 |
Negative |
0.99 |
0.99 |
0.99 |
9010 |
Avg/ total |
0.98 |
0.98 |
0.98 |
9108 |
3、 P-R 曲線
所謂 的 P-R 曲線就是 Precision - Recal l 的曲線, 也就是查準 率 - 查全 率 曲線 ,以 Precision 為橫座標 , Recal l 為 縱座標就可以畫出 P-R 曲線 了。
同樣 使用上述的資料集( 正 負樣本比例為 492: 4508 ) , 得到的 P-R 曲線如 下圖所示 。
P-R曲線圖
P-R 曲線 與 ROC 曲線 的相同之處 是 它們都使用 了 TPR ( R ecall 、 Sensitivity )作為 影象的一個座標軸 , 另外與 ROC 曲線 一樣, P-R 曲線 也 能 計算 AUC , 用來衡量 分類器 的 好壞 。 但是 與 ROC 曲線 的不同之處在於 另一個 座標軸的選取, ROC 曲線 使用的是 FPR , 而 P-R 曲線 使用的是 Precision ,所以 P-R 曲線主要關注 正 類 樣本的分類情況。 在 類別不平衡問題中 , 我們主要關心的是少數類的 情況 , 相較於 ROC 曲線 , P-R 曲線對 模型的評估會 更準確 。
對於上面將 正樣本增加 10 倍 的情況下, P-R 曲線 的結果 如下 。 可以 看到, 此時 下圖中 P - R 曲線與 原來相比有了 明顯 的 下降,對應 的 PR - AUC 值顯著 下降 。 而對應的 ROC 曲線在負樣本增加 10 倍後整體趨勢沒有發生明顯的變化。
負樣本增加10倍後的P-R曲線與原始P-R曲線圖
負樣本增加10倍後的ROC曲線與原始ROC曲線圖
4 、 K-S 曲線
K -S (Kolmogorov-Smirnov) 曲線與 ROC 曲線 一樣 , 使用 TPR 和 FPR 兩個 指標, 與 ROC 曲線 的區別 主要 在 橫縱 座標的選取上。 以 TPR 和 FPR 分別作為縱軸,以閾值作為橫軸,畫出兩條曲線, K - S 曲線則是兩條曲線在每一個閾值下的差值。 K -S 曲線中 的最大值 表示 的是 K-S 統計量
K-S = max(TPR-FPR)
其 反映的是 分類器對 正負類 最優 的區分能力 , 此時所對應的閾值可以 區分 正負類的最優閾值。 K-S 值越大,表明分類器對正 負類的區分能力 越好。一般而言, K - S>0.2 即可認為分類器有比較好的區分能力。 下圖分別為上文中原始資料集和負樣本增加 10 倍後資料集對應的 K-S 曲線。
原始資料集的K-S曲線圖
負樣本增加10倍後的K-S曲線圖
K - S 曲線 的起始點即 K-S 值為 0 時,表示 的是 沒有區分能力的 “ 隨機 猜測 ” 模型。 另外 需要注意 的是, K -S 值所 代表 的 僅僅是 分類器對 樣本的分隔能力, 意味 著 正 負類樣本完全分錯的情況下, K-S 值 也 能夠很高 。
本文 主要介紹了 類別 不平衡問題中常用的 指標 ,並對每 種 曲線的繪製方法以及優缺點做了比較全面的說明。具體 總結 如下:
1、 在 正負 樣本 數量充足 的情況下, 由於ROC曲線 兼顧正類與負類, 能夠較好 的反映 模型 的 整體效果,且ROC曲線 不 容易 受 樣本數量 變化的影響 。
2、 在 類別不平衡問題中, 此時 我們關注樣本較少的類 (正 類 ),這 時 通過 P-R 曲線 能夠 對 分類器有一個 較為 準確的判斷 ,而ROC曲線會給出一個過於樂觀的估計。
3、 具體場景 具體分析, ROC曲線 和 P-R曲線 都能 說明 一定的問題 ,可以 將二者同時畫出,在影象中找到 最優 的點,同時結合混淆矩陣 以及 F1-scores 等 指標 來調整 閾值。
4、 K-S 曲線是TPR- 閾值曲線與 FPR - 閾值曲線的差值,其最大值是 K-S統計量 ,反映的是分類器 對 正負類的區分能力 。K-S值 越大 表明 分類器的區分能力 越 強,但是並不能說明模型的分類準確性越好。