从10个不同的阈值创建ROC

时间:2013-05-20 06:39:06

标签: roc

我有来自svmlight的输出,其中x =预测(0.1,-0.6,1.2,-0.7 ......),y =实际类{+ 1,-1}。我想为10个特定的不同阈值创建一个ROC曲线(让我们成为一个包含10个不同阈值的向量)。我检查了ROCR包,但我没有看到提供阈值向量的任何选项。我需要计算每个阈值和绘图的TPR和FPR。还有其他办法吗?我是R编程的新手。

2 个答案:

答案 0 :(得分:2)

ROCR通过​​绘制许多不同阈值的TPR和FPR来创建ROC曲线。这可以仅使用一组预测和标签来完成,因为如果观察被分类为对于一个阈值为正,则在较低阈值处也将其分类为正。我发现this paper有助于更详细地解释ROC曲线。

您可以在ROCR中按如下方式创建绘图,其中x是预测的向量,y是类标签的向量:

pred <- prediction(x,y) 
perf <- performance(pred,"tpr","fpr")
plot(perf)

如果要访问与所有阈值关联的TPR和FPR,可以检查性能对象'perf':

str(perf)

以下答案显示了如何更详细地获取阈值:

https://stackoverflow.com/a/16347508/786220

答案 1 :(得分:1)

您可以使用pROC包来执行此操作。首先创建ROC曲线(适用于所有阈值):

myROC <- roc(y, x) # with the x and y you defined in your question

然后您查询此曲线以查找存储在t中的10个(或任意数量)阈值:

coords(myROC, x = t, input="threshold", ret = c("threshold", "se", "1-sp"))

敏感度是您的TPR,而1-特异性是您的FPR。


免责声明:我是pROC的作者。