异常检测(Anomaly Detection)

  • 1. 问题动机(Problem Motivation)
  • 2. 高斯分布(Gaussian Distribution)
  • 3. 算法(Algorithm)
  • 4. 开发和评价一个异常检测系统(Developing and Evaluating an Anomaly Detection System)
  • 5. 异常检测与监督学习对比(Anomaly Detection vs. Supervised Learning)
  • 6. 选择特征(Choosing What Features to Use)

1. 问题动机(Problem Motivation)

什么是异常检测呢?顾名思义,就是在正常的数据中检测出发生异常的数据,我们来看一个例子:
假如你是一个飞机引擎的制造商,当你生产的飞机引擎从生厂线上流出时,你需要进行质量检测,你测量了飞机引擎的一些特征变量,比如引擎运转时产生的热量,或者引擎的振动等。这样一来,我们就有了一个数据集,从x(1)x^{(1)}x(1)到x(m)x^{(m)}x(m),如果你生产了m个引擎的话,我们将得到下面这个数据图表:

这里的每个数据都是无标签数据,假如每个数据都是正常引擎的测试数据,如果有一天,有两个新的飞机引擎的测试数据被绘制到了这个图中,如下图中绿色的标记所示:

我们可以很清晰的知道特征靠近中心的引擎大概率是正常的,而偏离数据中心的引擎大概率是异常的,需要进行进一步的测试。
给定数据集x(1)x^{(1)}x(1),x(2)x^{(2)}x(2),…,x(m)x^{(m)}x(m),我们假设数据集是正常的,我们希望知道新的数据xtestx_{test}xtest​是不是异常的,即这个测试数据不属于改组数据的几率如何。我们所构建的模型应该能根据该测试数据的位置告诉我们其属于一组数据的可能性p(x)。

上图中,在蓝色圈内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该组数据的可能性就越低。这种方法称为密度估计,表达如下:
ifp(x){&lt;εanomaly≥εnormalif p(x)\begin{cases}&lt;\varepsilon\quad anomaly\\ \geq\varepsilon \quad normal \end{cases}ifp(x){<εanomaly≥εnormal​
异常检测的主要应用是识别欺诈,例如在线采集的有关用户的数据,一个特征向量中可能会包含如:用户多久登录一次,访问过的页面,发帖子的数量等。尝试根据这些特征构建一个模型,可以用这个模型来识别哪些不符合该模式的用户。
还有一个应用例子是检测一个数据中心,特征可能包含:内存使用情况,被访问的磁盘数量,CPU的负载,网络的通信量等。根据这些可以构建一个模型,用来判断某些计算机是不是有可能出错了。

2. 高斯分布(Gaussian Distribution)

高斯分布也称为正态分布。通常如果我们认为变量x符合高斯分布x~N(μ,δ2\mu,\delta^2μ,δ2),则其概率密度函数为:p(x,μ,δ2)=12πσexp(−(x−μ)22σ2)p(x,\mu,\delta^2)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-\mu)^2}{2\sigma^2})p(x,μ,δ2)=2π​σ1​exp(−2σ2(x−μ)2​)
我们可以利用已有的数据来预测总体中的μ\muμ和σ2\sigma^2σ2的计算方法如下:μ=1m∑i=0mx(i)\mu=\frac{1}{m}\sum_{i=0}^mx^{(i)}μ=m1​i=0∑m​x(i) σ2=1m∑i=1m(x(i)−μ)2\sigma^2=\frac{1}{m}\sum_{i=1}^m(x^{(i)}-\mu)^2σ2=m1​i=1∑m​(x(i)−μ)2
不同的μ\muμ和σ\sigmaσ下,高斯分布的样例:

3. 算法(Algorithm)

异常检测的算法是怎样的呢?对于给定的数据集x(1)x^{(1)}x(1),x(2)x^{(2)}x(2),…,x(m)x^{(m)}x(m),我们要对每一个特征计算μ\muμ和σ\sigmaσ的估计值:
μ=1m∑i=0mx(i)\mu=\frac{1}{m}\sum_{i=0}^mx^{(i)}μ=m1​i=0∑m​x(i) σ2=1m∑i=1m(x(i)−μ)2\sigma^2=\frac{1}{m}\sum_{i=1}^m(x^{(i)}-\mu)^2σ2=m1​i=1∑m​(x(i)−μ)2
一旦我们获得了平均值和方差的估计值,给定了新的一个训练实例,根据模型计算p(x)p(x)p(x):
p(x)=∏j=1np(xj;μj,σj2)=∏j=1112πσexp(−(x−μ)22σ2)p(x)=\prod_{j=1}^np(x_j;\mu_j,\sigma_j^2)=\prod_{j=1}^1\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-\mu)^2}{2\sigma^2})p(x)=j=1∏n​p(xj​;μj​,σj2​)=j=1∏1​2π​σ1​exp(−2σ2(x−μ)2​)
当p(x)&lt;εp(x)&lt;\varepsilonp(x)<ε时,数据为异常。
下面举个例子,下图所示是一个由两个特征的训练集,以及特征的分布情况:

两个特征x1x_1x1​和x2x_2x2​的平均值和偏差如下所示:

概率分布如下图所示:

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

我们在图中可以选择一个ε\varepsilonε,将p(x)=εp(x)=\varepsilonp(x)=ε作为我们的判定边界,当p(x)&gt;εp(x)&gt;\varepsilonp(x)>ε时预测数据为正常数据,否则为异常数据。

4. 开发和评价一个异常检测系统(Developing and Evaluating an Anomaly Detection System)

异常检测算法是一个非监督学习算法,意味着我们无法根据结果变量y的值来告诉我们数据是否真的是异常的。我们需要另一种方法来帮助检验算法是否有效。当我们开发一个异常检测系统时,我们从带标记的数据着手,从其中选择一部分正常数据用于构建训练集,然后用剩下的正常数据和异常数据混合的数据构成交叉验证集和测试集。
举个栗子:
我们有10000台正常工作的引擎的数据,有20台异常引擎的数据,我们这样分配数据:
6000台正常引擎的数据作为训练集;2000台正常引擎和10台异常引擎的数据作为交叉验证集;2000台正阳引擎和10台异常引擎的数据作为测试集。
具体的评价方法如下:

  • 根据测试集数据,我们估计特征的平均值和方差并构建p(x)函数;
  • 对交叉验证集,我们尝试使用不用的ε\varepsilonε值作为阈值,并预测数据是否异常,根据F1值或者查准率与查全率的比例来选择ε\varepsilonε;
  • 选出ε\varepsilonε后,针对测试集进行预测,计算异常检验系统的F1值,或者查准率和查全率之比。

5. 异常检测与监督学习对比(Anomaly Detection vs. Supervised Learning)

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

异常检测 监督学习
非常少量的正向类(异常数据y=1),大量的负向类(y=0) 同时有大量的正向类和负向类
许多不同种类的异常,非常难。根据非常少的正向类数据来训练算法 有足够多的正向类实例,足够用于训练算法,未来遇到的正向类实例可能与训练集中的非常相似
未来遇到的异常可能与已掌握的异常非常的不同 未来遇到的负向类与已知负向类差别不大
例如:欺诈行为检测,检测数据中心的计算机运行状况 邮件过滤器,天气预报,肿瘤分类等

6. 选择特征(Choosing What Features to Use)

对于异常检测算法,我们使用的特征是至关重要的。异常检测假设特征符合高斯分布,如果数据的分布不是高斯分布,异常算法也能够正常工作,但是最好还是将数据转换成高斯分布。如下图所示,我们可以通过一些转变比如说log(x)将左图中的非高斯分布转换成右图所示的类高斯分布。相似的变换有比如log(x+1)log(x+1)log(x+1),xcx^cxc等等方法。在Python中,通常用np.log1p()函数,log1p就是log(x+1),可以避免出现负数结果。

一个常见的问题就是:一些异常的值可能也会有比较高的p(x)值,因而算法认为是正常的。如下图所示, 假设绿色的点时异常的点但是在x1x_1x1​上的p(x)p(x)p(x)比较高,所以我们可能需要增加一些新的特征。

加入我们增加了一个新的特征x2x_2x2​,绿色的点在新的二维特征上的分布如下所示:

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

入门机器学习(十八)--异常检测(Anomaly Detection)相关推荐

  1. 机器学习系列-- 异常检测(Anomaly Detection)

    目录 1.问题的动机 2.高斯分布 3.异常检测算法 4.开发和评价一个异常检测系统 5.异常检测与监督学习对比 6.特征选择 1.问题的动机 这一部分介绍异常检测(Anomaly detection ...

  2. 异常检测 Anomaly Detection研究进展梳理

    异常检测 Anomaly Detection研究进展梳理 异常检测也叫新颖性检测,通俗来讲是指在给定数据中检测出与预期的数据(正常)不同的.未曾出现的.极少出现的部分数据(异常).比如工业上的产品瑕疵 ...

  3. 异常检测——Anomaly Detection

    目录 1.问题来源 2.应用 3.分类 3.1 method1:With Classifier 3.2 method 2:Gaussian distribution 3.2.1 问题阐述 实现代码 3 ...

  4. 异常检测(Anomaly detection): 异常检测算法(应用高斯分布)

    估计P(x)的分布--密度估计 我们有m个样本,每个样本有n个特征值,每个特征都分别服从不同的高斯分布,上图中的公式是在假设每个特征都独立的情况下,实际无论每个特征是否独立,这个公式的效果都不错.连乘 ...

  5. 基于机器学习的web异常检测——基于HMM的状态序列建模,将原始数据转化为状态机表示,然后求解概率判断异常与否...

    基于机器学习的web异常检测 from: https://jaq.alibaba.com/community/art/show?articleid=746 Web防火墙是信息安全的第一道防线.随着网络 ...

  6. 基于机器学习的web异常检测

    Web防火墙是信息安全的第一道防线.随着网络技术的快速更新,新的黑客技术也层出不穷,为传统规则防火墙带来了挑战.传统web入侵检测技术通过维护规则集对入侵访问进行拦截.一方面,硬规则在灵活的黑客面前, ...

  7. 新手入门机器学习十大算法

    新手入门机器学习十大算法 2018年9月17日 磐石 TensorFlowNews, 机器学习 0 在机器学习的世界中,有一种被称为"无免费午餐"的定理. 它意在说明没有哪种算法能 ...

  8. 机器学习中的异常检测

    机器学习最常用的应用程序之一是异常检测.寻找和识别异常有助于防止欺诈.对手攻击和网络入侵,所有这些都可能危及公司的未来. 在这篇文章中,我们将讨论如何进行异常检测,可以使用哪些机器学习技术,以及使用机 ...

  9. 基于机器学习的web异常检测(转)

    阿里聚安全 Web防火墙是信息安全的第一道防线.随着网络技术的快速更新,新的黑客技术也层出不穷,为传统规则防火墙带来了挑战.传统web入侵检测技术通过维护规则集对入侵访问进行拦截.一方面,硬规则在灵活 ...

最新文章

  1. 从事仪表专业学c语言有用吗,仪器仪表工程就业方向
  2. 0069 如何在Intellij IDEA中查看Spring MVC项目的所有请求与处理方法的映射列表
  3. linux nuttx 环境搭建,ubuntu14.04 nuttx开发环境的搭建
  4. Windows Hook(2)调用DLL函数
  5. 终端定时任务 开始缓冲_如何开始使用终端以提高生产力
  6. 项目管理(2):管理过程二
  7. 开发指南专题十七-JEECG图表配置说明
  8. 【Kafka】Kafka Record for partition topic at offset xx is invalid, cause: Record corrupt
  9. IMDB 2003 07 12 最新排名
  10. 新装hbuilder无法运行到iOS模拟器/无法识别ios模拟器
  11. php判断信用卡,PHP函数验证信用卡卡号是否正确
  12. KGB知识图谱的功能和特色介绍
  13. java 通用事件回调类(观察者队列)
  14. Java并发学习(四)-sun.misc.Unsafe
  15. java数字货币转化_将数字货币金额转换为大写格式
  16. OSWorkflow(转载)
  17. 在服务器上跑 Java Selenium 的教程
  18. 2021最新 阿里云购买学生机服务器搭建部署一条龙服务
  19. Axure可视化动态数据图表6合1元件库
  20. 欢迎试用Android定时达人~

热门文章

  1. IDEA UML图 实战
  2. Hive 创建表的三种方式
  3. 渗透测试入门2之进入内网
  4. kali linux学习入门- Chrome浏览器安装,可以正常打开
  5. ES6-使用 super 关键字访问原型对象
  6. checkbox 在火狐的不支持
  7. [Winodows Phone 7控件详解]Silverlight toolkit for Windows Phone 7.1控件-3
  8. Ext.grid.Panel一定要有renderTo或autoRender属性,不然页面为空
  9. windows添加删除程序打不开解决方案
  10. Android打包编译shrinkResources true报错解决方案