Machine Learning(Andrew)Week9(上)

来源:互联网 发布:淘宝主视频制作软件 编辑:程序博客网 时间:2024/05/22 12:53

异常检测Anomaly detection 

Problem motivation

“异常”就是类似于信息系统中,计算机病毒的感染或者侵入、盗用信用卡、生产线或者机器设备的故障等问题。虽然发生频率不是很高,但是一旦发生就会造成服务停止之类的重大损失,所以在异常发生之前或早期阶段就检测到至关重要。目前为止,重大事故发生较少,所以根据过去的数据进行预测也是很困难的。相反,既然很难定义异常,那么考虑一下它的反面“正常”是什么。系统正常运转时,产生的数据是有代表意义的,那么掌握正常数据的特征,利用监视系统,一旦发现数据脱离了正常的状态,就发出警告。这样一来,无须知道出现的是什么异常,只要有可能是异常的时候,立即提示警告,系统管理员就可以继续进行调查。(《Software Design(中文版)——机器学习的广泛应用及未来》文/鹿岛久嗣 东京大学 译/雷军)。

异常检测是machine learning的一个重要应用。异常检测 (Anomaly detection) 的假设是入侵者活动异常于正常主体的活动(百度百科)。

如下图所示:

是指要对飞机发动机进行监测,选取了两个特征:x1产生的热量和x2震动强度。图中红色的x都是已获取的正常的数据。现在有一个新的飞机发动机xtest送过来,要检测其是否正常。可以直观看出,把xtest根据其x1和x2特征绘制在图上,如果落在红色点所在区域内,就说明xtestt是正常的;如果落在离红色点分布的区域较远的地方,就说明它是异常的。

也可以用密度来检测。如下图,蓝色三个圈点的密度由里到外减小,可以设一个阈值ε,算xtset所在区域的密度。如果密度小于ε,则说明密度太小,就是异常值。

异常检测其他应用

(1)诈骗检测:把用户的行为作为特征x;建立概率模型p(x);如果用户所做的行为概率低于阈值ε,即p(x)<ε,则该用户有可能非法用户

(2)检测数据中心:特征可能又内存使用情况,被访问的磁盘数量,CPU负载,网络流量等;建立模型,判断计算机是否异常。

高斯分布

介绍下什么是高斯分布

忘记的去翻翻概率统计。用样本估计总体参数时:

均值:

样本方差。注意:为了计算方便,方差不是除以(m-1),而是m。

由高斯分布曲线可以看出,横坐标是数据值;纵坐标是概率,也可以说是某个数据值所占的比例。均值表征数据中心,方差表示数据覆盖的范围。根据图中蓝色的概率公式,这样就可以求出新数据的概率,也就是数据集中和该数据值相等的点的占比。如果概率很小,就说明数据集中和该数据值相等的点很少,该点离中心点很远,则它所落在区域的数据点分布密度也很小。

算法

(1)密度估计

给一组训练样本:

每一笔数据都有n个特征,即:

假设每一个特征都是服从高斯分布的。

对n个特征都算样本均值和方差,然后算出n个特征的状态分布情况。给一个新的数据时,要算这个数据点的分布概率,就把n维的高斯分布的概率值进行累乘。再跟阈值进行比较,如果小于阈值就说是异常点。

 

举个例子

如下图,一个训练样本(红色的点)的数据点有两个特征,x1和x2。

分别求出这两个特征的样本均值和方差

绘制概率密度分布曲线:

x1特征的概率分布

x2特征的概率分布


三维密度分布为:

 

看训练样本分布的那幅图(这个例子的第一幅图),图中的两个绿色点表示要进行异常监测的两个点。

 

第一个点没有异常,第二个点异常

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

用机器学习方法来检测异常,最大的特点就是根据正常来判断异常。就是训练数据用的都是正常的数据。这样检测速度会很快,而且误检率会比较低。

异常检测系统的数据是一组贴标签的数据,y=0是正常,y=1是异常。

对于训练数据集,用的全都是正常数据,而验证集和测试集既有正常值又有异常值。

如飞机引擎检测的数据集为:

算法评估:

(1)根据训练数据建立了概率分布模型p(x)

(2)用验证集验证数据点是否异常,用F1-score值来选出阈值

(3)用测试集预测数据点是否异常

(4)用F1-score值来评估

这里用F1-score来评估,是因为异常值比较少,和skew class一样。

异常检测与监督学习比较

二者的应用场景

 

特征选择

前面假设每一笔数据的n个特征都服从高斯分布,如下图:

但是实际的情况却不都是服从高斯分布,而是像这样的:

这个时候就要想办法,转换成高斯分布。可以通过求log值:x = log(x+c),其中c为非负常数;或者求高次幂x=x^c,c为0-1之间的一个分数等,把非高斯分布的特征分布变成了高斯分布。

错误分析

我们希望正常的数据p(x)大,异常的p(x)小。但是,有的异常数据的p(x)也会比较大,这样就有可能误检。所以,要分析那些被误检的数据点,找到误检解决方案。

比如上面这个图,我们发现有一个异常值,求出的p(x)也挺大的,可以考虑增加特征看是否能够做出正确检测

 

增加特征x2后,异常值的确很容易就被检测出来了。

多元高斯分布

前面说到n个特征,可以求出n个高斯分布,其实我们完全可以只求一个n元高斯分布就可以了。

一元高斯分布

要求出均值和方差

n元高斯分布:

n元要求出均值向量和方差矩阵

和原高斯分布的关系:

可以看出Σ矩阵的对角线就是原高斯分布每个特征的方差。

比较原高斯分布和多元高斯分布异常检测的区别

 

0 0
原创粉丝点击