我正在构建接收器操作特征 (ROC) 曲线,以使用曲线下面积 (AUC) 评估分类器(有关帖子末尾的更多详细信息)。不幸的是,曲线上的点经常低于对角线。例如,我最终得到的图表看起来像这里的图表(蓝色的 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 函数开始执行此操作。