什么是ROC曲線
ROC曲線是什么意思,書面表述為:
“ROC 曲線(接收者操作特征曲線)是一種顯示分類模型在所有分類閾值下的效果的圖表。”
好吧,這很不直觀。其實就是一個二維曲線,橫軸是FPR,縱軸是TPR:

至於TPR,FPR怎么計算:
-
首先要明確,我們是在討論分類問題中,討論怎樣繪制ROC曲線的,大前提是分類問題。別想太多,就當是二分類問題好了,一類是Positive,一類是Negative
-
分類模型的預測結果,被閾值化之后,判定為TP,FP,TN,FN四種情況:
- if Y_pred ≥ thresh and Y_gt is Positive, then TP++
- if Y_pred ≥ thresh and Y_gt is Negative, then FP++
- if Y_pred < thresh and Y_gt is Positive, then FN++
- if Y_pred < thresh and Y_gt is Negative, then TN++
-
然后TPR, FPR的定義為
TPR = TP / (TP + FN) (也就是Recall)
FPR = FP / (FP + TN)
舉個栗子
假設你現在做機器學習筆試題,題目給了分類任務中的測試集標簽和分類模型的預測結果,也就是給了Y_pred和Y_gt,讓你手繪AUC曲線。Can you draw it?
答案一定是Yes, I can(看一下就會了)。
gt: [0, 1, 0, 1]. pred: [0.1, 0.35, 0.4, 0.8] 那么在閾值分別取{0.1, 0.35, 0.4, 0.8}的時候,分別判斷出每個pred是TP/FP/TN/FP中的哪個,進而得出當前閾值下的TPR和FPR,也就是(FPR, TPR)這一ROC曲線圖上的點;對於所有閾值都計算相應的(FPR, TPR),則得到完整的ROC曲線上的幾個關鍵點,再連線(稍微腦補一下?)就得到完整ROC曲線。(再進一步,AUC也可以計算了,不是嘛?)
計算過程如下:

繪制得到的ROC曲線為:

好吧,這個例子其實來自於如何繪制ROC曲線。
再舉一個例子好了:
對於一組二元分類任務的測試集,其真實值為[0, 0, 0, 0, 1, 1, 1],模型預測為1的概率為[0.3, 0.2, 0.7, 0.5, 0.4, 0.9, 0.6],該模型在這個測試集上的ROC曲線為?(題目來源:sofasofa.io,一個有趣的機器學習社區,里面的機器學習題庫)

對應的ROC曲線為:

