ROC的介紹可以參考wiki
https://en.wikipedia.org/wiki/Receiver_operating_characteristic
偷一張wiki上的圖片:
AUC ROC的意思為ROC 曲線下方的面積(Area under the Curve of ROC)
ROC曲線:偽陽性率(FPR)定位為X軸,真陽性率(TPR)定義為Y軸。
TPR: 在所有實際為陽性的樣本中,被正確地判斷為陽性的比率 TRP = TP / (TP + FN)
<也稱為正樣本的召回率,或者覆蓋率>
FPR:在所有實際為陰性的樣本中,被錯誤地判斷為陽性的比率 FPR = FP / (FP + TN)
<也稱為負樣本的召回率,或者取偽率>
隨帶說明其他的指標:
准確率Accuracy = (TP + TN) / (TP + FP + FN + TN)
精確率Precision = TP / (TP + FP ) 也稱為命中率(正確預測到的正例數 / 預測正例總數)
給定一個二元分類模型和它的閾值,就能從所有樣本的真實值和預測值計算出一個坐標點。
用一個例子來說明如何計算這些坐標點:
y_true = [1, 1, 0, 0, 1]
y_score = [0.5, 0.6, 0.55, 0.4, 0.7 ]
現在我們選擇一個閾值0.55,如果大於0.55則歸為類別1,如果小於等於0.55則歸為類別0.則y_pred = [0, 1, 0, 0, 1],TP=2 FN=1 TN=2 FP=0,可以計算得出TPR= 0.67,FPR=0.
如果使用Python的話, 可以直接調用sklearn.metrics.roc_curve來計算坐標點和閾值。fpr, tpr, thresholds = sklearn.metrics.roc_curve(y_true, y_score)。
此時ROC曲線如下:
如果曲線下的面積AUC,也可以使用sklearn中的方法計算:auc = metrics.auc(fpr,tpr)
至此,AUC的計算完成了,但是AUC這個模型評價指標應該如何理解呢?
在知乎上搜到的(https://www.zhihu.com/question/39840928?from=profile_question_card):
AUC就是從所有1樣本中隨機選取一個樣本,從所有0樣本中隨機選取一個樣本,然后根據你的分類器對兩個隨機樣本進行預測,把1樣本預測為1的概率為p1, 把0樣本預測為1的概率為p0,p1>p0的概率就等於AUC。所有AUC反應的是分類器對樣本的排序能力。根據這個解釋,如果我們完全隨機的對樣本分類,那么AUC應該接近0.5。另外,AUC對樣本類別是否均衡並不敏感,這也是不均衡樣本通常用AUC評價分類器性能的一個原因。
以后慢慢了解了。