【问题标题】:data values in ROC curve using PRROC package使用 PRROC 包的 ROC 曲线中的数据值
【发布时间】:2018-05-08 14:53:22
【问题描述】:

我正在尝试绘制标识符的 ROC 曲线,用于确定背景数据集的正发生率。标识符是一组概率分数列表,两组之间有一些重叠。

FG          BG
0.02        0.10
0.03        0.25 
0.02        0.12
0.04        0.16
0.05        0.45
0.12        0.31
0.13        0.20

(其中 FG = 阳性,BG = 阴性。)

我正在使用 R 中的 PRROC 绘制 ROC 曲线,以评估标识符将数据分类到正确组的程度。尽管在正数据集和负数据集之间产生的分类器值之间存在明显区别,但我当前在 R 中的 ROC 图显示了较低的 AUC 值。我对正数据的概率分数低于背景,所以如果我切换分类并将背景作为前景点,我会得到一个高分的 AUC 曲线,我不是 100% 清楚为什么会这样,哪个情节是最好使用的,或者在分析数据之前我是否遗漏了一个额外的步骤。

roc

ROC curve

Area under curve:
0.07143

roc2

ROC curve

Area under curve:
0.92857

【问题讨论】:

  • 你问的是ROC还是PR?就目前而言,我不知道你在问什么问题。
  • 我的问题是关于 ROC 的,为了清楚起见,我已经编辑了上面的内容。

标签: r roc precision-recall


【解决方案1】:

正如您确实注意到的那样,大多数 ROC 分析工具都假定您的正类的分数高于负类的分数。更正式地说,如果 X > T,一个实例被分类为“正”,其中 T 是决策阈值,否则为负。

没有根本原因。做出 X

使用导致 AUC = 0.07143 的第一个选项意味着您的分类器的性能比随机分类器差。这是不正确的。

如您所见,交换类标签会产生正确的曲线值。 这是可能的,因为 ROC 曲线对类分布不敏感 - 并且可以毫无问题地还原类。 但是,我个人不会推荐该选项。我可以看到这可能会产生误导的两种情况:

  • 给正在看代码的其他人,或者几个月后的你自己;找出类是错误的并“修复”它们
  • 或者如果您想将相同的代码应用于 PR 曲线,这些曲线对类分布很敏感并且您无法交换类。

另一种更可取的方法是反转您的分数以进行此分析,以便正类有效地获得更高的分数:

roc <- roc.curve(scores.class0 = -FG, scores.class1 = -BG, curve = T)

【讨论】:

    猜你喜欢
    • 2017-01-23
    • 2015-08-29
    • 2012-07-13
    • 2016-05-26
    • 2020-10-30
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多