R-使用PRROC软件包中ROC曲线中的数据值



我正在尝试绘制用于确定背景数据集积极发生率的标识符的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值。我对正数据的概率得分低于背景是最好使用的方法,还是我在分析数据之前错过了一个额外的步骤。

roc< - roc.curve(scores.class0 = fg,scores.class1 = bg,curve = t)

ROC curve
Area under curve:
0.07143

roc2< - roc.curve(scores.class0 = bg,scores.class1 = fg,curve = t)

ROC curve
Area under curve:
0.92857

正如您确实注意到的那样,大多数ROC分析工具都认为您的正类别中的分数高于负类的分数。更正式地,如果x> t,t是决策阈值,则将实例归类为"正",否则为负。

没有根本的理由是这样。做出X&lt之类的决定是完全有效的;T,但是大多数ROC软件都没有该选项。

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

您注意到,交换类标签会产生正确的曲线值。这是可能的,因为ROC曲线对班级分布不敏感 - 可以将类恢复无问题。但是,我个人不建议该选项。我可以看到两种情况可能会产生误导:

  • 向其他人看代码,或者几个月后您自己;弄清楚课程是错误的,并且"修复"它们
  • ,或者如果要将相同的代码应用于PR曲线,这些代码对班级分布敏感以及无法交换类的地方。

另一种选择的方法是将您的分数倒入该分析,以便有效地具有更高的分数:

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

最新更新