分类器评价与在R中的实现:ROC图与AUC
分類模型評價一般有以下幾種方法:混淆矩陣(Confusion Matrix)、收益圖(Gain Chart)、提升圖(Lift Chart)、KS圖(KS Chart)、接受者操作特性曲線(ROC Chart)。“分類器評價與在R中的實現”系列中將逐個介紹。
之前已介紹過最基礎的混淆矩陣、收益圖與提升圖。本篇介紹ROC圖(ROC Chart)及由此計算的AUC。
一、ROC圖簡介
ROC曲線和收益/提升圖一樣,通過對分類不同閥值的記錄對混淆矩陣進行改良。由于種種歷史原因,ROC又叫“接收者操作特征曲線”。它的x軸是false positive rate(1-specificity),y軸是true positive rate(sensitivity)。
顯然,ROC曲線是過(0,0)和(1,1)兩點的。考慮兩種極端情況:當將閥值放松,把所有觀測分類為negative時,在(0,0);當將閥值收緊,將觀測全部分類為positive時,為(1,1)。隨機模型的ROC曲線是穿過(0,0)和(1,1)的45度線。
左上角的(0,1)點表示判斷全部正確,所以理想模型應該與這一點越接近越好。這個接近程度可以用ROC曲線下面積AUC(Area Under Curve)來表示。隨機模型的AUC為右下三角0.5,全部分類正確模型的AUC為1。所以模型越接近左上角,AUC會越接近1,反之會越接近0.5。
二、在R中作ROC圖,并計算AUC
1 直接計算
直接計算TPR和FPR。
require(ROCR) data(ROCR.simple) data <- as.data.frame(ROCR.simple)[1:10, ] data <- data[order(data[, 1], decreasing = TRUE), ] data$target_cum <- cumsum(data[, "labels"]) data$tpr <- data$target_cum/sum(data[, "labels"]) data$fpr <- (row(data[, 1, drop = F]) - data$target_cum)/(nrow(data) - sum(data[, "labels"])) data可以看到fpr,tpr是經過(1,1)點的。(0,0)點未顯示在表中。
## predictions labels target_cum tpr fpr ## 7 0.9706 1 1 0.1667 0.00 ## 8 0.8902 1 2 0.3333 0.00 ## 10 0.8688 0 2 0.3333 0.25 ## 9 0.7818 1 3 0.5000 0.25 ## 1 0.6125 1 4 0.6667 0.25 ## 3 0.4321 0 4 0.6667 0.50 ## 5 0.3849 0 4 0.6667 0.75 ## 2 0.3643 1 5 0.8333 0.75 ## 6 0.2444 1 6 1.0000 0.75 ## 4 0.1403 0 6 1.0000 1.00 plot(data$tpr, data$fpr, type = "l", main = "ROC Chart")
2 用ROCR包畫圖、計算AUC
pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
roc <- performance(pred, "tpr", "fpr")
plot(roc, main = "ROC chart")
auc <- performance(pred, "auc")@y.values auc ## [[1]] ## [1] 0.8342
AUC為0.8342可以這樣解釋:當從此模型預測的positive案例中隨機選擇一個,再從此模型預測的negative案例中隨機選擇一個,那么有83.43%的機會前者的分數會比后者高,比隨機模型多了33.43%的可能性。
from:?http://iccm.cc/classification-model-evaluation-roc-chart-auc/
總結
以上是生活随笔為你收集整理的分类器评价与在R中的实现:ROC图与AUC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分类器评价与在R中的实现:混淆矩阵
- 下一篇: 分类器评价与在R中的实现:收益图与提升图