【问题标题】:ELKI's LOF implementation for heavily duplicated dataELKI 对大量重复数据的 LOF 实现
【发布时间】:2015-11-28 19:08:04
【问题描述】:

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

【问题讨论】:

    标签: probability nan duplicate-data outliers elki


    【解决方案1】:

    这不是 ELKI 的问题,而是算法的问题。

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

    但这不是 ELKI 的问题,而是这些方法的定义。任何坚持这些定义的实现都应该表现出这些效果。有一些方法可以避免/减少影响:

    • 为数据集添加抖动
    • 删除重复项(但永远不要考虑高度重复的异常值!)
    • 增加邻域大小

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

    这种这些算法的限制很可能是“固定的”,但我们希望 ELKI 中的实现接近原始发布,因此我们避免进行未发布的更改。但如果“LOFdup”方法被发布并贡献给 ELKI,我们显然会添加它。

    请注意,LOF 和 LoOP 都意味着用于一维数据。 对于一维数据,我建议重点关注“传统”统计文献,例如核密度估计。一维数值数据很特殊,因为它是有序 - 这允许优化和更高级的统计数据,这些统计数据是不可行的或需要对多变量数据进行过多观察。 LOF 和类似的方法是非常基本的统计数据(如此基本以至于许多统计学家会直接拒绝它们为“愚蠢”或“幼稚”) - 其主要优点是它们很容易扩展到大型、多变量数据集。有时,朴素贝叶斯等朴素方法在实践中可以很好地工作; LOF 和 LoOP 也是如此:算法中有一些有问题的决定。但它们有效,并且可以扩展。与朴素贝叶斯一样 - 朴素贝叶斯中的独立性假设是有问题的,但朴素贝叶斯分类通常效果很好,并且可以很好地扩展。

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

    【讨论】:

    • 感谢您的回复。 knn 算法不是根据距离而不是实例来查找最近的邻居吗?例如对于观察o,如果k=3 和第一个最近邻n1 有两个重复的n1'n1'' ,那么这两个重复也将是o 的第一个最近邻而不是第二个和第三最近的邻居。这就是为什么邻域的大小可能并不总是等于 k(“LOF:识别基于密度的局部异常值”的第 3 页第 4 节)。
    • 在这种情况下,“重复点的邻居可以获得无穷大的异常值”永远不会发生,除非所有数据点都只是重复。不是吗?
    • 包含重复项,但由于包含在 ELKI 中而打破了联系。因此,如果最近的邻居有 5 个重复项,则算作 5 个对象。有“k-distinct neighbors”的概念,但目前在 ELKI 中不可用。
    • 无限异常值分数:考虑数据集“-1, 0, 0, 0, 1”和 minPts=2。每个点的LOF分数是多少? 0 处的点具有无限的密度。
    • 在我看来,这只是一种解决方法,最终不会有帮助。做k-distinct最近邻会很好,但是在20个索引中有效地做很多工作。具有固定 k (+ ties) 的 kNN 更容易。欢迎使用补丁添加 k-distinct 支持;但我认为这不是高优先级。
    猜你喜欢
    • 2015-10-11
    • 2013-02-05
    • 2017-03-29
    • 2015-07-24
    • 1970-01-01
    • 2014-10-10
    • 2021-03-20
    • 2013-09-14
    • 2016-07-16
    相关资源
    最近更新 更多