我正在尝试绘制用于确定背景数据集积极发生率的标识符的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)