二分類模型評估之AUC ROC


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評價分類器性能的一個原因。

以后慢慢了解了。

 


免責聲明!

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



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