机器学习-13(异常检测)

这是第十六部分了。。。。讲得是异常检测,非监督学习算法中的一种。

先举个课程里的例子来引开这部分的内容吧,对飞机引擎的异常检测,课程里选择了热量生成和振动强度两个特征来引入异常检测,使用大量的训练样本在二维坐标系中绘制出两个特征对应关系的图,此时有一个新引擎送来检测,通过这两个特征,咱可以通过判断其数据点是否在正常区域范围内与否,来分析其是否异常。

Anomaly detection example

异常检测例子:飞机引擎检测

根据上图,咱可以通过数据点的密集程度来判断异常情况,点越密集越正常,否则异常。可以通过使用一个阈值来辅助判断,小于阈值为异常,大于阈值为正常。

Density estimation

密度评估

异常检测的应用范围是很广泛的,欺诈识别、制造业还有IT业(监测数据中心的计算机)。

异常检测算法的数学基础就系概率论中大名鼎鼎的高斯分布(又称标准正态分布)。其实,俺也不太熟悉这概率统计,但是就像Andrew Ng所说的,即使不理解原理,但不会太影响应用。下面就是高斯分布的图像和公式。Mu和Sigma两个参数分别控制着高斯分布曲线的位置、高度和宽度。公式其实不用强记,用到的时候搜索一下即可。

Gaussian(Normal) distribution

高斯/正态分布

Gaussian distribution example

高斯分布的图像变化

关于Mu和Sigma两参数的计算也是蛮简单的,Mu取特征的平均值,Sigma取特征与平均值之间的均方差即可,有时候,这里均方差公式中的除数可能会出现m-1,概率论中的式子是这样的,但实际上即使为m(利于计算)影响也不大,因为样本数量庞大的情况下,这点误差可以忽略不计。

Parameter estimation

模型参数估算

其实注意观察,图像咱可以发现高斯分布的一些简单性质,数据密度大的地方,概率大,整个曲线部分的概率和为1。

扯了这么多,说到算法的具体实现。先是密度评估,给定一个m阶的训练集,每一样本具有n阶特征。那么如何求出某一样本其是否异常的概率呢?步骤很简单,先对每一特征求出对应的Mu和Sigma,然后将样本的特征代入公式,最后把每一特征的结果累乘。

Density estimation

密度估算过程

思路出来了,具体处理的时候,还是有些变化的。具体应用的时候,其实可以挑选出些最能指示是否异常的特征即可。第二步就是拟合参数Mu和Sigma(计算),最后就是针对具体的样本计算p(x),如果小于阈值即为异常,反之正常。

Anomaly detection algorithm

异常检测算法的实现过程

下图是只有两个特征情况下的高斯分布三维图形,很直观。

Anomaly detection example

异常检测(两个特征)的高斯分布三维图像

开发和评估一个异常检测系统, 异常检测属于非监管学习的范畴,之前的评估方法依然适用,但是略有变化的是,由于异常检测的特殊性,咱会使用经过标注的数据来辅助评估过程。训练数据集(假设不带任何异常的样本),交叉验证集和测试集带少量经过标注异常的样本,其比例最好是6:2:2。之后就可以使用之前学过的方法来对整个模型进行评估,使用这些的评估方法还可以帮助选择阈值。

Algorithm evaluation

算法的评估方法

看了上面这些东西,很多人都会觉得异常检测和一些监管学习算法非常的接近,二者的区别在哪呢? 主要是应用场景的不同,一般来说,如果正样本(异常,也就是y=1的情况)很少,负样本很多的情况就会使用异常检测算法。异常种类很多,对于任何算法来说都难以从正样本中学到异常的情况,未来的异常完全无法从当前我们所看到的异常样本分析出来,这些都是异常检测算法使用的范围。而反之,如果具备大量的正负样本,对于算法来说足够的正样本可以让其分析出正样本的情况,未来的正样本很可能跟训练集中的一个很接近时,可以使用监管学习算法。

Anomaly detection vs. supervised learning

异常检测与监管学习算法的应用对比

课程第六节,开始帮助咱分析如何选择特征,其实就是对特征的重构,因为不是所有的特征都能很好的符合高斯分布的,所以要进行一些变换,使得特征近似的进行高斯分布,方法多种多样,比如求对数啦,求各种根神马的,当然并不是说一定要进行特征变换,其实即使不做变换,也可以工作的很好了,不过精益求精总是没错的。而更具体的选择,咱通常是选择在异常情况会出现异常大或者异常小的特征值,如果没有,那就根据某些特征的具体关系构建一个新特征来帮助建模。

Non-gaussian features

不符合高斯分布的特征情况

Monitoring computers in a data center

监测数据中心的计算机(重构特征)

之前咱使用的异常检测算法可以认为是一种标准的方法,接下来,咱来介绍另一方法,也就是多元高斯分布法。使用上面的算法,有时候在异常检测的时候会出现错误,主要是算法上没有很好的处理特征之间的相互关系而造成的。所以这里引入多元高斯分布算法,咱不再对单个特征分别计算出Mu和Sigma,而是把样本变成特征向量来进行运算,只要一次就能把p(x)算出来,相应的Mu和Sigma也分别变成了n阶向量和n*n阶矩阵的形式。

Motivating example:Monitoring machines in a data center

检测数据中心计算机(分析出错)

Multivariate Gaussian (Normal) distribution

多元高斯分布

下图中的一系列Mu和Sigma的变化,指示了多元高斯分布的变化特点。

Multivariate Gaussian (Normal) examples

多元高斯分布的不同变化

Multivariate Gaussian (Normal) examples

多元高斯分布的不同变化-1

Multivariate Gaussian (Normal) examples

多元高斯分布的不同变化-2

Multivariate Gaussian (Normal) examples

多元高斯分布的不同变化-3

Multivariate Gaussian (Normal) examples

多元高斯分布的不同变化-4

Multivariate Gaussian (Normal) examples

多元高斯分布的不同变化-5

运用了多元高斯分布的异常检测算法,具体的变化,就是改变了特征的表示形式,进而可以得到All in one的运算结果,而且这种方法有个特点是可以自动的”理解”特征之间的相互联系,对模型参数进行更好的拟合,进而得到更加优越的性能。

Multivariate Gaussian (Normal) distribution

多元高斯分布的参数运算

Anomaly detection with the multivariate Gaussian

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

原模型与多元模型的区别在于一个需手动的去捕抓特征间的不寻常联系,而多元却可以自动的处理这些,无需手动干涉,不过这种方式下的运算开销要更大,而且必须样本m必须大于特征n,不然矩阵不可逆,无法运算,不然,此时只能手动去消减冗余特征了或扩大样本。所以总的来说两者各有利弊。

Relationship to original model

多元高斯分布模型与原始模型的联系

Original model vs. Multivariate Gaussian

原始模型与多元高斯的对比

嗯,这就是异常检测了。

Leave a Reply

Your email address will not be published. Required fields are marked *