为什么我的ROC曲线看起来像V?

时间:2017-03-21 00:01:16

标签: r machine-learning roc auc

ROC CURVE via ROCR

newpred <- c(1, 0 ,0 ,1 ,0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0,0, 1, 0, 0,
0, 0,0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0,
 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0,  
 1,0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1,
 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0)                    


       newlab <- c(0, 0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0,
                   0, 0 ,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   0 ,0, 1, 1, 0, 0, 0, 0, 0, 0, 1,
                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                    0, 1 ,0, 0 ,0, 0 ,0, 0 ,1, 0 ,0, 0 ,0, 0 ,0,
                   0, 0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,1,
                    0 ,1, 0 ,1, 0 ,0, 0 ,0, 0 ,0, 0 ,0, 0 ,0, 0 ,0)

所以第一个向量是我的预测,第二个向量是参考。我不明白为什么我的曲线看起来像是V.我从未见过ROC曲线看起来像这样!我的顾问希望我添加点以通过添加更多点来使图表更平滑/更弯曲。我尝试使用pROC绘图,但我可以添加的唯一参数是预测和参考。

我也试过ROCR

print.cutoffs.at=seq(0,1,by=0.1), text.adj=c(-0.2,1.7))

得到了这个 enter image description here

如何平滑曲线或添加更多点?

1 个答案:

答案 0 :(得分:5)

ROC图用于检查概率分类器的性能,这意味着可以输出响应变量为A类或B类的概率。

从预测概率到硬预测类别标签的方式是设置一个截止点:如果A类中的预测概率大于截止值,则为其分配标签A.否则将其指定为B

通常人们使用0.5的值作为截止值,以便将观察值分配给具有最高概率的任何类别。但是,没有什么可以阻止你使用不同的截止值。如果你使用高截止值,例如0.9,那么你会看到分配给A的极少数观察 - 它只是告诉你的分类者只有在它确信这个东西时才会标记为A是正确的价值。反之亦然,如果您使用低截止值 - 在这种情况下,只有当您非常确信B是正确的值时,才会将某些内容标记为B.

ROC图基本上是通过滑动从0到1的截止值生成的,并查看结果预测标签与实际值的比较。但这假设您首先有潜在的概率预测。您只有预测标签,这就是您的情节退化的原因。