【问题标题】:Understanding how to plot an ROC curve了解如何绘制 ROC 曲线
【发布时间】:2016-08-13 06:47:57
【问题描述】:

假设我已经将模型的分类结果格式化如下:

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 吗?

【问题讨论】:

    标签: r roc


    【解决方案1】:

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

    似乎存在误解,因为没有单独的正面或负面阈值。 ROC 曲线用于二进制分类算法的评估。在此类算法中,不属于一种类型 (TRUE) 的元素会自动识别为另一种类型的元素 (FALSE)。

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

    关于您的第三点:是的,从您的示例中我可以看出,这种数据通常构成 ROC 曲线。

    【讨论】:

    • 您不能独立改变特异性和敏感性。混淆矩阵的这些特征源于二元分类算法中使用的(单一)阈值。
    • @lmerith 您发布的数据可能代表 ROC 曲线的四个点。只需将您为每个阈值获得的每对 tpr / fpr 绘制在一个正方形中,fpr 在 x 轴上,tpr 在 y 轴上,然后连接这些点。您分析的阈值越多,您将拥有的点越多,如果模型足够复杂,曲线会变得更平滑。
    • @lmerith 是的,特异性和敏感性通常取决于阈值的选择。与 ROC 曲线一样,这些是用于评估模型质量的特征。与阈值不同,这些不是模型的输入值。
    • 四点。每个阈值的 x (fpr) 和 y (tpr) 坐标:(1,0); (0.5, 0.5); (0.25, 0.75) 和 (0.1)。 ROC曲线中不显示阈值。
    猜你喜欢
    • 1970-01-01
    • 2019-02-09
    • 2016-02-04
    • 2019-04-11
    • 2019-02-27
    • 2021-03-03
    • 2014-09-20
    • 2018-12-28
    • 2012-07-29
    相关资源
    最近更新 更多