异常检测-基于统计学的方法-学习笔记-2


异常检测的学习笔记并非原创,而是搜索各位大佬的帖子整理而得。如有冒犯,请联系我。

1. 概述

统计学⽅法对数据的正常性做出假定。它们假定正常的数据对象由⼀个统计模型产⽣,而不遵守该模型的数据是异常点

异常检测的统计学⽅法的⼀般思想是:学习⼀个拟合给定数据集的⽣成模型,然后识别该模型低概率区域中的对象,把它们作为异常点。根据如何指定和学习模型,异常检测的统计学⽅法可以划分为两个主要类型:参数⽅法和⾮参数⽅法。

2. 参数⽅法

参数⽅法假定正常的数据对象被⼀个以\Theta为参数的参数分布产⽣。该参数分布的概率密度函数f(x,\theta)
给出对象x被该分布产⽣的概率,\theta  \in \Theta。该值越小, 越可能是异常点。

2.1 基于正态分布的⼀元异常点

仅涉及⼀个属性或变量的数据称为⼀元数据。我们假定数据由正态分布产⽣,然后可以由输⼊数据学习正态分布的参数,并把低概率的点识别为异常点。

假定输⼊数据集为\left\{x^{(1)}, x^{(2)}, \ldots, x^{(m)}\right\},数据集中的样本 iid 服从正态分布,即x^{(i)} \sim N\left(\mu, \sigma^{2}\right)。求出参数之后,我们就可以根据概率密度函数计算数据点服从该分布的概率。正态分布的概率密度函数为

p(x)=\frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{(x-\mu)^{2}}{2 \sigma^{2}}\right)

如果计算出来的概率低于阈值,就可以认为该数据点为异常点。

2.2 多元异常点检测

涉及两个或多个属性或变量的数据称为多元数据。许多⼀元异常点检测⽅法都可以扩充,⽤来处理多元数据。其核⼼思想是把多元异常点检测任务转换成⼀元异常点检测问题。对于第j维:

\begin{aligned}
\mu_{j} &=\frac{1}{m} \sum_{i=1}^{m} x_{j}^{(i)} \\
\sigma_{j}^{2} &=\frac{1}{m} \sum_{i=1}^{m}\left(x_{j}^{(i)}-\mu_{j}\right)^{2}
\end{aligned}

计算概率时的概率密度函数为:

p(x)=\prod_{j=1}^{n} p\left(x_{j} ; \mu_{j}, \sigma_{j}^{2}\right)=\prod_{j=1}^{n} \frac{1}{\sqrt{2 \pi} \sigma_{j}} \exp \left(-\frac{\left(x_{j}-\mu_{j}\right)^{2}}{2 \sigma_{j}^{2}}\right)

2.3 多个特征相关,且符合多元⾼斯分布

\begin{array}{l}
\mu=\frac{1}{m} \sum_{i=1}^{m} x^{(i)} \\
\sum=\frac{1}{m} \sum_{i=1}^{m}\left(x^{(i)}-\mu\right)\left(x^{(i)}-\mu\right)^{T} \\
p(x)=\frac{1}{(2 \pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}} \exp \left(-\frac{1}{2}(x-\mu)^{T} \Sigma^{-1}(x-\mu)\right)
\end{array}


3. 非参数⽅法

在异常检测的⾮参数⽅法中,“正常数据”的模型从输⼊数据学习,而不是假定⼀个先验。通常,⾮参数⽅法对数据做较少假定,因而在更多情况下都可以使⽤。

例⼦:使⽤直⽅图检测异常点。

4. HBOS

HBOS全名为:Histogram-based Outlier Score。它是⼀种单变量⽅法的组合,不能对特征之间的依赖关系进⾏建模,但是计算速度较快,对⼤数据集友好。其基本假设是数据集的每个维度相互独⽴。然后对每个维度进⾏区间(bin)划分,区间的密度越⾼,异常评分越低。

算法推导过程:https://blog.csdn.net/i_am_huang/article/details/89207102

如何通过Python实践HBOS算法:https://blog.csdn.net/qq_35692819/article/details/112687881

另一个帖子:https://zhuanlan.zhihu.com/p/343748853

5. 总结

异常检测的统计学⽅法由数据学习模型,以区别正常的数据对象和异常点。

HBOS在全局异常检测问题上表现良好,但不能检测局部异常值。但是HBOS⽐标准算法快得多,尤其是在⼤数据集上。

推荐阅读更多精彩内容