圈圈圆圆圈圈,圈懵了多少人,异常检测算法LOF概念详解、可视化、实战案例分析

如题所述


圈圈圆圆圈圈,揭示LOF异常检测的深度洞察


LOF(Local Outlier Factor),一个基于密度的经典异常检测算法,以其直观性和无数据分布假设的特性而备受关注。让我们一起深入理解LOF的原理、可视化和实战应用。


在502个对象数据集中,C1(400个)和C2(100个)簇密度对比鲜明。o1和o2被标记为离群值,然而在DB(pct,dmin)框架下,o1的离群程度合理,而o2则不然,这取决于dmin与簇间距离。引入局部异常值概念,LOF量化异常程度,尤其适合处理密度差异场景下的离群检测。


LOF的原理核心在于比较一个点自身的密度与邻居的密度,密度小的点被认为是异常。计算过程中,涉及k-distance(p最近k个点的距离)和k-距离邻域,即包含距离不超过k-distance的对象区域。可达距离,即k-邻近距离与p点到邻近点的直接距离的最大值,用于平滑统计波动,通过调整k值来平衡邻域内距离的相似性。


LOF的计算流程包括:按距离对所有点排序,找到k个最近邻,计算每个点的局部可达密度(邻近点平均可达距离的倒数),从而判断异常程度。正常情况下,LOF值小于1表示密集点,大于1则标记为异常。


例如,通过手算,对C点在X数据集中的LOF值进行计算,涉及邻近点的可达距离和密度,得出LOF值为73.36970899,与sklearn计算结果一致。实战中,sklearn的LocalOutlierFactor功能可用于异常值检测和奇异值检测。


LOF实战应用


Novelty Detection(新样本检测)和Outlier Detection(异常值检测)是LOF的两大应用场景。LocalOutlierFactor参数设置如:lof = LocalOutlierFactor(novelty=True),适用于检测新样本是否偏离已知模式。推荐设置n_neighbors在20左右,以平衡计算效率和准确性。


深入探讨LOF参数,如n_neighbors影响异常检测的敏感性,contamination则控制预期的异常比例,而novelty参数切换检测模式。重要属性如negative_outlier_factor_存储每个样本的异常程度分数。


方法详解包括fit, predict, decision_function等,用于处理新数据的异常程度评估。实例演示中,LOF在信用卡欺诈检测中展现出色性能,特别是在数据不平衡的场景下。


以鸢尾花数据为例,通过可视化,我们可以直观地看到LOF如何发现异常值。图1展示数据分布,图2突出显示LOF得分较高的异常值,图3展示了近邻网络,图4比较不同n_neighbors值下的异常检测效果。此外,COF算法通过调整contamination比例,提供了对异常值的更精细识别。


总结来说,LOF算法以其直观性和灵活性在异常检测中独树一帜,从理论到实践,无论是在信用卡欺诈检测还是数据可视化中,都能提供有价值的洞见。


温馨提示:答案为网友推荐,仅供参考
相似回答