十五、异常检测(Anomaly Detection) 15.1 问题的动机

参考文档: 15 - 1 - Problem Motivation (8 min).mkv

在接下来的一系列视频中,我将向大家介绍异常检测(Anomaly detection)问题。这是机 器学习算法的一个常见应用。这种算法的一个有趣之处在于:它虽然主要用于非监督学习问 题,但从某些角度看,它又类似于一些监督学习问题。

什么是异常检测呢?为了解释这个概念,让我举一个例子吧: 假想你是一个飞机引擎制造商,当你生产的飞机引擎从生产线上流出时,你需要进行

QA (质量控制测试),而作为这个测试的一部分,你测量了飞机引擎的一些特征变量,比如 引擎运转时产生的热量,或者引擎的振动等等。

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

这里的每个点、每个叉,都是你的无标签数据。这样,异常检测问题可以定义如下:我 们假设后来有一天,你有一个新的飞机引擎从生产线上流出,而你的新飞机引擎有特征变量

xtest。所谓的异常检测问题就是:我们希望知道这个新的飞机引擎是否有某种异常,或者说,

我们希望判断这个引擎是否需要进一步测试。因为,如果它看起来像一个正常的引擎,那么 我们可以直接将它运送到客户那里,而不需要进一步的测试。

给定数据集 x(1),x(2),..,x(m),我们假使数据集是正常的,我们希望知道新的数据 xtest 是不 是异常的,即这个测试数据不属于该组数据的几率如何。我们所构建的模型应该能根据该测

试数据的位置告诉我们其属于一组数据的可能性 p(x)。

上图中,在蓝色圈内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该 组数据的可能性就越低。

这种方法称为密度估计,表达如下:

欺诈检测:

X(i) = 用户的第 i 个活动特征

模型 p(x) =我们其属于一组数据的可能性 通过 p(x)<ε 检测非正常用户。

异常检测主要用来识别欺骗。例如在线采集而来的有关用户的数据,一个特征向量中可 能会包含如:用户多久登录一次,访问过的页面,在论坛发布的帖子数量,甚至是打字速度 等。尝试根据这些特征构建一个模型,可以用这个模型来识别那些不符合该模式的用户。

再一个例子是检测一个数据中心,特征可能包含:内存使用情况,被访问的磁盘数量, CPU 的负载,网络的通信量等。根据这些特征可以构建一个模型,用来判断某些计算机是 不是有可能出错了。

anomaly detection(异常检测)笔记
 机器学习 学习     2017-08-15 13:32:45     41     0     0

高斯分布(正态分布)

  1. 求一组数据服从怎样的高斯分布,高斯分布实际上是概率密度的描述


其中u与sigma是求得极大似然估计

利用高斯分布实现异常检测

三步

  1. 选择样本
  2. 计算μ和sigma
  3. 用算出的μ和sigma计算新样本的概率。

为什么概率要用乘积

例如 当两个2d分布的乘积是这样的 

实际使用和评价异常检测算法

实数评价算法极其重要。 
如果使用有标签的数据,例如引擎检测 
我们先取一部分没有问题的数据作为训练集拟合数据 
再取一部分没问题的数据和少量有问题的数据作为cv数据集 
同样取一份测试集 
例子如下图 

因为ylabels是非常偏斜的异常的引擎只是很小的比例,有监督学习总是预测y=0,这样正确率会很高但是这样是不对的。

所以在这里我们也采用precision/recall和f1-score来评估 
其中判断的阈值可以通过交叉验证集尝试多次。 

Anomaly Detection vs. Supervised Learning

异常检测,反例大量,正例很少。 
监督学习,正反例的数量都很大。 
如果有足够多的数据足够拟合监督学习,并且未来要预测的样本与我用来拟合的样本很相似。此时可能会选择监督学习。

理解:当我有足够的数据拟合相对于较少的数据的时候,使用监督学习。 
到底是不是,看经验和脑子。

一些常见应用的选择

选择特征

如果一个分布图稍微扭曲一点 
对X做一些处理可能会让他看起来更像高斯分布 

如果一个异常样本最后的概率很大,这时我们应该观察这个样本,试图添加新的特征可以区分这个样本。

多元高斯分布

不再一个特征一个特征算,直接用x算u是n阶向量,sigma是n*n的矩阵,就可以通过改变矩阵实现对高斯分布的一些变换。 

实际使用异常检测与多元高斯分布

高斯公式 

1.估计参数μ、sigma 

2.给出新的x,计算px 

如果px很小我们会把它当初异常

原始模型属于多元高斯模型的一个特例 
选择 

ps:如果最后sigma是奇异矩阵可能是有多余特征或是m

异常检测(Anomaly Detection)的更多相关文章

  1. [C10] 异常检测(Anomaly Detection)

    异常检测(Anomaly Detection) 问题的动机 (Problem Motivation) 异常检测(Anomaly detection)问题是机器学习算法中的一个常见应用.这种算法的有趣之 ...

  2. 机器学习(十一)-------- 异常检测(Anomaly Detection)

    异常检测(Anomaly Detection) 给定数据集

  3. 吴恩达机器学习笔记(九) —— 异常检测(Anomaly detection)

    主要内容: 一.模型介绍 二.算法过程 三.算法性能评估及ε(threshold)的选择 四.Anomaly detection vs Supervised learning 五.Multivaria ...

  4. 基于高斯分布的异常检测(Anomaly Detection)算法

    记得在做电商运营初期,每每为我们频道的促销活动锁取得的“超高”销售额感动,但后来随着工作的深入,我越来越觉得这里面水很深.商家运营.品类运营不断的通过刷单来获取其所需,或是商品搜索排名,或是某种kpi ...

  5. 异常检测(Anomaly detection): 什么是异常检测及其一些应用

    异常检测的例子: 如飞机引擎的两个特征:产生热量与振动频率,我们有m个样本画在图中如上图的叉叉所示,这时来了一个新的样本(xtest),如果它落在上面,则表示它没有问题,如果它落在下面(如上图所示), ...

  6. Ng第十五课:异常检测(Anomaly Detection)

    15.1  问题的动机 15.2  高斯分布 15.3  算法 15.4  开发和评价一个异常检测系统 15.5  异常检测与监督学习对比 15.6  选择特征 15.7  多元高斯分布(可选) 15 ...

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

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

  8. 异常检测(Anomaly detection): 高斯分布(正态分布)

    高斯分布 高斯分布也称为正态分布,μ为平均值,它描述了正态分布概率曲线的中心点.σ为标准差,σ2为方差,σ描述了曲线的宽度.在中心点附近概率密度大,远离中心点概率密度小. 高斯分布图 概率曲线下方的面 ...

  9. Coursera在线学习---第九节(1).异常数据检测(Anomaly Detection)

    一.如何构建Anomaly Detection模型? 二.如何评估Anomaly Detection系统? 1)将样本分为6:2:2比例 2)利用交叉验证集计算出F1值,可以用F1值选取概率阈值ξ,选 ...

随机推荐

  1. iOS中的MVC

      我们今天谈谈cocoa程序设计中的 模型-视图-控制器(MVC)范型.我们将从两大方面来讨论MVC: 什么是MVC? M.V.C之间的交流方式是什么样子的? 理解了MVC的概念,对cocoa程序开 ...

  2. K-means聚类算法(转)

    K-means聚类算法 想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是 ...

  3. Linux下怎么创建和进入带有空格的文件夹

    有时候需要创建带有空格的文件夹,虽然这不是一个好的习惯,但是偶尔会遇到.用的最多的是很多时候需要进入带有空格的文件夹,如"a b"是一个文件夹名. 创建:mkdir "a ...

  4. soft selective sweeps 下的群体进化

    1.Hard and soft selective sweeps 长期以来,快速适应主要与选择作用于高度多基因的数量性状有关,例如在育种试验期间.这些性状可以通过对大量已经存在的多态性的群体频率的微小 ...

  5. Json Web Token JJWT

    什么是JWT? Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站 ...

  6. java集合: ArrayList源码浅析

    ArrayList 是一个动态数组,线程不安全 ,允许元素为null. ArrayList的数据结构是数组,查询比较方便. ArrayList类的接口 public class ArrayList&l ...

  7. Idea设置类注释模板

    1.选择File–>Settings–>Editor–>File and Code Templates–>Includes–>File Header. 在Descript ...

  8. Python十分适合用来开发网页爬虫

    Python十分适合用来开发网页爬虫,理由如下:1.抓取网页自身的接口比较与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简练:比较其他动态脚本语言,如perl,shel ...

  9. mysql5.7.20更改root密码

    my.cnf 中在[mysqld]下面增加 skip-grant-tables 使用空密码登录数据库执行下面命令 update mysql.user set authentication_string ...

  10. css设置input不显示光标

    把光标颜色设置为透明色和父类一样就看不出来了,就好像取消了 caret-color: transparent; 设置了这个属性后,无论如何点击都好像没有光标似的