ROC 曲線可能是評估評分分類器的預測性能的最常用的度量。
預測正類(+1)和負類(-1)的分類器的混淆矩陣具有以下結構:
預測/參考類 | +1 | -1 |
+1 | TP | FP |
-1 | FN | TN |
這裡,TP表示真陽性的數量(模型正确預測正類),FP表示誤報的數量(模型錯誤地預測正類),FN表示假陰性的數量(模型錯誤地預測陰性類),TN表示真陰性的數量(模型正确預測陰性類)。
ROC曲線

plot.scores.AUC <- function (y, y.hat, measure = "tpr" , x.measure = "fpr" ) {
par(mfrow=c( 1 , 2 ))
hist(y.hat[y == 0 ], col=rgb( 1 , 0 , 0 , 0.5 ),
main = "Score Distribution" ,
breaks=seq(min(y.hat),max(y.hat)+ 1 , 1 ), xlab = "Prediction" )
hist(y.hat[y == 1 ], col = rgb( 0 ,<span style="color:#880000">0</span>,<span style="color:#880000">1</span>,<span style="color:#880000">0.5</span>), add=<span style="color:#78a960">T</span>,
breaks=seq(min(y.hat),max(y.hat) + <span
# plot ROC curve</span>
pr <- prediction(y.hat, y)
prf <- performance(pr, measure = measure, x.measure = x.measure)
auc <- performance(pr, measure = <span style="color:#880000">"auc"</span>)@y.values[
plot(prf, main = "Curve (AUC: "
AUC是完美的分類器
理想的分類器不會産生任何預測錯誤。這意味着分類器可以完美地分離這兩個類,使得模型在産生任何誤報之前實作100%的真正正率。是以,這種分類器的AUC是1,例如:
AUC是一個很好的分類器
将兩個類分開但不完美的分類器看起來像這樣:
可視化分類器能夠在非常低的FPR下獲得60%的靈敏度。
壞分類器的AUC
錯誤的分類器将輸出其值僅與結果稍微相關的分數。這樣的分類器将僅以高FPR為代價達到高TPR。
隻有在大約40%的FPR下,可視化分類器才能達到60%的靈敏度,這對于應該具有實際應用的分類器來說太高了。
随機分類器的AUC
随機分類器的AUC接近0.5。這很容易了解:對于每個正确的預測,下一個預測都是不正确的。
分類器的AUC表現比随機分類器差
[0.5,1][0.5,1]
可視化分類器在達到20%以上的靈敏度之前産生80%的FPR。
AUC-PR曲線
精确回憶曲線繪制陽性預測值(PPV,y軸)與真陽性率(TPR,x軸)。這些數量定義如下:
precisionrecall=PPV=TPTP+FP=TPR=TPTP+FNprecision=PPV=TPTP+FPrecall=TPR=TPTP+FN
例如,請考慮以下資料集:
在下文中,我将示範 AUC-PR 下的面積如何受預測性能的影響。
AUC-PR是完美的分類器
理想的分類器不會産生任何預測錯誤。是以,它将獲得1的AUC-PR:
AUC-PR是一個好的分類器
将兩個類分開但不完美的分類器将具有以下精确回憶曲線:
可視化分類器在沒有任何錯誤的正面預測的情況下達到約50%的召回率。
壞分類器的AUC-PR
錯誤的分類器将輸出其值僅與結果稍微相關的分數。這樣的分類器隻能以低精度達到高召回率:
召回率僅為20%時,分級機的精度僅為60%。
随機分類器的AUC-PR
随機分類器的AUC-PR接近0.5。這很容易了解:對于每個正确的預測,下一個預測都是不正确的。