数据密度算法
基于数据密度/数据挖掘的检测算法
LOF[1]: Local Outlier Factor(LOF),局部离群因子/局部异常因子,是 Breunig 在 2000 年提出的一种基于密度的局部离群点检测算法,该方法适用于不同类簇密度分散情况迥异的数据。根据数据点周围的数据密集情况,首先计算每个数据点的局部可达密度,然后通过局部可达密度进一步计算得到每个数据点的一个离群因子。该离群因子即标识了一个数据点的离群程度,因子值越大,表示离群程度越高,因子值越小,表示离群程度越低。最后,输出离群程度最大的 个点。
从 v3.4.1.13 起,LOF 支持多变量异常检测,可同时输入多个数值列作为特征。
--- 指定调用的算法为LOF,即可调用该算法
SELECT count(*)
FROM foo
ANOMALY_WINDOW(foo.i32, "algo=lof")
--- 使用 LOF 进行多变量异常检测
SELECT count(*)
FROM foo
ANOMALY_WINDOW(foo.i32, foo.i64, foo.f32, "algo=lof")
HBOS:Histogram-based Outlier Score,基于直方图离群分数的检测算法。该算法分别为每个特征构建直方图,并根据数据点所在分箱的密度计算离群分数;数据点所在分箱的密度越低,离群程度越高。HBOS 适用于需要高效处理数据的场景,但通常假设各个特征相互独立。参数 contamination 用于指定预期异常点比例,默认值为 0.1;参数 n_bins 用于指定直方图分箱数量,默认值为 10,且必须至少为 2。
--- 使用 HBOS 进行多变量异常检测
SELECT count(*)
FROM foo
ANOMALY_WINDOW(foo.i32, foo.i64, "algo=hbos,contamination=0.1,n_bins=10")
参考文献
- Breunig, M. M.; Kriegel, H.-P.; Ng, R. T.; Sander, J. (2000). LOF: Identifying Density-based Local Outliers (PDF). Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data. SIGMOD. pp. 93–104. doi:10.1145/335191.335388. ISBN 1-58113-217-4.








