异常检测

异常检测(Anomaly Detection)

异常检测一种用来基于正常的样本特征的表现来检测出故障或者异常个体的学习模型。比如你是一名教师,当你的学生面临毕业时,需要对同学们选择一些特征来进行评估考核,比如论文发表情况$x1$,考试成绩$x_2$,或者在实验室是否玩游戏$x_3$什么的。通过收集你已毕业学生们的数据,你就会有一个数据集${x^{(1)},x^{(2)},\dots,x^{(m)}}$。当今年招了一个吊儿郎当的学生$x{test}$时,你可以根据这个数据集和异常检测算法来判断这个学生是否能按时毕业。

高斯分布(Gaussian Distribution)

高斯分布也被称为正态分布。通常如果我们认为变量$x$符合高斯分布$x\sim N(\mu,\sigma^2)$,则其概率密度函数为:

可以将数据标准化$z=\frac{x-\mu}{\sigma}$,则$z\sim N(0,1)$。

我们可以利用已有的数据来估计总体中的$\mu$和$\sigma^2$:

机器学习中对于方差我们通常只除以$m$而非统计学中的$m-1$ 。

多元高斯分布(Multivariate Gaussian Distribution)

多元高斯分布也称为多元正态分布,它是单维正态分布向多维的推广。 其概率密度函数为:

其中$x\in\mathbb R^n$,$\Sigma$是协方差矩阵,$\Sigma\in\mathbb R^{n\times n}$。

同样地,我们可以利用已有的数据集来估计总体中的$\mu$和$\sigma^2$:

应用高斯分布的异常检测算法

对于给定的数据集${x^{(1)},x^{(2)},\dots,x^{(m)}}$,我们要针对每一个特征$x_j$的$\mu_j$和$\sigma^2_j$进行估计。当获得了平均值和方差的估计值后,便可得到模型:

计算出具体概率之后,我们可根据$p(x)$值的大小进行密度估计:

我们需要选择一个恰当的$\epsilon$,将$p(x)=\epsilon$作为我们的判定边界,当$p(x)>\epsilon$时预测数据为正常数据,否则为异常。

应用多元高斯分布的异常检测算法

应用上面的高斯分布模型进行计算的时候,默认所有的特征都是相互独立的,但事实上往往不能确定。这可能导致一些异常的数据可能也会有较高的$p(x)$值,因而被算法认为是正常的。可以运用多元高斯分布来捕捉到变量见的相互关系。

同样地,在计算出具体概率之后,我们可根据$p(x)$值的大小进行密度估计:

高斯分布模型 v.s. 多元高斯分布模型

高斯分布模型 多元高斯分布模型
不能捕捉特征之间的相关性,但可以通过将特征进行组合的方法来解决。 可以自动捕捉特征之间的相关性。
计算代价低,能适应大规模的特征。 计算代价较高,训练集较小时适用。
没啥 必须要有$m>n$,并且需要特征没有冗余,否则$\Sigma$不可逆。通常需要$m>10n$

特征变换

当我们进行上述检测的时候,我们似乎已经认为所有的特征都遵循高斯分布,但若一些也正看起来不遵循正态分布的时候,可以运用某些函数变换(例如对数变换和指数变换)成高斯分布。

模型评价

当我们开发一个异常检测系统时,我们从带标记(异常或正常)的数据着手,我们从其中选择一部分正常数据用于构建训练集,然后用剩下的正常数据和异常数据混合的数据构成交叉检验集和测试集。

例如:现在有10000名已经毕业的学生的数据,有20名没有正常毕业的学生的数据。 现这样分配数据:

  • 6000名已经毕业的学生的数据作为训练集;
  • 2000名已经毕业的学生和10台没有正常毕业的学生的数据作为交叉检验集;
  • 2000名已经毕业的学生和10台没有正常毕业的学生的数据作为测试集。

具体的评价方法如下:x

  • 根据测试集数据,我们估计特征的平均值和方差并构建概率函数$p(x)$;
  • 对交叉检验集,我们尝试使用不同的$\epsilon$作为阀值,并预测数据是否异常,根据$F_1Score$或者查准率与查全率的比例来选择;
  • 选出$\epsilon$后,针对测试集进行预测,计算异常检测算法的$F_1$值,或者查准率与查全率之比$\frac{R}{P}$。

异常检测与监督学习对比

既然我们上面的数据都已经有标记了,围殴什么不能用监督学习中的分类算法来解决问题呢?下面的对比可以有助于算法模型的选择

异常检测 分类算法
非常少量的正向类(异常数据 $y=1$);大量的负向类($y=0$) 同时有大量的正向类和负向类
许多不同种类的异常,非常难。根据非常 少量的正向类数据来训练算法。 有足够多的正向类实例,足够用于训练算法,未来遇到的正向类实例可能与训练集中的非常近似。
未来遇到的异常可能与已掌握的异常情况不同。 不同的种类都在意料之中。
例如: 欺诈行为检测 生产(例如飞机引擎)检测数据中心的计算机运行状况 例如:邮件过滤器 天气预报 肿瘤分类