异常检测

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

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

这里的每个点、每个叉,都是你的无标签数据。这样,异常检测问题可以定义如下:我们假设后来有一天,你有一个新的飞机引擎从生产线上流出,而你的新飞机引擎有特征变量xtestx_{test}xtest​。所谓的异常检测问题就是:我们希望知道这个新的飞机引擎是否有某种异常,或者说,我们希望判断这个引擎是否需要进一步测试。因为,如果它看起来像一个正常的引擎,那么我们可以直接将它运送到客户那里,而不需要进一步的测试。
给定数据集x(1),x(2),...,x(m)x^{(1)},x^{(2)},...,x^{(m)}x(1),x(2),...,x(m) ,我们假使数据集是正常的,我们希望知道新的数据xtestx_{test}xtest​是不是异常的,即这个测试数据不属于该组数据的几率如何。我们所构建的模型应该能根据该测试数据的位置告诉我们其属于一组数据的可能性p(x)p(x)p(x)

上图中,在蓝色圈内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该组数据的可能性就越低。
这种方法称为密度估计,表达如下:

欺诈检测:
x(i)=用户的第i个活动特征x^{(i)}=用户的第i个活动特征x(i)=用户的第i个活动特征
模型p(x)p(x)p(x)为我们其属于一组数据的可能性,通过p(x)<ϵp(x)<\epsilonp(x)<ϵ检测非正常用户。
异常检测主要用来识别欺骗。例如在线采集而来的有关用户的数据,一个特征向量中可能会包含如:用户多久登录一次,访问过的页面,在论坛发布的帖子数量,甚至是打字速度等。尝试根据这些特征构建一个模型,可以用这个模型来识别那些不符合该模式的用户。
再一个例子是检测一个数据中心,特征可能包含:内存使用情况,被访问的磁盘数量,CPU的负载,网络的通信量等。根据这些特征可以构建一个模型,用来判断某些计算机是不是有可能出错了。
2.高斯分布
在这个视频中,我将介绍高斯分布,也称为正态分布。回顾高斯分布的基本知识。
通常如果我们认为变量 x符合高斯分布xN(μ,σ2)x~N(\mu,\sigma^2)x N(μ,σ2)则其概率密度函数为:

我们可以利用已有的数据来预测总体中的μ\muμ和σ2\sigma^2σ2的计算方法如下:

高斯分布样例:

注:机器学习中对于方差我们通常只除以m而非统计学中的(m-1)。这里顺便提一下,在实际使用中,到底是选择使用1/m还是1/(m-1)其实区别很小,只要你有一个还算大的训练集,在机器学习领域大部分人更习惯使用1/m这个版本的公式。这两个版本的公式在理论特性和数学特性上稍有不同,但是在实际使用中,他们的区别甚小,几乎可以忽略不计。
3.算法
异常检测算法:对于给定的数据集 x(1),x(2),...,x(m)x^{(1)},x^{(2)},...,x^{(m)}x(1),x(2),...,x(m),我们要针对每一个特征计算μ\muμ和σ2\sigma^2σ2的估计值

一旦我们获得了平均值和方差的估计值,给定新的一个训练实例,根据模型计算p(x):

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

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

我们选择一个ϵ\epsilonϵ,将p(x)=ϵp(x)=\epsilonp(x)=ϵ作为我们的判定边界,当p(x)>ϵp(x)>\epsilonp(x)>ϵ时预测数据为正常数据,否则为异常。
在这里,我们学习如何拟合p(x),也就是x的概率值,以开发出一种异常检测算法。同时,在这节课中,我们也给出了通过给出的数据集拟合参数,进行参数估计,得到参数 μ\muμ和σ\sigmaσ ,然后检测新的样本,确定新样本是否是异常。在接下来的课程中,我们将深入研究这一算法,同时更深入地介绍,怎样让算法工作地更加有效。
4.开发和评价一个异常检测系统
异常检测算法是一个非监督学习算法,意味着我们无法根据结果变量 的值来告诉我们数据是否真的是异常的。我们需要另一种方法来帮助检验算法是否有效。当我们开发一个异常检测系统时,我们从带标记(异常或正常)的数据着手,我们从其中选择一部分正常数据用于构建训练集,然后用剩下的正常数据和异常数据混合的数据构成交叉检验集和测试集。
例如:我们有10000台正常引擎的数据,有20台异常引擎的数据。
我们这样分配数据:
6000台正常引擎的数据作为训练集
2000台正常引擎和10台异常引擎的数据作为交叉检验集
2000台正常引擎和10台异常引擎的数据作为测试集
具体的评价方法如下:
1.根据测试集数据,我们估计特征的平均值和方差并构建p(x)函数
2.对交叉检验集,我们尝试使用不同的ϵ\epsilonϵ值作为阀值,并预测数据是否异常,根据F1值或者查准率与查全率的比例来选择ϵ\epsilonϵ
3.选出ϵ\epsilonϵ后,针对测试集进行预测,计算异常检验系统的F1值,或者查准率与查全率之比
5.异常检测与监督学习对比
之前我们构建的异常检测系统也使用了带标记的数据,与监督学习有些相似,下面的对比有助于选择采用监督学习还是异常检测:

6.选择特征
对于异常检测算法,特征是至关重要的,下面谈谈如何选择特征:
异常检测假设特征符合高斯分布,如果数据的分布不是高斯分布,异常检测算法也能够工作,但是最好还是将数据转换成高斯分布,例如使用对数函数x=log(x+c),其中c为非负常数; 或者x=c2x=c^2x=c2 ,c为 0-1 之间的一个分数,等方法。
在python中,通常用np.log1p()函数,log1p就是log(x+1) ,可以避免出现负数结果,反向函数就是np.expm1())

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


我们通常可以通过将一些相关的特征进行组合,来获得一些新的更好的特征(异常数据的该特征值异常地大或小),例如,在检测数据中心的计算机状况的例子中,我们可以用CPU负载与网络通信量的比例作为一个新的特征,如果该值异常地大,便有可能意味着该服务器是陷入了一些问题中。在这段视频中,我们介绍了如何选择特征,以及对特征进行一些小小的转换,让数据更像正态分布,然后再把数据输入异常检测算法。同时也介绍了建立特征时,进行的误差分析方法,来捕捉各种异常的可能。希望你通过这些方法,能够了解如何选择好的特征变量,从而帮助你的异常检测算法,捕捉到各种不同的异常情况。

吴恩达机器学习 12.异常检测相关推荐

  1. 吴恩达机器学习15-异常检测

    吴恩达机器学习15-异常检测 1.问题引入 判断飞机引擎是否出现异常 收集飞机引擎的一些特征变量,比如引擎运转时产生的热量,或者引擎的振动等等 这里的每个点.每个叉,都是无标签数据.这样,异常检测问题 ...

  2. 吴恩达机器学习作业Python实现(八):异常检测和推荐系统

    吴恩达机器学习系列作业目录 1 Anomaly detection 这部分,您将实现一个异常检测算法来检测服务器计算机中的异常行为.他的特征是测量每个服务器的响应速度(mb/s)和延迟(ms).当你的 ...

  3. 8. 吴恩达机器学习课程-作业8-异常检测和推荐系统

    fork了别人的项目,自己重新填写,我的代码如下 https://gitee.com/fakerlove/machine-learning/tree/master/code 代码原链接 文章目录 8. ...

  4. 吴恩达机器学习笔记55-异常检测算法的特征选择(Choosing What Features to Use of Anomaly Detection)

    吴恩达机器学习笔记55-异常检测算法的特征选择(Choosing What Features to Use of Anomaly Detection) 对于异常检测算法,使用特征是至关重要的,下面谈谈 ...

  5. 【CV】吴恩达机器学习课程笔记 | 第1-2章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 1 介绍 1-3 监督学习 1-4 无监督学习 2 单变量 ...

  6. 带你少走弯路:五篇文章学完吴恩达机器学习

    本文是吴恩达老师的机器学习课程[1]的笔记和代码复现部分,这门课是经典,没有之一.但是有个问题,就是内容较多,有些内容确实有点过时. 如何在最短时间学完这门课程?作为课程的主要翻译者和笔记作者,我推荐 ...

  7. 下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)

    今天,我把吴恩达机器学习和深度学习课程笔记都更新了,并提供下载,这两本笔记非常适合机器学习和深度学习入门.(作者:黄海广) 0.导语 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在g ...

  8. 吴恩达机器学习笔记(自用)

    吴恩达机器学习 机器学习的定义 什么是机器学习? 机器学习算法 1.监督学习(Supervised Learning) 2.无监督学习(Unsupervised Learning) 单变量线性回归 模 ...

  9. 吴恩达机器学习 EX7 第二部分 主成分分析(PCA)

    2 主成分分析 主成分分析通过协方差矩阵提取数据的主要成分,如90%的成分,通常用户数据压缩和数据可视化(维度降低方便可视化) 2.1 导入模块和数据 该部分通过将二维数据压缩成一维数据演示主成分分析 ...

最新文章

  1. 灭霸—个人冲刺(4)
  2. 首次使用批处理框架 Spring Batch ,被震撼到了,太强大...
  3. ES既是搜索引擎又是数据库?真的有那么全能吗?
  4. Junit 3 与 Junit 4写法
  5. alsa 测试 linux_python语音智能对话聊天机器人--linuxamp;amp;树莓派双平台兼容
  6. 贴一段数组动态扩容的代码
  7. VC采集网页所有表单域
  8. websocket传输canvas图像数据给C++服务端opencv图像实现web在线实时图像处理
  9. python 保存网页到印象笔记_如何将网页内容保存到印象笔记?
  10. 第二阶段个人工作总结04
  11. mysql uroot p f_Mysql 5.7安装
  12. 蘑菇街撸掉80%研发岗,产品竟然裁到只剩2个人?
  13. Winrunner与QTP
  14. H3C V7版本的系统默认权限
  15. postgres复制数据库
  16. 通俗版 TCP/UDP三次握手 四次握手
  17. Windows系统、下的MySQL、版本升级、实操
  18. 尼恩Java面试宝典
  19. 【FFmpeg命令】jpg与yuv(批量)互转
  20. PMP的含金量价值主要表现在哪些方面?

热门文章

  1. Comparable和Comparator接口是干什么的?列出它们的区别。
  2. 【学习总结】数学-基本计数方法
  3. 新IT运维时代 | Docker运维之最佳实践-上篇
  4. Yii 2 修改 URL 模式为 PATH 模式,并隐藏index.php
  5. OPEN(SAP) UI5 学习入门系列之四:更好的入门系列-官方Walkthrough
  6. SAP 产品条码WMS结合 以及ABAP script的集成 BarCode
  7. 有道词典Mac版崩溃信息
  8. [转]30个自我提升技巧
  9. (25):Silverlight 2 综合实例之Live Search
  10. keepalived + LVS实现高可用负载均衡集群