统计学算法
- k-sigma[1]: 即 68–95–99.7 rule 。k值默认为 3,即序列均值的 3 倍标准差范围为边界,超过边界的是异常值。KSigma 要求数据整体上服从正态分布,如果一个点偏离均值 K 倍标准差,则该点被视为异常点.
参数 | 说明 | 是否必选 | 默认值 |
---|---|---|---|
k | 标准差倍数 | 选填 | 3 |
--- 指定调用的算法为ksigma,参数 k 为 2
SELECT _WSTART, COUNT(*)
FROM foo
ANOMALY_WINDOW(foo.i32, "algo=ksigma,k=2")
- IQR[2]:Interquartile range(IQR),四分位距是一种衡量变异性的方法。四分位数将一个按等级排序的数据集划分为四个相等的部分。即 Q1(第 1 个四分位数)、Q2(第 2 个四分位数)和 Q3(第 3 个四分位数)。 ,对于 , 是正常值,范围之外的是异常值。无输入参数。
--- 指定调用的算法为 iqr,无参数
SELECT _WSTART, COUNT(*)
FROM foo
ANOMALY_WINDOW(foo.i32, "algo=iqr")
- Grubbs[3]: Grubbs' test,即最大标准残差测试。Grubbs 通常用作检验最大值、最小值偏离均值的程度是否为异常,要求单变量数据集遵循近似标准正态分布。非正态分布数据集不能使用该方法。无输入参数。
--- 指定调用的算法为 grubbs,无参数
SELECT _WSTART, COUNT(*)
FROM foo
ANOMALY_WINDOW(foo.i32, "algo=grubbs")
- SHESD[4]: 带有季节性的 ESD 检测算法。ESD 可以检测时间序列数据的多异常点。需要指定异常检测方向('pos' / 'neg' / 'both'),异常值比例的上界max_anoms,最差的情况是至多 49.9%。数据集的异常比例一般不超过 5%
参数 | 说明 | 是否必选 | 默认值 |
---|---|---|---|
direction | 异常检测方向类型('pos' / 'neg' / 'both') | 否 | "both" |
max_anoms | 异常值比例 | 否 | 0.05 |
period | 一个周期包含的数据点 | 否 | 0 |
--- 指定调用的算法为 shesd,参数 direction 为 both,异常值比例 5%
SELECT _WSTART, COUNT(*)
FROM foo
ANOMALY_WINDOW(foo.i32, "algo=shesd,direction=both,anoms=0.05")
后续待添加异常检测算法
- Gaussian Process Regression
基于变点检测的异常检测算法
- CUSUM (Cumulative Sum Control Chart)
- PELT (Pruned Exact Linear Time)
参考文献
- https://en.wikipedia.org/wiki/68–95–99.7 rule
- https://en.wikipedia.org/wiki/Interquartile_range
- Adikaram, K. K. L. B.; Hussein, M. A.; Effenberger, M.; Becker, T. (2015-01-14). "Data Transformation Technique to Improve the Outlier Detection Power of Grubbs's Test for Data Expected to Follow Linear Relation". Journal of Applied Mathematics. 2015: 1–9. doi:10.1155/2015/708948.
- Hochenbaum, O. S. Vallis, and A. Kejariwal. 2017. Automatic Anomaly Detection in the Cloud Via Statistical Learning. arXiv preprint arXiv:1704.07706 (2017).