异常扩展生成ROC似乎反映FP/FN率

MaartenKMaartenK 成员职位:15因素二世
2020年4月编辑 帮助
我正在对人工数据集使用异常扩展。我用三种算法给异常评分。它们是K-NN Global, uCBLOF和LOF。我的数据集包含一个应该出现的异常的标签。我使用Generate ROC来衡量性能。GenerateROC首先做的是为异常值分数选择一个阈值,并添加一个布尔值“预测”。我注意到,在产生的混淆矩阵中,FP和FN计数总是相同的。它似乎是根据标签选择阈值来生成异常值的。这似乎很奇怪。

该数据集包含1676个标记为“true”的项目。
请参阅下面使用标签作为颜色的分数历史图。可以看出,它没有给异常值一个高分。这是因为我们的数据集包含全球异常。为了便于阅读,y轴不是对数的。

下面是由Generate ROC生成的混淆矩阵。它包含1676个FN,这是可以解释的,如果你看分数。
然而,它也包含1676个FP,这是可疑的。我看了看数据集,确实有1676个预测值为“真”,所以这不是一个绘图问题。

我忽略了什么?


最佳答案

  • MaartenKMaartenK 成员职位:15因素二世
    解决方案接受
    我和马库斯·戈尔斯坦有过接触。行为是设计好的。Generte ROC组件将在按分数排序的所有实例上从上到下尝试每个阈值。它将选择一个最优作为阈值,以便对不同的算法进行公平的比较。
    sgenzer

答案

  • MaartenKMaartenK 成员职位:15因素二世
    与此同时,我进一步研究了这个问题,并重读了Goldstein关于异常检测算法比较的文章。我相信上面描述的行为是故意的。由于没有关于如何为离群值选择阈值的明确规则,因此Generate ROC组件必须为每个算法选择一个阈值,以便对不同算法进行比较。因此,我认为它将从顶部开始,并在FP/FN比率对称时停止。
    sgenzer
登录注册置评。