斯坦福机器学习公开课笔记(十二)--异常检测


公开课地址:https://class.coursera.org/ml-003/class/index 

授课老师:Andrew Ng

1、problem motivation(问题的产生)

先来看一个例子,假设我们要对飞机引擎进行检测,我们知道飞机引擎的性能和很多因素相关,这里我只选择热量和振动强度两个因素,在获取大量正常的数据以后,我们能在二维坐标系中绘制出这两个因素之间的关系,如下图红色点所示:


现在有一个新的引擎送到我们这里检测,我们检测了该引擎的热量和振动强度,现在为了确定该引擎是否正常,可以通过判断其对应点是否在正常区域内,如果在就可以认为该引擎正常,否则认为该引擎异常,上图中标注为anomaly的点就是异常点。

同样,我们也可以根据点的密度来判断异常情况,点越密表明越正常,否则就是异常,为了更好的衡量,我们可以设定一个阈值,当估计值小于阈值,证明密度过低,为异常情况:


异常检测在制造业和信息业的用处很大,除了上面提到的飞机引擎检测,在数据中心中加入异常检测可以判断电脑是否运行正常。

2、gaussian distribution(高斯分布)

学过概率的同学肯定都知道高斯分布,它还有一个名字叫正态分布,其分布形状和表达式如下:


通过调整均值和方差,图像的形状会发生变化,学过概率的直接无视:


假设我们已知样本点服从高斯分布,我们就需要求出均值和方差,通过公式不难求得:


注意在计算方差时我们是除以m而不是常见的除以m-1Adrew解释称这是为了计算方便,尽管期望不准确了,但这点误差可以忽略。

3、algorithm(算法)

现在我们已经知道了高斯分布的情况,那么如何来计算一个样本点的密度呢?我们首先假设样本点中的每个特征都满足高斯分布,如果有n维特征,那么就有n个高斯分布:


某个样本的密度就是该样本点在n维高斯分布上的密度的乘积。下面是整个算法过程:


可以看到,在给定新的样本后,我们可以计算出密度值与阈值进行比较,如果小于阈值就认为是异常。下面是一个具体的例子:


4、developing and evaluating an anomaly detection system(开发评估一个异常检测系统)

在开发一个系统之前我们首先要有数据:


比如针对前面提到的引擎问题,我们可以获得下面数据:


注意在训练集中不存在异常值,在验证集和测试集中才包含异常值。然后就是训练,验证,测试,在评估模型好坏的时候可以采用前面提到的F1-score值来评价,至于阈值,也可以通过验证的情况进行选择:


5、anomaly detection vs. Supervised learning(异常检测vs监督学习)

异常检测是把异常区分出来,这一点类似于监督学习中的分类,不过这两者还是存在较大区别的,例如异常检测中异常值较少(positive),而监督学习中不存在这种情况,同时如果异常的种类太多或者未来异常难以预测也应该采用异常检测而不是监督学习:


下面是这两者的应用,从应用中也能看出上面提到的区别:


6、choosing what feature to use(选择要使用的特征)

前面我们都是假设样本的特征都是服从高斯分布的,实际情况并不如此,为此我们需要做一番变换:


可以看到,通过求log值,可以把左下方看起来不像高斯分布的情况变成高斯分布。同时我们希望p(x)在正常情况下尽可能大,在异常时尽可能小,但是经常会发现在这两种情况下p(x)的值区别不大。考虑前面提到的数据中心监控问题,可以从当前的特征中提取出新的特征来满足要求:


7、multivariate Gaussian distribution(多元高斯分布)

还是前面提到的数据中心的监控问题,这里我们不再像之前那样按照特征分成多个高斯分布进行相乘,而是直接用一个高斯分布进行表示,这就是多元高斯分布,概率论中也提到过:


这里方差是一个矩阵的形式体现的,也就是我们经常听到的协方差矩阵,同时均值也是以矩阵形式体现的。多元意味着高斯分布不再是二维平面上的分布,而是在更高维的面上分布。下面是二维的情况,通过改变均值和协方差我们能看到分布的变化:


8、anomaly detection using the multivariate gaussian distribution(使用多元高斯分布异常检测)

首先我们需要根据样本点计算出多元高斯分布的均值和协方差:


然后计算新加入的样本点的密度:


其实,多元高斯分布和前面的高斯分布是存在一定联系的,通过计算就会看到多元高斯分布中协方差矩阵的主对角元素也是由单个特征的方差构成的:


最后是比较这两种模型的特点:


可以看到,原始模型必须人工指定特征,而多元模型会自动计算出特征之间关系。不过原始模型没有引入矩阵,计算简单,同时针对样本很少时也能正确执行。而多元模型在引入矩阵后计算复杂,由于要计算矩阵的逆,必须在样本值大于特征值的情况下执行。

------------------------------------------弱弱的分割线----------------------------------------------

这一讲虽然是讲的异常检测,但其实是为了介绍高斯分布,可以说高斯分布在机器学习里面用处也比较广泛,经常使用的EM算法的核心就是高斯分布,遗憾的是这里并没有提到。至于异常检测,之前不知道这到底属于有监督学习、无监督学习还是半监督学习,上维基看了一下明白了,同样有这个疑惑的童鞋看这里:

http://en.wikipedia.org/wiki/Anomaly_detection


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值