为局部异常值 (LOF) 检测分析选择 k 值

机器算法验证 数据挖掘 异常值
2022-03-20 12:01:13

我有一组三维数据,我正在尝试使用局部异常因子分析来识别最独特或奇怪的值。如何决定在 LOF 分析中使用的 k 值?我了解 k 值所决定的内容,因此对于使用不同的 k 看到的结果略有不同我并不感到惊讶,但我不确定我的数据集是否有一些特征应该将我推向一个值而不是其他值. 谢谢!

1个回答

在这里为将来遇到我的问题的任何人发布此内容 - 描述局部异常值因子算法的原始论文“LOF:识别基于密度的局部异常值”(Breunig 等人)推荐了一种选择 k 值的方法. 提醒一下,LOF 算法将每个点的密度与其所在的密度进行比较k-最近的邻居。该论文的作者建议选择最低k和一个最大值k,并且对于每个点,取每个点的最大 LOF 值k在那个范围内。他们提供了一些选择界限的指导方针。

对于最小值,LOF 值在均匀分布的点上剧烈波动k<10,均匀分布的点有时会显示为异常值,因此他们至少推荐min(k)=10. 其次,最低k-value 用作被视为“集群”的事物的最小大小,因此点可以是相对于该集群的异常值。如果k=15, 你有一组12点和点p,组中的每个点将包括p在其最近的邻居中,并且p将包括这些点,导致它们具有非常相似的 LOF。所以如果你想考虑一组附近的一个点N点作为异常值,而不是该组的一部分,您的 k 值应至少为N.

对于最大值,适用类似的标准,因为它应该是在聚集在一起时您希望被视为异常值的对象的最大数量。一群N与主集隔离的对象可以是一个集群,也可以是N异常值;为了k<N,他们将是第一个;为了k>N,他们将是第二个。

希望这可以帮助任何有类似问题的人。完整的论文在这里,关于最大/最小 k 值的讨论从第 7 页开始,一直到第 9 页。(他们指的是k-值作为MinPts。)