ELKI 对重度重复数据的 LOF 实现

ELKI's LOF implementation for heavily duplicated data

ELKI 是否对包含许多重复值的数据失败?我有超过 200 万个观察值 (1D) 的文件,但它只包含几百个唯一值。其余的都是重复的。当我运行这个文件在ELKI中,对于LOF或者LoOP的计算,它returnsNAN作为任意k小于出现次数的离群分数频率最高的值。我可以想象,如果将重复项作为最近的邻居,LRD 计算一定会导致这个问题。但它不应该这样做吗?我们可以依赖 ELKI 为此类案例生成的结果吗?

与其说是 ELKI 的问题,不如说是算法的问题。

大多数异常值检测算法使用 k 个最近的邻居。 如果这些相同,则这些值可能会有问题。在LOF中,重复点的邻居可以获得无穷大的离群值。同理,LoOP的离群值很可能会因为重复太多被0除而达到NaN。

但这不是 ELKI 的问题,而是这些方法的定义的问题。任何遵循这些定义的实现都应该表现出这些效果。 avoid/reduce效果有一些方法:

  • 向数据集添加抖动
  • 删除重复项(但永远不要考虑高度重复的异常值!)
  • 增加社区规模

如果数据有重复,很容易证明 LOF/LoOP 方程中确实会出现这样的结果。

这些算法的限制很可能是"fixed",但我们希望 ELKI 中的实现接近原始出版物,因此我们避免未发布变化。但是,如果一个 "LOFdup" 方法被发布并贡献给 ELKI,我们显然会添加它。

请注意,LOF 和 LoOP 都意味着用于一维数据。 对于一维数据,我建议转而关注"traditional"统计文献,例如核密度估计。一维数值数据是特殊的,因为它是 有序的 - 这允许优化和更高级的统计数据,这在多变量数据上是不可行的或需要太多观察的。 LOF 和类似的方法是 非常 的基本统计数据(如此基础以至于许多统计学家会完全拒绝它们,认为它们是 "stupid" 或 "naive")——关键的好处是它们可以轻松扩展到大型多变量数据集。有时朴素贝叶斯等朴素方法在实践中可以很好地工作; LOF 和 LoOP 也是如此:算法中存在一些有问题的决定。但它们有效,而且规模庞大。就像朴素贝叶斯一样 - 朴素贝叶斯中的独立性假设值得怀疑,但朴素贝叶斯分类通常效果很好,并且扩展性很好。

换句话说,这不是ELKI中的错误。该实施执行已发布.

的内容