对于包含许多重复值的数据, ELKI 会失败吗?我有超过200万观测值(1D)的文件,但它只包含几百个唯一值。其余的都是重复的。当我在ELKI中运行此文件时,对于LOF
或LoOP
计算,它返回NAN
作为任何k的异常值得分,小于频率最高的值的出现次数。我可以想象,如果将重复项视为最近邻居,则LRD计算必须导致此问题。但是,它不应该这样做吗?我们可以依靠ELKI为这种情况制作的结果吗?
答案 0 :(得分:1)
这不是ELKI的问题,而是算法问题。
大多数异常值检测算法使用k个最近邻居。 如果它们相同,则值可能有问题。在LOF中,重复点的邻居可以获得无限远的异常值。同样,如果重复次数太多,则由于除以0,LoOP的异常值得分可能达到NaN。
但这不是ELKI的问题,而是这些方法的定义。任何坚持这些定义的实现都应该表现出这些效果。有一些方法可以避免/减少影响:
如果数据有重复,很容易证明LOF / LoOP方程中会出现这样的结果。
这些算法的限制最有可能是"修复",但我们希望ELKI中的实现接近原始发布,因此我们避免进行未发布的更改。但如果一个" LOFdup"方法发布并为ELKI做出了贡献,我们会明确地补充说明。
请注意,LOF和LoOP都不是意味着与1维数据一起使用。 对于一维数据,我建议关注"传统"统计文献,例如核密度估计。一维数值数据是特殊的,因为它是有序 - 这允许优化和更高级的统计数据,这些统计数据是不可行的或需要对多变量数据进行过多观察。 LOF和类似的方法是非常的基本统计数据(基本上很多统计学家会完全拒绝他们作为"愚蠢的"或者"天真的") - 主要的好处是它们可以轻松扩展到大型多变量数据集。有时像天真贝叶斯这样天真的方法在实践中可以很好地发挥作用;同样适用于LOF和LOOP:算法中存在一些可疑的决定。但他们的工作和规模。就像幼稚的贝叶斯一样 - 朴素贝叶斯的独立性假设值得怀疑,但天真的贝叶斯分类通常效果很好,并且可以很好地扩展。
换句话说,这不是ELKI中的错误。该实现执行发布的内容。