ROC的全称是“受试者工作特征”(Receiver Operating Characteristic)曲线,ROC是一个用于度量分类中的非均衡性的工具,ROC曲线及AUC常被用来评价一个二值分类器的优劣。 ROC曲线是以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的。

下图给出了混淆矩阵的相关定义:

图片来源网络

一般我们用R包pROC来绘制ROC曲线,但是调整参数是一个很麻烦的事情,下面给出一个我调好的ROC曲线绘制参数,供参考:

library(pROC)
# plot ROC 
x1<-plot.roc(A.train,predA.train,
             smooth=F,
             lwd=2,
             ylim=c(0,1),
             xlim=c(1,0),
             legacy.axes=T,
             main="",
             col="red",
             xaxs="i",
             yaxs="i",
             font=2,
             font.lab=2)
x2<-plot.roc(B.train,predB.train,
             smooth=F,
             add=T,
             lwd=2,
             ylim=c(0,1),
             xlim=c(1,0),
             legacy.axes=T,
             main="",
             col="seagreen3",
             xaxs="i",
             yaxs="i",
             font=2,
             font.lab=2)
x3<-plot.roc(C.train, predC.train,
             smooth=F,
             add=T,
             lwd=2,
             ylim=c(0,1),
             xlim=c(1,0),
             legacy.axes=T,
             main="",
             col="black",
             xaxs="i",
             yaxs="i",
             font=2,
             font.lab=2)
abline(h = 1:1, v = 1:1, col = "black")

# add figure legend
legend.name <- c(paste("A:AUC",sprintf("%.2f",x1[["auc"]])),
                 paste("B:AUC",sprintf("%.2f",x2[["auc"]])),
                 paste("C:AUC",sprintf("%.2f",x3[["auc"]])))
legend("bottomright", 
       legend=legend.name,
       lwd = 2,
       col = c("red","blue", "black"),
       bty="n")

结果: