我可以期待二元结果的连续ROC曲线(实际的,预测的)。我在二进制实际和二进制预测结果上使用以下命令,我得到的只是一个带有一个变形的图。我使用的命令是
library(pROC)
plot.roc(data$actual,data$predicted)
参考样本数据集是
Actual
0
1
0
1
0
1
Predicted
1
0
1
1
0
1
如果有任何其他解释并绘制ROC,请告诉我。
答案 0 :(得分:1)
这不是绘制roc曲线下面积的正确方法。以这种方式绘制将为您提供50%的所有积分,因为您没有提供任何阈值。
ROC曲线的重点是通过绘制每个阈值的特异性和灵敏度来更全面地了解模型的准确性(检查here)。阈值(取0到1之间的值,因为它是概率阈值)是根据其相关概率将测试用例确定为0或1的阈值。作为具有40%阈值的示例,具有超过0.4的概率的任何预测情况将被分类为1(成功)并且小于0.4被归类为0(失败)。根据各种阈值收集的特异性和敏感性用于计算和绘制ROC曲线。
作为一个例子(来自pROC文档),为了使用plot.roc函数,你可以这样做:
#load the data
data(aSAH)
#Create a model so that you get the sensitivities, specificities for different
#thresholds
rocdata <- roc(aSAH$outcome, aSAH$s100b,
levels=c("Good", "Poor"))
> str(rocdata)
List of 15
$ percent : logi FALSE
$ sensitivities : num [1:51] 1 0.976 0.976 0.976 0.976 ...
$ specificities : num [1:51] 0 0 0.0694 0.1111 0.1389 ...
$ thresholds : num [1:51] -Inf 0.035 0.045 0.055 0.065 ...
$ direction : chr "<"
#and so on...
然后您可以将其绘制为:
plot.roc(rocdata)
答案 1 :(得分:0)
如上所述,当您有分数或概率变量时,可以绘制ROC曲线。然后,ROC固化根据变化的阈值绘制不同的假阳性率/真阳性率对。您的分类器似乎产生0/1输出,因此您只能在ROC空间中绘制一个点。有关详细信息,请参阅Fawcett 2005。
以下是ROC曲线的示例,其中预测值是概率:
library(pROC)
actual <- c(0, 1, 0, 1, 0, 1)
predicted <- c(0.35, 0.55, 0.45, 0.5, 0.55, 0.6)
plot.roc(actual, predicted)