1 笨笨的孩子慢慢学stay hungry stay foolish 2 学习,思考,实践,改变

0%

异常检测方法

异常检测方法综述

统计方法

有基于阈值的,还有对数据的分布做出假设,并找出假设下所定义的“异常”,因此往往会使用极值分析或者假设检验,概率密度函数值小于某个阈值的点判定为异常。 还有些多元模型,如计算多个事件指标之间期望的相关性等等。

看图

频率直方图, 点分布图

高斯分布的 k-sigma

概率密度函数为 $f(x)=\frac{1}{\sqrt{2 \pi} \sigma} e^{-\frac{(x-\mu)^{2}}{2 \sigma^{2}}}$

当点$X \notin ( { \mu } - 3 { \sigma } , { \mu } + 3 { \sigma } ) $ 则为异常,因为这个点出现的概率小于 1 - 99.74%。

延伸出滑动窗高斯模型,后续s表示为异常分数score:

Q函数是标准正态分布的右尾函数:$Q(x)=\int_{x}^{\infty} \frac{1}{\sqrt{2 \pi}} e^{-\frac{t^{2}}{2}} d t$,Q函数又叫(标准正态分布的)互补累计分布函数,Q ( x )是正常(高斯)随机变量获得大于x标准差的值的概率。

箱型图

20191211BoxPlot

IQR (inter quartile range) = Q3 - Q1 ; 占据中心值周围50%数量的范围

LQR (lower quartile range) = median - Q1 ; IQR的下半部分

UQR (upper quartile range) = Q3 - median ; IQR的上半部分

若按3 σ来判断异常, 3 σ = 2.1 IQR,则异常在median的2.1 IQR之外,因此在Q1或者Q3再延伸1.5 IQR (3σ 之外)的点就很可能是outlier点了。

即$P > Q3+1.5IQR$ or $P< Q1 - 1.5IQR$

假设检验类型

如extreme studentized deviate(Grubb’s Test )

提出假设H0:没有异常点,H1:至少有一个异常点。

根据样本的均值和标准差来计算最大 bias / standard deviation 比值。

基于t-student分布定检出水平$\alpha$(置信概率$P=1- \alpha$)与检测次数$n$查找表格获得临界值$G_0$。当计算的$G>G_0$则判断为异常点。

其他还有卡方检验(chi-square theory),Q_test等

Skyline用到的几种统计方法(单时间序列的异常检测)

median absolute deviation (MAD)

计算数据的中位数,偏差 = 每个值-中位数,得到偏差中位数

MAD对数据集中的异常值比标准偏差更具弹性。在标准偏差中,与均值的距离的平方,较大的异常值会影响更大。可以通过判断一个点的偏差是否过于偏离MAD来判断异常。

stddev_from_average

时间序列最后三个点的 $(t - series.mean) > 3 * series.std$

最新的三个数据点的平均值的绝对值减去移动平均值,大于三个平均值的标准偏差。

least_squares

根据最小二乘模型上,将最后三个数据点的平均值投影,大于三个sigma,则时间序列是异常的。

Histogram-based

如果最后三个数据点的平均值落入了带有少于n个其他数据点的直方图bin中。

统计学方法是可以用在时间序列上的,取最近的一时间段来进行统计计算。

基于距离distanced-based

直接定义距离

假设:若一个数据点和大多数数据点距离很远,则这个对象就是异常。但这个方法不太适合稀疏数据集。

KNN等基于邻居

简单的定义可以是:用数据对象与最近的K个点的距离之和。很明显,与K个最近点的距离之和越小,异常分越低;与K个最近点的距离之和越大,异常分越大。

聚类clustering
基于密度density

LOF方法:通过局部的数据密度来检测异常。显然,异常点所在空间的数据点少,密度低。

K邻近距离,在距离数据点 p 最近的几个点中,第 k 个最近的点跟点 p 之间的距离称为点 p 的 K-邻近距离,记为 k-distance (p) 。

可达距离:可达距离的定义跟K-邻近距离是相关的,给定参数k时, 数据点 p 到 数据点 o 的可达距离 reach-dist(p, o)为数据点 o 的K-邻近距离 和 数据点p与点o之间的直接距离的最大值。

局部可达密度:基于可达距离的,对于数据点 p,那些跟点p的距离小于等于 k-distance(p)的数据点称为它的 k-nearest-neighbor,记为$N_{k}(p)$数据点 p 的局部可达密度为它与邻近的数据点的平均可达距离的倒数:

局部异常因子:用局部相对密度来定义的。数据点 p 的局部相对密度(局部异常因子)为点p的邻居们的平均局部可达密度跟数据点p的局部可达密度的比值。

如果一个数据点跟其他点比较疏远的话,那么显然它的局部可达密度就小。判断异常点就是看它跟周围邻近的数据点的相对密度。如果数据点 p 的 LOF 得分在1附近,表明数据点p的局部密度跟它的邻居们差不多;如果数据点 p 的 LOF 得分小于1,表明数据点p处在一个相对密集的区域,不像是一个异常点;如果数据点 p 的 LOF 得分远大于1,表明数据点p跟其他点比较疏远,很有可能是一个异常点。

ABOD基于角度
IsolationForest

划分超平面来计算“孤立”一个样本所需的超平面数量。异常点所在空间中,所需要的划分次数更少。

构造itree随机二叉树

从全量数据中抽取一批样本,然后随机选择一个特征作为起始节点(bagging),并在该特征的最大值和最小值之间随机选择一个值,将样本中小于该取值的数据划到左分支,大于等于该取值的划到右分支。异常点一般都是非常稀有的,在iTree中会很快被划分到叶子节点。

x —— 要预测的样本

T.size —— iTree 的训练样本中同样落在 x 所在叶子节点的样本数。

e —— 数据 x 从 iTree 的根节点到叶节点过程中经过的边的数目

C(T.size) —— 修正值,二叉树的平均路径长度。

h(x) —— x在 iTree 中的路径长度:

ψ —— 训练一棵itree的样本数

E(h(x))—— 数据x在多棵树上的路径长度均值

x在这棵树的异常指数是:

如果h(x)越小,则s(x,ψ)越接近1;越大,则s(x,ψ)越接近0.5。

构造iforest

随机采样一部分数据集去构造每一棵树,保证不同树之间的差异性,采样数据量ψ不需要等于n,可以远远小于n。

20200226iForest

其他树方法变形:random cut forest、iForest、SCiForest、RRCF、改进的iForestASD方法,流数据异常检测帧等等。

回归模型

1,自回归AR

其中$c$是常数项,$\theta_i$是自相关系数,$ \varepsilon_t$是随机误差项(平均数为0,标准差为$\sigma$的随机误差值,也称白噪声)。$X_t$的当前值是前几期的线性组合。$\theta_i$的变化将使得时间序列拥有不同的特征。

对于AR(1)而言:

当$\theta_1=0$, $X_t$相当于白噪声。

当$\theta_1=1, c=0$时,$X_t$相当于随机游走模型。

当$\theta_1=1, c\neq0$时,$X_t$相当于带漂移的随机游走模型。

当$\theta_1<0$, $X_t$在正负值之间上下浮动。

P阶自回归模型的要求是时序数据具有平稳性,必须有自相关性(即自相关系数大于0.5),自回归只能适用于预测与自身前期相关的经济现象。

2,移动平均模型 MA

移动平均模型MA(q)更关注自回归模型中的误差项的累加。每一个值都可以被认为是一个历史预测误差的加权移动平均值。

AR(1)可以用MA($\infty$) 表示:$y_{t}=\varepsilon_{t}+\phi_{1} \varepsilon_{t-1}+\phi_{1}^{2} \varepsilon_{t-2}+\phi_{1}^{3} \varepsilon_{t-3}+\cdots$

2.1 注意移动平均法和移动模型不同

移动平均法适用于即期预测。当产品需求既不快速增长也不快速下降,且不存在季节性因素时,移动平均法能有效地消除预测中的随机波动,非常有用的。移动平均法包括简单移动平均和加权移动平均。

简单移动平均:$X_t = \frac{\sum_{i=1}^n X_{t-i}}{n}$

加权移动平均:$X_t = \sum_{i=1}^n \theta_i X_{t-i}$ , 其中$\theta_i$是权重值,对近期的趋势反映较敏感,但不适合有季节性的数据。

根据同一个移动段内不同时间的数据对预测值的影响程度,分别给予不同的权数,然后再进行平均移动以预测未来值。

指数加权移动平均EWMA,指数移动平均EMA。

3,ARIMA模型

适合有季节性的数据

4,时间序列分解

STL季节性分解

论文:Online Conditional Outlier Detection in Nonstationary Time Series

STL分解(非参数分解方法)为三个要素:季节性、趋势、残差。 分析残差的偏差,然后引入残差阈值,这样就能得到一种异常检测得算法。

移动平均、指数平滑、ARMA、ARIMA

2.4 线性模型(基于子空间subspace)

主成分分析PCA

因子分析Factor Analysis

2.3 机器学习

分类模型(类别不平衡问题)

决策树

支持向量SVM

延伸出来的还有OneClass SVM,Support Vector Machine (SVM) with ant colony network[4]

随机森林等

Isolation Forest方法

GBDT方法 / XgBoost / Bagging等

Bayesiannetwork

2.4 神经网络

RNN、LSTM方法

论文:Anomaly detection in ECG time signals via deep long short-term memory networks

AutoEncoder

深度信念网络等

SOM自组织地图

HTM方法

频谱残差

2.5 实时序列异常检测

2.5.1 NAB库有的

期望相似性估计

2.5.2 其他

[4]里的Support Vector Machine (SVM) with ant colony network ,pcStream algorithm(stream clustering),random cut forest,

Reference

1, “Everything you need to know about AIOps”, from https://www.moogsoft.com/resources/aiops/guide/everything-aiops/ (retrieved as of Feb. 12, 2019)

2,https://github.com/yzhao062/pyod#gopalan2019pidforest pyod异常检测库

3,https://github.com/etsy/skyline Skyline,一些统计方法

4,Habeeb R A A, Nasaruddin F, Gani A, et al. Real-time big data processing for anomaly detection: A Survey[J]. International Journal of Information Management, 2019, 45: 289-307.

5,https://otexts.com/fppcn/MA.html 预测方法与实践