码迷,mamicode.com
首页 > 其他好文 > 详细

Andrew Ng-ML-第十六章-异常检测

时间:2018-08-11 18:56:38      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:邮件   建立   height   概率   alt   play   算法   形式   10个   

 1.问题动机

技术分享图片

 图1.飞机发动机检测例子

 对飞机引擎的例子,如果选取了两个特征x1热量产生度,x2震动强度。并得到如下的图,如果有一个新的引擎来检测其是否正常,x_test,那么此时如果点落在和其他点正常内,那么就显示是正常,不需要进一步的检测,但是如果在右下角绿色的,那么就是异常的,需要进一步地检测。

技术分享图片

图1.密度检测

 更一般地建立模型,当x_test输入时,若概率<阈值ε,那么就被设置为异常;否则设置为正常。如图来看,中心部分的概率大,四周部分概率小。

技术分享图片

图2.异常检测的应用

异常检测最常见的应用是进行,用户欺诈检测,对用户的模型作为向量,从数据中建立模型,异常用户为:p(x)<ε。还有在工业生产,检测计算机中心。

 2.高斯分布/正态分布

 其中μ是均值,σ是方差,可以使用公式来计算。曲线特点:当σ越小时,曲线越瘦高;当σ越大时,曲线越胖矮。并且根据概率的性质,曲线下方面积为1。

 3.算法

 技术分享图片

图3.密度估计问题

 对一个无标记的训练集来说,建立的模型为如上式,是一个独立假设问题,假设x_i均服从正态分布并且使独立的,那么p(x)就是这个密度估计模型,写成了阶乘的形式。(也是符合高斯分布的,当其处于均值附近,那么p就对应比较大,是符合刚刚讲的检测结果,如果p(x)<σ,那么就是异常的,不符合大部分点的分布。)

技术分享图片

图4.异常检测算法

 这就是所谓的异常检测算法,不就是求训练集的高斯分布参数,有新的样本来时,观察其是否分布在均值附近了。最终结果,如果p(x)<σ,那么就是异常的。

 注意:这里不是对一个向量x,而是针对向量中每个分量,即每个特征值!,都有那么一个高斯分布,并且整个样本的决定是通过连乘。

 4.开发和评估异常检测系统

技术分享图片

图5.数值评估的重要性

 当进行一个学习算法时,当有一个方法来进行评估,那么此时是更容易决策的。

假设现在有一些标记数据,y=1表示是异常的,在训练集中假设全都是正常样本,不包括异常样本,并且有验证集和训练集。

技术分享图片

图6.发动机引擎例子

假设数据集一共包括10000个正常引擎数据和20个一场引擎数据,好的数据集分法是:

训练集中有6000个正常引擎数据,交叉验证集中2000个正常,10个异常,测试集中2000个正常,10个异常。通常交叉验证机和测试集的数据是不一样的,也不应该是一样的。 

 下一种分法是不好的分法,但通常有人这么做,就是将交叉验证集和测试集中的数据完全一样,这是不可取的。

技术分享图片

图7.算法评估

 通过在训练集上训练出模型,当p(x)<ε时被判断为异常点,反正则正常;

那么如何去评估这个算法呢?由于这个问题数据集明显是偏斜的,所以使用以下:

查准率和查全率,F_1公式;

或者也可以使用在交叉验证集上设置阈值ε来计算,这个和公式判断异常或正常中的ε是相同的。通过设置很多ε,并且在交叉验证集上测试,并选取一个让F_1公式最高的ε。(并且使用这个来决策,也可以决定哪个特征应该被选择,哪个不被选择。)

 5.异常检测VS监督学习

 那么既然对于有标签的数据,为什么使用异常检测而不是直接训练一个监督学习的模型呢?

技术分享图片

图8.异常检测与监督学习

 异常检测的数据集特征:通常都是负例,只有很少的部分是正例(0-20是比较常见的)。

有很多种不同类型的异常,并且很难从正例中去找出算法来学习其特征(比如飞机发动机引擎出故障的原因),并且下次出现的异常很有可能从来没见过。

 监督学习的数据集特征:有大量的正例和负例。

能够有足够多的正例去让算法获取特征,将来出来的样例可能和之前在训练集中出现的类似。 

 比如对于垃圾邮件分类,虽然很有可能下一次出现的并不和之前训练集中相同,但是因为可以获取足够多的垃圾邮件的数据,所以通常使用监督学习的方法来进行垃圾邮件分类。

技术分享图片

图9.问题应用

 对于异常检测:缺陷检测、工业生产、数据中心监督机器。(关键点是这些缺陷点的数据够不够多,比如在工业生产中,如果缺陷数据够多,那么也可也建立监督模型。)

 监督学习:垃圾邮件分类、天气预测、癌症分类。

 

Andrew Ng-ML-第十六章-异常检测

标签:邮件   建立   height   概率   alt   play   算法   形式   10个   

原文地址:https://www.cnblogs.com/BlueBlueSea/p/9460621.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!