使用PRROC包的ROC曲线中的数据值

时间:2017-11-24 15:01:51

标签: r roc precision-recall

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

1 个答案:

答案 0 :(得分:0)

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

没有根本原因。做出诸如X< 1的决定是完全有效的。但是,大多数ROC软件没有这个选项。

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

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

  • 到其他人那里查看代码,或者在几个月内自己;认为课程是错误的,并且修复了#34;它们
  • 或者如果您想将相同的代码应用于PR曲线,PR曲线对类分布很敏感,并且您无法交换类。

另一种更好的方法是将此分析的分数反转,以便积极分类有效地获得更高分数:

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