2016-08-13 145 views
0

想我已经格式化的模型下面的分类结果:了解如何绘制ROC曲线

actual.class score.actual.class 
A   1 
A   1 
A   0.6 
A   0.1 
B   0.5 
B   0.3 
.   . 
.   . 

1 - 如果我没理解好,ROC曲线绘制真阳性之间的权衡和误报。这意味着我需要改变一个班级(真正的班级)的分数阈值,而不是两个,对吗?我的意思是,如果我选择A作为真正的课程,那么我将只使用subset(results,actual.class="A")绘制ROC曲线?

2 - 如果我想手动生成曲线(没有库),那么阈值是否会来自该子集的每个可能得分?

3 - 为了绘制ROC曲线的目的,是否从上述数据中正确生成了以下几点? (我正在使用A级作为真实课程)

threshold fpr tpr 
1   1 0 
0.6  1/2 1/2 
0.1  1/4 3/4  
0   0 1 

难道这些要构成我的ROC?

回答

2

“这意味着我需要改变 一个类别(真实类别)的分数阈值,而不是两个,对不对?”

似乎有一个误解,因为没有这样的事情作为一个单独的正面或负面的门槛。 ROC曲线用于评估二进制分类算法的上下文中。在这样的算法中,不属于一种类型(TRUE)的元素被自动识别为另一种类型的元素(FALSE)。

阈值的选择只能改变平衡,这样更多的观察被分配到一种类型而不是另一种。阈值的这种变化是允许绘制ROC曲线的参数。否则它只是一个点。

关于你的第三点:是的,就我的例子而言,我可以说这种数据通常构成ROC曲线。

+0

您不能独立改变特异性和灵敏度。混淆矩阵的这些特征来源于二进制分类算法中使用的(单个)阈值。 – RHertel

+0

@lmerith您发布的数据可能代表ROC曲线的四个点。只需将每个tpr/fpr对在一个正方形中获得的每个阈值绘制在一个正方形中,其中fpr在x轴上,tpr在y轴上并连接这些点。您分析的阈值越多,您将拥有的点越多,如果模型足够复杂,曲线将变得更加平滑。 – RHertel

+0

@lmerith是的,特异性和敏感性一般取决于阈值的选择。像ROC曲线一样,这些特征用于评估模型的质量。与阈值不同,这些不是模型的输入值。 – RHertel