第十五章 异常检测(Anomaly Detection)

15.1 问题的动机

接下来,我将介绍异常检测(Anomaly detection)问题。。这是机器学习算法的一个常见应用。这种算法的一个有趣之处在于:它虽然主要用于非监督学习问题,但从某些角度看,它又类似于一些监督学习问题。

接下来,我会通过一些例子来讲述什么是异常检测!

假想你是一个飞机引擎制造商,当你生产的飞机引擎从生产线上流出时,你需要进行QA(质量控制测试),而作为这个测试的一部分,你测量了飞机引擎的一些特征变量,比如引擎运转时产生的热量,或者引擎的振动等等。

特征变量

这样一来,我们就有一个数据集,从x^{(1)}x^{m},如果你生产了m个引擎的话,你将这些数据绘制成图表,看起来就是这个样子:

这里的每个点、每个叉,都是你的无标签数据。这样,异常检测问题可以定义如下:我们假设后来有一天,你有一个新的飞机引擎从生产线上流出,而你的新飞机引擎有特征变量x_{test}。所谓的异常检测问题就是:我们希望知道这个新的飞机引擎是否有某种异常,或者说,我们希望判断这个引擎是否需要进一步测试。因为,如果它看起来像一个正常的引擎,那么我们可以直接将它运送到客户那里,而不需要进一步的测试。

给定数据集x^{(1)},x^{(2)},...x^{(m)},我们假使数据集是正常的,我们希望知道新的数据x_{test}是不是异常的,即这个测试数据不属于该组数据的几率如何。我们所构建的模型应该能根据该测试数据的位置告诉我们其属于一组数据的可能性p(x)

上图中,在蓝色圈内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该组数据的可能性就越低。

这种方法称为密度估计,表达如下:

模型p(x)为我们其属于一组数据的可能性,通过p(x)<\varepsilon 检测非正常数据。



15.2 高斯分布

高斯分布,也称为正态分布。

通常如果我们认为变量x符合高斯分布x-N(\mu ,\sigma ^2)则其概率密度函数为:p(x,\mu ,\sigma ^2)=\frac{1}{\sqrt{2\pi}  \sigma } exp(-\frac{(x-\mu )^2}{2\sigma ^2} )我们可以利用已有的数据来预测总体中的\mu \sigma 。其计算方法如下:

\mu =\frac{1}{m} \sum\nolimits_{i=1}^mx^{(i)} ,\sigma ^2=\frac{1}{m} \sum_{i=1}^m(x^{(i)}-\mu )^2

高斯分布举例:


15.3 算法

接下来,我们将应用高斯分布来做异常检测。

异常检测算法:对于给定的数据集x^{(1)},x^{(2)},...,x^{(m)},我们要针对每一个特征计算\mu \sigma ^2的估计值。

\mu _j=\frac{1}{m} \sum\nolimits_{i=1}^mx^{(i)} _j,\sigma ^2=\frac{1}{m} \sum_{i=1}^m(x^{(i)}_j-\mu _j )^2

一旦我们获得了平均值和方差的估计值,给定新的一个训练实例,根据模型计算p(x):p(x)=\prod_{j=1}^n p(x_j,\mu_j ,\sigma ^2_j)=\prod_{j=1}^1 \frac{1}{\sqrt{2\pi } \sigma_j } exp(-\frac{(x_j-\mu _j)^2}{2\sigma ^2_j} )

p(x)<\varepsilon 时,为异常。

下图是一个由两个特征的训练集,以及特征的分布情况:

下面的三维图表表示的是密度估计函数,z轴为根据两个特征的值所估计p(x)值:

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



15.4 开发和评价一个异常检测系统

常检测算法是一个非监督学习算法,意味着我们无法根据结果变量y的值来告诉我们数据是否真的是异常的。我们需要另一种方法来帮助检验算法是否有效。当我们开发一个异常检测系统时,我们从带标记(异常或正常)的数据着手,我们从其中选择一部分正常数据用于构建训练集,然后用剩下的正常数据和异常数据混合的数据构成交叉检验集和测试集。

例如:我们有10000台正常引擎的数据,有20台异常引擎的数据。我们这样分配数据:

6000台正常引擎的数据作为训练集。

2000台正常引擎和10台异常引擎的数据作为交叉检验集。

2000台正常引擎和10台异常引擎的数据作为测试集。

具体的评论方法如下:

1、根据测试集数据,我们估计特征的平均值和方差并构建p(x)函数

2、对交叉检验集,我们尝试使用不同的\varepsilon 值作为阀值,并预测数据是否异常,根据F1值或者查准率与查全率的比例来选择\varepsilon

3、选出\varepsilon 后,针对测试集进行预测,计算异常检验系统的F1值,或者查准率与查全率之比。


15.5 异常检测与监督学习对比

之前我们构建的异常检测系统也使用了带标记的数据,与监督学习有些相似,下面的对比有助于选择采用监督学习还是异常检测:

两者比较:


15.6 选择特征

对于异常检测算法,我们使用的特征是至关重要的,下面谈谈如何选择特征:

异常检测假设特征符合高斯分布,如果数据的分布不是高斯分布,异常检测算法也能够工作,但是最好还是将数据转换成高斯分布,例如使用对数函数:x=log(x+c),其中c为非负常数;或者x=x^c,c0-1之间的一个分数,等方法。

误差分析:

一个常见的问题是一些异常的数据可能也会有较高的p(x)值,因而被算法认为是正常的。这种情况下误差分析能够帮助我们,我们可以分析那些被算法错误预测为正常的数据,观察能否找出一些问题。我们可能能从问题中发现我们需要增加一些新的特征,增加这些新特征后获得的新算法能够帮助我们更好地进行异常检测。

异常检测误差分析:

我们通常可以通过将一些相关的特征进行组合,来获得一些新的更好的特征(异常数据的该特征值异常地大或小),例如,在检测数据中心的计算机状况的例子中,我们可以用CPU负载与网络通信量的比例作为一个新的特征,如果该值异常地大,便有可能意味着该服务器是陷入了一些问题中。



15.7 多元高斯分布

假使我们有两个相关的特征,而且这两个特征的值域范围比较宽,这种情况下,一般的高斯分布模型可能不能很好地识别异常数据。其原因在于,一般的高斯分布模型尝试的是去同时抓住两个特征的偏差,因此创造出一个比较大的判定边界。

下图中是两个相关特征,洋红色的线(根据ε的不同其范围可大可小)是一般的高斯分布模型获得的判定边界,很明显绿色的X所代表的数据点很可能是异常值,但是其p(x)值却仍然在正常范围内。多元高斯分布将创建像图中蓝色曲线所示的判定边界。

在一般的高斯分布模型中,我们计算p(x)的方法是:通过分别计算每个特征对应的几率然后将其累乘起来,在多元高斯分布模型中,我们将构建特征的协方差矩阵,用所有的特征一起来计算p(x).

我们首先计算所有特征的平均值,然后再计算协方差矩阵:p(x)=\prod_{j=1}^n p(x_j,\mu_j ,\sigma ^2_j)=\prod_{j=1}^1 \frac{1}{\sqrt{2\pi } \sigma_j } exp(-\frac{(x_j-\mu _j)^2}{2\sigma ^2_j} )

\mu _j=\frac{1}{m} \sum\nolimits_{i=1}^mx^{(i)} _j

\Sigma =\frac{1}{m} \sum_{i=1}^m(x^{(i)}-\mu ) (x^{(i)}-\mu ) ^T=\frac{1}{m}(X-\mu ) (X-\mu ) ^T

注:其中\mu 是一个向量,其每一个单元都是原特征矩阵中一行数据的均值。最后我们计算多元高斯分布的p(x)=\frac{1}{(2\pi )\frac{n}{2} |\Sigma |\frac{1}{2} } exp(\frac{1}{2}(X-\mu )^T \Sigma ^{-1}(X-\mu ) )

下面我们来看看协方差矩阵是如何影响模型的:

上图是5个不同的模型,从左往右依次分析:

1. 是一个一般的高斯分布模型

2. 通过协方差矩阵,令特征1拥有较小的偏差,同时保持特征2的偏差

3. 通过协方差矩阵,令特征2拥有较大的偏差,同时保持特征1的偏差

4. 通过协方差矩阵,在不改变两个特征的原有偏差的基础上,增加两者之间的正相关性

5. 通过协方差矩阵,在不改变两个特征的原有偏差的基础上,增加两者之间的负相关性

可以证明的是,原本的高斯分布模型是多元高斯分布模型的一个子集,即像上图中的第1、2、3,3个例子所示,如果协方差矩阵只在对角线的单位上有非零的值时,即为原本的高斯分布模型了。

原高斯分布模型和多元高斯分布模型的比较:

原高斯分布模型被广泛使用着,如果特征之间在某种程度上存在相互关联的情况,我们可以通过构造新新特征的方法来捕捉这些相关性。

如果训练集不是太大,并且没有太多的特征,我们可以使用多元高斯分布模型。


15.8 使用多元高斯分布进行异常检测

对于多元高斯分布,我们已经知道其计算方法了,那么,我们如何把所有这一切共同开发一个异常检测算法?

首先,我们把我们的训练集,和我们的拟合模型,我们计算p(x),要求出\mu \Sigma

如图,该分布在中央最多,越到外面的圈的范围越小。那么超出范围的点,我们就认为是异常点。




参考:https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容

  • 该系列文章为,观看“吴恩达机器学习”系列视频的学习笔记。虽然每个视频都很简单,但不得不说每一句都非常的简洁扼要,浅...
    tomas家的小拨浪鼓阅读 1,191评论 1 7
  • 1.问题的动机 异常检测(Anomaly detection)问题是机器学习算法的一个常见应用。这种算法的一个有趣...
    带刺的小花_ea97阅读 15,133评论 4 6
  • 一、高斯分布 高斯分布又称为正态分布。高斯分布用函数描述 。其中 是平均值, 是方差。正态分布的 决定了曲线的...
    胖三斤66阅读 1,420评论 0 7
  • 高斯分布是自然界最常见的分布形态,用它来做异常检测是非常合适的模型。枪打出头鸟,那些分布在两端的小概率事件,要么好...
    kamidox阅读 6,097评论 5 22
  • 宁静的夜里,我躺在床上,窗外除了黑还是黑,好多的情绪一涌而上,突然悲伤得想要大哭一场。
    梦旅人zoe阅读 179评论 0 0