12

我正在构建接收器操作特征 (ROC) 曲线,以使用曲线下面积 (AUC) 评估分类器(有关帖子末尾的更多详细信息)。不幸的是,曲线上的点经常低于对角线。例如,我最终得到的图表看起来像这里的图表(蓝色的 ROC 曲线,灰色的标识线):

修复 ROC

第三个点 (0.3, 0.2) 位于对角线下方。为了计算 AUC,我想修复这些顽固点。

对于曲线上的点 (fp, tp),标准的做法是用一个点 (1-fp, 1-tp) 替换它,这相当于交换分类器的预测。例如,在我们的示例中,我们的麻烦点 A (0.3, 0.2) 变成了点 B (0.7, 0.8),我在上面链接的图像中用红色表示。

这是关于在处理这个问题时的参考资料。问题是,如果将新点添加到新 ROC 中(并删除坏点),最终会得到如图所示的非单调 ROC 曲线(红色是新的 ROC 曲线,蓝色虚线是旧的):

新中华民国

在这里我被困住了。如何修复此 ROC 曲线?

我是否需要使用经过某种方式转换的数据或类重新运行我的分类器以考虑这种奇怪的行为?我查看了一篇相关论文,但如果我没记错的话,它似乎解决了一个与此稍有不同的问题。

在一些细节方面:我仍然拥有所有原始阈值、fp 值和 tp 值(以及每个数据点的原始分类器的输出,输出只是从 0 到 1 的标量,即概率估计类成员)。我在 Matlab 中从 perfcurve 函数开始执行此操作。


4

2 回答 2

4

根据撰写上述文章的人的一些非常有用的电子邮件以及上面的讨论,请注意,正确的答案似乎是:除非您构建一个全新的,否则不要尝试“修复” ROC 曲线中的各个点分类器,然后一定要遗漏一些测试数据,看看这是否合理。

在身份线以下获得点是很容易发生的事情。这就像让一个单独的分类器得到 45% 的正确率,即使最优理论最小值是 50%。这只是真实数据集可变性的一部分,除非它明显低于基于机会的预期,否则您不必太担心。例如,如果你的分类器有 20% 的正确率,那么显然有问题,你可能会调查具体原因并修复你的分类器。

于 2012-12-10T13:56:38.590 回答
3

是的,将一个点换成 (1-fp, 1-tp) 在理论上是有效的,但增加样本量也是一个安全的选择。

您的系统似乎确实具有非单调响应特性,因此请注意不要过多地弯曲 ROC 的规则,否则会影响 AUC 的稳健性。

也就是说,您可以尝试使用Pareto Frontier Curve (Pareto Front)。如果这符合“修复凹面”的要求,那么您基本上会对点进行排序,使 ROC 曲线变得单调。

于 2012-12-09T04:21:58.687 回答