1. 程式人生 > >ROC曲線 閾值評價標準

ROC曲線 閾值評價標準

               

 ROC曲線指受試者工作特徵曲線 / 接收器操作特性曲線(receiver operating characteristic curve), 是反映敏感性和特異性連續變數的綜合指標,是用構圖法揭示敏感性和特異性的相互關係,它通過將連續變數設定出多個不同的臨界值,從而計算出一系列敏感性和特異性,再以敏感性為縱座標、(1-特異性)為橫座標繪製成曲線,曲線下面積越大,診斷準確性越高。在ROC曲線上,最靠近座標圖左上方的點為敏感性和特異性均較高的臨界值。

ROC曲線的例子

  考慮一個二分問題,即將例項分成正類(positive)或負類(negative)。對一個二分問題來說,會出現四種情況。如果一個例項是正類並且也被 預測成正類,即為真正類(True positive),如果例項是負類被預測成正類,稱之為假正類(False positive)。相應地,如果例項是負類被預測成負類,稱之為真負類(True negative),正類被預測成負類則為假負類(false negative)。

  列聯表如下表所示,1代表正類,0代表負類。
預測
10合計
實際1True Positive(TP)False Negative(FN)Actual Positive(TP+FN)
0False Positive(FP)True Negative(TN)Actual Negative(FP+TN)
合計Predicted Positive(TP+FP)Predicted Negative(FN+TN)TP+FP+FN+TN

從列聯表引入兩個新名詞。其一是真正類率(true positive rate ,TPR), 計算公式為TPR=TP/ (TPFN),刻畫的是分類器所識別出的 正例項佔所有正例項的比例。另外一個是假正類率(false positive rate, FPR

),計算公式為FPR= FP / (FP + TN),計算的是分類器錯認為正類的負例項佔所有負例項的比例。還有一個真負類率(True Negative Rate,TNR),也稱為specificity,計算公式為TNR=TN/ (FPTN) = 1-FPR


其中,兩列True matches和True non-match分別代表應該匹配上和不應該匹配上的

兩行Pred matches和Pred non-match分別代表預測匹配上和預測匹配上的

FPR = FP/(FP + TN) 負樣本中的錯判率(假警報率)

TPR = TP/(TP + FN) 判對樣本中的正樣本率(命中率)

ACC = (TP + TN) / (P+N) 判對準確率

  在一個二分類模型中,對於所得到的連續結果,假設已確定一個閥值,比如說 0.6,大於這個值的例項劃歸為正類,小於這個值則劃到負類中。如果減小閥值,減到0.5,固然能識別出更多的正類,也就是提高了識別出的正例佔所有正例 的比類,即TPR,但同時也將更多的負例項當作了正例項,即提高了FPR。為了形象化這一變化,在此引入ROC,ROC曲線可以用於評價一個分類器


ROC曲線和它相關的比率

(a)理想情況下,TPR應該接近1,FPR應該接近0。

ROC曲線上的每一個點對應於一個threshold,對於一個分類器,每個threshold下會有一個TPR和FPR

比如Threshold最大時,TP=FP=0,對應於原點;Threshold最小時,TN=FN=0,對應於右上角的點(1,1)

(b)隨著閾值theta增加,TP和FP都減小,TPR和FPR也減小,ROC點向左下移動;

  Receiver Operating Characteristic,翻譯為"接受者操作特性曲線",夠拗口的。曲線由兩個變數1-specificity 和 Sensitivity繪製. 1-specificity=FPR,即假正類率。Sensitivity即是真正類率,TPR(True positive rate),反映了正類覆蓋程度。這個組合以1-specificity對sensitivity,即是以代價(costs)對收益(benefits)。

       此外,ROC曲線還可以用來計算“均值平均精度”(mean average precision),這是當你通過改變閾值來選擇最好的結果時所得到的平均精度(PPV).

  下表是一個邏輯迴歸得到的結果。將得到的實數值按大到小劃分成10個個數 相同的部分。
Percentile例項數正例數1-特異度(%)敏感度(%)
10618048792.7334.64
20618028049.8054.55
306180216518.2269.92
406180150628.0180.62
50618098738.9087.62
60618052950.7491.38
70618036562.9393.97
80618029475.2696.06
90618029787.5998.17
1006177258100.00100.00
其正例數為此部分裡實際的正類數。也就是說,將邏輯迴歸得到的結 果按從大到小排列,倘若以前10%的數值作為閥值,即將前10%的例項都劃歸為正類,6180個。其中,正確的個數為4879個,佔所有正類的 4879/14084*100%=34.64%,即敏感度;另外,有6180-4879=1301個負例項被錯劃為正類,佔所有負類的1301 /47713*100%=2.73%,即1-特異度。以這兩組值分別作為x值和y值,在excel中作散點圖。