LOF异常检测

使用局部离群因子检测异常. 使用局部离群因子(LOF)测量数据点相对于其邻居的局部密度偏差。密度明显较低的点被分类为异常。. 局部离群因子(LOF, Local Outlier Factor)是一种基于密度的异常检测算法,它通过比较某点的局部密度与其邻居的密度来识别离群点。与全局方法不同,LOF…

使用局部离群因子(LOF)测量数据点相对于其邻居的局部密度偏差。密度明显较低的点被分类为异常。

什么是局部异常因子(LOF)?

局部离群因子(LOF, Local Outlier Factor)是一种基于密度的异常检测算法,它通过比较某点的局部密度与其邻居的密度来识别离群点。与全局方法不同,LOF 能够在各簇密度差异较大的数据集中检测离群点——同一个点位于稀疏簇中可能是正常的,而靠近稠密簇时则可能是异常的。

该算法基于每个点的 k 近邻计算可达距离和局部可达密度(LRD)。LOF 分数即该点的 LRD 与其邻居平均 LRD 之比。LOF ≈ 1 表示与邻居密度相近(正常);LOF >> 1 表示密度远低于邻居(异常)。

邻居数量(k)控制局部性:k 较小时聚焦于非常局部的结构,k 较大时会在更宽的邻域上做平滑。污染率则按 LOF 分数的排序决定被判为异常的点所占比例。

Formula: reach-dist(A,B) = max(k-dist(B), dist(A,B)) LRD(A) = 1 / (Σ reach-dist(A,Oᵢ) / k) LOF(A) = (Σ LRD(Oᵢ) / LRD(A)) / k LOF ≈ 1: normal, LOF >> 1: outlier

计算示例

取 k=5 个邻居:稠密簇中的点 P₁ 的 LRD=10,其 5 个邻居的平均 LRD=9.5,LOF = 9.5/10 = 0.95(正常)。位于簇边缘的点 P₂ 的 LRD=2,邻居平均 LRD=8,LOF = 8/2 = 4.0(明显的离群点)。当 contamination=0.05 时,LOF 分数最高的前 5% 会被标记。

何时使用此计算器

常见错误

如何解读结果

相关标准与参考文献

常见问题

如何选择邻居数量(k)?

可先取 k=20 作为合理的默认值。k 较小(5-10)能检测非常局部的异常,但对噪声敏感。k 较大(50 以上)结果更平滑,但可能漏掉局部性的异常。一个实用做法是:测试多个 k 值,看是否总是同一批点被标记——在不同 k 值下都持续出现的离群点,更可能是真正的异常。

什么时候应该用 LOF 而不是孤立森林?

当数据中存在密度不同的簇时应使用 LOF,因为 LOF 是相对于每个点的局部邻域来评估该点的。一个远离稠密簇但靠近稀疏簇的点可能是正常的——LOF 能正确处理这种情况,而全局方法可能会把它误标为异常。对于高维数据,或规模极大、使 LOF 的 O(n²) 复杂度难以承受的数据集,则应使用孤立森林。