ROC 曲線與 AUC
ROC 曲線及其摘要 AUC,回答了每個二元分類器都會引出的問題:模型輸出一個連續分數,但你必須挑一個閾值把分數轉成是/否的決策——那麼,撇開閾值設在哪裡不談,模型本身有多好?ROC 曲線不固守單一切點,而是一次展示模型在每一個可能閾值下的行為,AUC 則把整條曲線濃縮成一個與閾值無關的單一數字。
ROC(接收者操作特徵)曲線在縱軸畫出真正例率(TPR = 召回率 = TP/(TP+FN),你抓到的真實正例比例),在橫軸畫出假正例率(FPR = FP/(FP+TN),你誤標的真實負例比例)。當你把閾值從嚴格掃到寬鬆,就描出一條由左下(什麼都不抓、零假警報)到右上(全抓、全是假警報)的曲線。能完美分開兩類的模型會緊貼左上角;隨機亂猜的模型則沿著對角線 TPR = FPR 走。
AUC,即此曲線下的面積(常稱 AUROC),把曲線壓成一個介於 0 到 1 的數字。AUC = 0.5 是隨機亂猜;AUC = 1.0 是完美;低於 0.5 代表模型與真相反相關(你可以把它的決策反過來用)。AUC 有個漂亮的機率意義:它恰好等於「模型給一個隨機抽出的正例的分數,高於一個隨機抽出的負例的分數」的機率。換言之,AUC 衡量的是排序品質——分數把正例排在負例之上排得多好——而不在意任何特定閾值,也不在意實際機率值的校準。
這種與閾值無關,既是 AUC 的長處,也是它的盲點。因為 FPR 的分母包含所有真負例,ROC 在嚴重類別不平衡下可能顯得樂觀而討喜:當負例眾多時,少數幾個假正例幾乎推不動 FPR,即使在絕對數量上這些假正例可能淹沒了寥寥幾個真正例。在這種情形下,精確率–召回率曲線及其面積(平均精確率)會給出更誠實的圖像。對於大致平衡的排序問題、或比較各模型的可分性時用 ROC-AUC;當正例稀少且假正例代價高昂時,請改用 PR-AUC。
高 AUC 不代表模型的機率值可信。AUC 只評斷排序,因此一個模型可以排序完美(AUC = 1),卻系統性地輸出過度自信的分數;分數本身是否可信是另一個性質,由「校準」來衡量。