【发布时间】:2012-11-26 21:30:04
【问题描述】:
我正在构建接收器操作特征 (ROC) 曲线,以使用曲线下面积 (AUC) 来评估分类器(有关帖子末尾的更多详细信息)。不幸的是,曲线上的点经常低于对角线。例如,我最终得到的图表看起来像这里的图表(ROC 曲线为蓝色,标识线为灰色):
第三个点 (0.3, 0.2) 位于对角线下方。为了计算 AUC,我想修复这些顽固点。
对于曲线上的点 (fp, tp),标准的做法是用一个点 (1-fp, 1-tp) 代替它,相当于交换分类器的预测。例如,在我们的示例中,我们的麻烦点 A (0.3, 0.2) 变成了点 B (0.7, 0.8),我在上面链接的图片中用红色表示。
这大约是my references 处理此问题的时间。问题是,如果将新点添加到新 ROC 中(并删除坏点),最终会得到如图所示的非单调 ROC 曲线(红色是新的 ROC 曲线,蓝色虚线是旧的):
我在这里卡住了。如何修复此 ROC 曲线?
我是否需要使用经过某种方式转换的数据或类重新运行我的分类器以考虑这种奇怪的行为?我查看了relevant paper,但如果我没记错的话,它似乎正在解决一个与此稍有不同的问题。
在一些细节方面:我仍然拥有所有原始阈值、fp 值和 tp 值(以及每个数据点的原始分类器的输出,输出只是从 0 到 1 的标量,即类成员的概率估计)。我在 Matlab 中从 perfcurve 函数开始执行此操作。
【问题讨论】:
-
您是否使用交叉验证,您对曲线上的置信区间有任何了解吗?根据您在构建分类器时所处的位置,这可能无需担心。形状取决于测试用例,并在您结合交叉验证的估计值时进行平滑处理。
-
我计划构建一组 ROC 曲线,但我现在只关注个体,由人工神经网络的个体运行构建(嗯,从技术上讲,我从 k 个神经网络构建 ROC我使用 ANN 使用 k 折交叉验证分类进行训练)。我想我可以只运行 100 次,然后查看 ROC 曲线的分布(或者,ROC 下的面积,如果面积小于 0.5,我可以将其换成 1-AUC)。你认为这合理吗?肯定会更简单!
-
那么做三件事的算法怎么样:首先,如果 AUC<.5 auc="1-AUC)。其次,一旦进行了这种粗校正,对于那些" tp>
-
除非您对 ROC 曲线有更好的估计,否则我不会担心丑陋。一种方法是添加一个外部交叉验证过程,将数据分成测试和训练,训练数据进入您当前的过程。从外部过程中获取 ROC 曲线的平均值和不确定性。此平均 ROC 曲线应该是更平滑、更可靠的性能估计。
-
嗯,我不认为这是一种优化算法,它只是对性能的无偏见测试。嵌套交叉验证的主要缺点通常被认为是计算时间,而不是数据使用。我认为这里有两个问题。一是你对业绩的估计过于乐观。经典论文是 Varma 和 Simon ncbi.nlm.nih.gov/pmc/articles/PMC1397873,但有大量文献。第二个问题是 ROC 曲线(甚至是 AUC)对测试数据很敏感,例如类成员的平衡。
标签: matlab machine-learning classification statistics roc