二分類模型評估之AUC ROC

ROC的介紹能夠參考wiki性能

https://en.wikipedia.org/wiki/Receiver_operating_characteristicspa

偷一張wiki上的圖片:blog

 

AUC ROC的意思爲ROC 曲線下方的面積(Area under the Curve of ROC)排序

ROC曲線:僞陽性率(FPR)定位爲X軸,真陽性率(TPR)定義爲Y軸。

圖片

TPR: 在全部實際爲陽性的樣本中,被正確地判斷爲陽性的比率 TRP = TP / (TP + FN)ip

<也稱爲正樣本的召回率,或者覆蓋率>ci

FPR:在全部實際爲陰性的樣本中,被錯誤地判斷爲陽性的比率 FPR = FP / (FP + TN)io

<也稱爲負樣本的召回率,或者取僞率>file

隨帶說明其餘的指標:方法

準確率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評價分類器性能的一個緣由。

之後慢慢了解了。

相關文章
相關標籤/搜索