在機器學習的分類問題中,ROC 曲線可以幫助資料科學家衡量分類器在不同閾值下的決策品質。問題是:最後我該選哪個閾值呢?有標準可以找出最佳閾值嗎?這篇文章將會探討這些問題。
ROC 曲線的功能是為二分類的機器學習模型呈現真陽性與偽陽性率之間的權衡:
- ROC 曲線的 Y 軸:真陽性率是所有真實正樣本被正確分類成正樣本的比例
- ROC 曲線的 X 軸:偽陽性率是所有真實負樣本被錯誤分類成正樣本的比例
如果光是看到這裡腦袋就已經打結了,我很推薦你先參考筆者的 這篇文章 ,用圖像來輕鬆學習這些複雜的指標。
ROC 曲線上的每個點都代表不同閾值,每個點各自會算出不同真陽性與偽陽性率,那麼最後進行預測任務時,該選哪個閾值呢?資料科學的工具箱有法寶可以解決這個問題!
這則資料科學筆記將會分享 3 種在 ROC 曲線上選擇最佳閾值的方法,包括 Youden’s J statistic 與最近距離法,還有一種用肉眼就能看出最佳閾值的平行線判別法。相信你學會這些方法後,下次再看到 ROC 曲線時,你一秒內就能掌握最佳閾值!
目錄
ROC 曲線的最佳閾值
處理二分類問題的機器學習模型,只會輸出像是「34%」這種 機率數值,而不會直接回答「是」或「否」。我們作為決策者,需要自己根據機率值判斷到底該怎麼分類。決定分類標準的機率值門檻值,就是我們要探討的閾值(Threshold 或者 Cut-off)。例如,在預測明天是否會下雨的任務中,如果分類模型輸出降雨機率是 34%:
- 若設定閾值為 50%,因為 34% 小於閾值,我們決策是相信明天不會下雨
- 若設定閾值為 25%,因為 34% 大於閾值,我們決策則是相信明天會下雨
設定很高的閾值,會使得決策趨於保守、較為不敢預測為正樣本,但是,偽陽性錯誤也會因此降低;相反地,設定很低的閾值,會使預測為正樣本的門檻降低,預測正樣本變多、真陽性正確率提高,但也使偽陽性錯誤提高。
ROC 曲線上的閾值正是在呈現這種真陽性與偽陽性率之間的權衡,隨著閾值改變,真陽性與偽陽性率其中一方會提高、另一方會降低。因此,我們需要有統計方法來衡量選擇哪個閾值會達到最好的平衡,能使得二分類任務達到最佳效益。
最佳閾值怎麼找?
事實上,在 ROC 曲線上選擇最佳閾值的方法有非常多種,例如光是這篇 解析文章 提到的就超過 6 種。
以下,筆者好豪將簡短介紹我自己喜歡的其中 3 種方法,它們都是常見、有文獻支持其有效性、而且算法不複雜的最佳閾值篩選法。
Youden Index
Youden index(又稱 Youden’s J statistic)經常應用於 ROC 曲線的分析。ROC 曲線上的每個點根據不同閾值會各自算出這項指標,然後我們把 Youden Index 數值最大的那個點視為最佳閾值。
Youden index (以 J
表示)的 計算公式 如下:
用 ROC 曲線上的指標來呈現的話,正是 Y 軸減去 X 軸數據:
J = Sensitivity + Specificity - 1 = TPR - FPR
Youden index 計算為 TPR – FPR
Youden index 數值最大的資料點,即是其中一種在 ROC 曲線選擇最佳閾值的方式
如上所示,Youden Index 的算法十分簡單,不論用 Python 或 R 語言,都能很容易地算出來,幫 ROC 曲線的每個資料點都算出 TPR - FPR
,再取個最大值,輕輕鬆鬆找出最佳閾值。
Youden Index 亦存在圖形上的意義,它代表從 ROC 上某一點到 45 度的「完全亂猜」線之間的垂直距離,這個垂直距離最大的點,可以視為 ROC 曲線的最佳閾值。如下圖示,由於 45 度線代表 TPR = FPR
,所以 45 度線到 ROC 線上某點的垂直距離可以用 TPR - FPR
計算,此數值也正是 Youden index:
一眼就能看出來的平行線圖解法
這篇資料科學筆記中,筆者好豪最喜歡的是這個肉眼就能一秒判別最佳閾值的方法:
把代表「完全亂猜」的 45 度線往左上角平行移動
此平行線保持與 ROC 曲線交集、又最靠近左上角時
此時平行線與 ROC 曲線交界點即是最佳閾值
你是否同意,用這個方法的確可以只用眼睛「秒解」最佳閾值呢?然而,為什麼這招簡單到這麼神奇呢?因為這個方法的數學意義正是前面介紹的 Youden index,只不過是在圖形上從另個角度來理解罷了!
「畫圈圈」的最近距離法
另一個在 ROC 曲線上找出最佳閾值的方法,是利用歐氏距離(Euclidean distance),找出 ROC 曲線上與最左上角的點最相近的資料點。
這個閾值選擇標準的直覺也不複雜,我們知道 TPR 與 FPR 座標圖上,最左上角的點代表「完美分類」,既然如此,ROC 曲線上越接近左上角的點,當然就代表越接近完美分類囉。
要計算這個最近距離法,使用國高中學過的數學就足夠了。相信你已經學過歐氏距離:如果二維座標上有兩個點分別是 (x1, y1)
與 (x2, y2)
,那麼他們的歐氏距離會是 (x1 - x2)^2 + (y1 - y2)^2
再開根號。
以前數學課也學過,要找出某個點到某個曲線的最近距離,就以該座標為中心「畫圈圈」,能畫出最大的圈圈、並且剛好與另個曲線相切(只交會於一點),那個圓的半徑就是我們要找的最小距離。
同理,我們想在 TPR 與 FPR 座標圖上找出 ROC 曲線之中與最左上角的點最接近的那個點,就幫最左上的點畫圈圈、並讓圈圈持續擴大,剛好碰到 ROC 曲線的最大圈圈,其與 ROC 曲線交會的那個點,將會歐氏距離最小的點、正是我們要找的最佳閾值。
在此筆者必須提醒:不同方法找到的最佳閾值可能不一樣!這些統計方法選擇出的最佳閾值雖然在大多時候相同(或接近),但仍存在某些 ROC 曲線的形狀會讓不同閾值選擇標準找出不同的最佳閾值。以下這張圖就是其中一種 Youden Index 與最近距離法得出不同結論的案例,其來源的 研究論文 有更詳盡的探討:
至此,我們也值得回頭思考更原始的問題:真的存在最佳閾值嗎?閾值「最佳」是什麼意思?像 Youden index 一樣 只用一個數值 代表此閾值最好,可信嗎?
筆者好豪認為,以上這些「最佳」閾值選擇方法是提供我們的決策流程一個參考指標,而不代表選出的閾值真的「最佳」,我們可以先看看模型與統計方法的最佳閾值提供什麼訊息、再依此調整出我們真正需要的機率閾值。最終該怎麼調整閾值,我們還是要考慮實戰情境。
最佳閾值還需考慮實戰情境
延續文章前半段提過的降雨預測範例,假設你使用了上面學會的方法,為你的二分類機器學習模型算出 ROC 曲線的最佳閾值是 60%,那麼,當模型輸出降雨機率是 50%,你明天敢在戶外曬衣服嗎?
統計方法選出的最佳閾值
並不代表它完美符合實際應用情境的需要
最佳閾值最終該怎麼選擇,仍取決於實際應用情境之中偽陽性與偽陰性的成本。偽陽性表示答案為負樣本、卻被我們預測為正樣本,如果能接受偽陽性增加,那麼把閾值降低也沒關係、這樣偵測到的正樣本總數就會提高;相對地,偽陰性表示答案為正樣本、卻被預測為負樣本,如果能接受偽陰性提高,就能設定較高的閾值、也就能減少偽陽性錯誤發生。
舉例而言,如果我們要進行的是預測某人是否罹患癌症的二分類問題,偽陰性的成本將會特別高。如果某人明明有罹患癌症,我們的預測卻告訴他沒有,讓他忽略不做進一步健康檢查,這種偽陰性表示我們會錯失救人一命的機會!因此,在這種偽陰性成本極高的案例,我們傾向降低閾值、讓偽陰性錯誤數量下降。
此外,最佳閾值選擇也常取決於預測目標資料的分佈。Kaggle 類型的資料科學競賽最常使用 Cross Validation 的方式,把閾值也當成 超參數 之一,透過實驗結果選擇出最適合預測目標資料集分佈的閾值。更甚者,Kaggle 參賽者也常會直接針對 Public Leaderboard 實驗閾值的超參數最佳化,此方法俗稱 Overfitting the Leaderboard。
《Kaggle 競賽攻頂秘笈》一書針對資料科學競賽於此類型閾值與超參數最佳化有超詳盡的技巧介紹,如果你想更進一步瞭解預測模型實戰技巧,推薦你閱讀。
結語
在 ROC 曲線上選擇閾值是重要的步驟,閾值有無限多種可能性,我們終究需要選擇其中一種機率門檻值來幫助我們做出最終決策。而最佳閾值的選擇方式有許多種,本篇筆記整理了 Youden Index、45 度線視覺判別法、還有最近距離法等等。雖然還存在更多統計方法來選擇閾值,但這幾種就足以應付大多情況,畢竟,最終我們還是需要依照實戰情境的偽陽性與偽陰性權衡,來決定該使用哪個閾值。
如果這篇文章有幫助到你,我相信筆者的以下兩篇文章你也會有興趣,歡迎你閱讀或收藏:
參考書籍:
最後,歡迎追蹤好豪的 Facebook 粉絲專頁,我會繼續分享數據分析與機器學習的知識;也可以點選下方按鈕,分享給熱愛資料科學的朋友們。