繪制ROC曲線


什么是ROC曲線

ROC曲線是什么意思,書面表述為:

“ROC 曲線(接收者操作特征曲線)是一種顯示分類模型在所有分類閾值下的效果的圖表。”

好吧,這很不直觀。其實就是一個二維曲線,橫軸是FPR,縱軸是TPR:

從谷歌tensorflow機器學習速成教程挖來的圖

至於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曲線為:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM