2017-03-21 115 views
1

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

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

你只有一个自变量吗?那是可变的二进制? – Dason

+0

是的,它是一个独立的变量是二进制 –

+2

然后就是已经顺利,因为它会得到 – Dason

回答

3

的ROC曲线是指一种用于检查概率分类器的性能,这意味着一个输出响应变量是你从预测概率去任何A类或B类

方式的概率到硬盘预测类标签是通过设定一个临界点:如果A类是预测的概率大于截止时,则分配给它的标签A.否则它分配B.

通常人们使用的值0.5的截止点,以便将观察分配给具有最高概率的类别。但是,没有什么能阻止您使用不同的截止值。如果使用较高的截止值,例如0.9,那么您将看到分配给A的观察数很少 - 这就像告诉您的分类器将其标记为A,只有当它非常确信这是正确的值时。反之亦然,如果你使用低截止频率 - 在这种情况下,只有当你非常确定B是正确的值时,才会将其标记为B.

ROC图基本上是由滑动的截止值从0到1,并观察结果的预测标签如何与实际进行比较。但是,这假定您首先有一个潜在的概率预测。你只有预测标签,这就是你的情节退化的原因。

+0

那么用这个图来讨论我的模型的准确性会不合适吗? (我还使用NPV,PPV,特异性,敏感性和准确性是从我的混淆矩阵输出) –

+1

如果您想对如何衡量模型的表现的意见,那将是[stats.SE]一个问题(HTTPS ://stats.stackexchange.com)。一定要包括你适合什么样的模型的细节(逻辑回归,树,SVM等),你使用的是什么数据等。 –

+0

但是,如果你的模型不能产生_range_的预测值,那么ROC不会告诉你很多。 –