Andrew Ng 机器学习笔记 14 :异常检测

原创 2018年04月15日 21:29:35

异常检测问题

异常检测问题的定义如下:

假设我们有m个正常的样本数据x(1)x(2)x(m),我们需要一个算法来告诉我们一个新的样本数据xtest是否异常。

我们要采取的方法是:给定无标签的训练集,对数据集x建立一个概率分布模型p(x)。当我们建立了x的概率模型之后,我们就会说,对于新的样本xtest,如果概率p低于阈值ε

p(xtest)<ε

那么就将其标记为异常,反之,我们就认为它是正常的。

高斯分布

假设x是一个实数随机变量(即:x∈R),如果x的概率分布服从高斯分布:其中均值为μ,方差为σ2,那么将它记作:

xN(μ,σ2)

这里的∼符号读作:”服从…分布”。大写字母N表示Normal (正态),有两个参数,其中μ表示均值,σ2表示方差。

如果我们将高斯分布的概率密度函数绘制出来,它看起来将是这样一个钟形的曲线:

这个钟形曲线有两个参数,分别是μ和σ。其中μ控制这个钟形曲线的中心位置,σ控制这个钟形曲线的宽度。

从图中可以看出来,x取中心区域的值的概率相当大,因为高斯分布的概率密度在这里很大;而x取远处和更远处数值的概率将逐渐降低,直至消失。

高斯分布中,μ和σ的关系

这里写图片描述

  • 值得提醒的是,在高斯分布的图像中,不管曲线的形状如何,曲线围城的总面积都是1。
  • 所以如果σ很大,就意味着数据的离散化程度越大,中间区域就会变宽,但由于总概率为1,所以高度会降低。
  • 反之如果σ很小,就意味着数据的离散化程度越小,中间区域就会变窄,但由于总概率为1,所以高度会升高。

异常检测的具体算法

假如说我们有一个无标签的训练集,其中共有m个训练样本,并且这里的训练集里的每一个样本都是n维的特征,因此你的训练集应该是m个n维的特征构成的样本矩阵:

x(1),,x(m)xRn

对于我们的异常检测算法,我们要从数据中建立一个p(x)概率模型。由于x是一个向量,因此:

p(x)=p(x1)p(x2)p(x3)p(xn)

假定特征x(1)x(m) 都服从高斯正态分布:

p(x)=p(x1;μ1,σ12)p(x2;μ2,σ22)p(x3;μ3,σ32)p(xn;μn,σn2)=Πj=1np(xj;μj,σj2)

其中Π(读作pai,是π的大写形式)类似符号,只不过这里将连加换成了连乘。顺便要说的是,估计p(x)的分布问题,通常被称为密度估计问题。

异常检测算法步骤总结

  1. 从样本中选择一些能体现出异常行为的特征xi
  2. 分别计算出每个特征的参数μ1,,μn,σ12,,σn2

    (3)μ=[μ1μ2μn]=1mi=1mx(i)

    (4)σ2=[σ12σ22σn2]=1mi=1m(x(i)μ)2

  3. 给定一个新的样本x,计算出它对应的p(x):

    p(x)=Πj=1np(xj;μj,σj2)=Πj=1n12πσjexp((xjμj)22σj2)

    通过判断p(x)<ε,来判断是否有异常发生。

异常检测 VS 监督学习

评价一个异常检测算法时,使用了一些带标签的数据,以及一些我们知道是异常或者正常的样本(用y=1或y=0来表示)。

这就引出了这样一个问题:既然我们有了带标签的数据,那么为什么我们不直接用监督学习的方法(比如逻辑回归或者神经网络)呢?

异常检测 监督学习
负样本量很少(通常是在0到20个之间),正样本很多的时候 正负样本都很多的时候
有多种不同的异常类型时(因为对任何算法来说,从大量正样本中去学习到异常具体是什么,都是困难的);未知的异常与我们已知的异常完全不一样时。 有足够多的正样本来让你的算法学习到对应的特征,并且在未知的正样本中,也和已知的样本是类似的。

其实关键区别就是在异常检测算法中我们只有一小撮正样本,因此监督学习算法不能从这些样本中学到太多东西。

对不服从高斯分布的数据进行转换

在我们的异常检测算法中,我们做的事情之一就是使用正态(高斯)分布来对特征向量建模。

通常情况下,我们都需要用直方图来可视化这些数据,为了在使用算法之前,确保我们的数据看起来是服从高斯分布的(当然即使你的数据并不是高斯分布,它也基本上可以良好地运行,但最好转换成高斯分布的样式之后在带入计算)。

如果你的样本的某个特征展示效果完全不像一个正态分布的形状:

那么我们就需要对数据进行一些转换,来确保这些数据能看起来更像高斯分布。一般情况下,我们都会对原始数据尝试求对数或者开根号操作进行转换:

通过多元高斯分布改良异常检测算法

在多元高斯分布中,对于n维特征x∈Rn,不要把模型p(x1)p(x2),…,p(xn)分开,而要建立p(x)整体的模型。

多元高斯分布的参数包括向量µ和一个n×n的协方差矩阵Σ:

p(x;µ,Σ)=1(2π)n2|Σ|12exp(12(xµ)TΣ1(xµ))

对于多元高斯分布来说,一个很棒的事情就是我们可以用它来对数据的相关性建模。也就是说,我们可以用它来给x1x2高度相关的情况建立模型。

LINUX is obsolete Linux的技术过时了 Date: 29 Jan 92 12:12:50 GMT

*** EOOH *** 来自Newsgroup的论争From: ast@cs.vu.nl (Andy Tanenbaum)Newsgroups: comp.os.minixSubject: LINU...
  • Virtual
  • Virtual
  • 2001-01-05 09:03:00
  • 1155

Coursera上的Andrew Ng《机器学习》学习笔记Week1

Coursera上的Andrew Ng《机器学习》学习笔记Week1 作者:雨水/家辉,日期:2017-01-17,CSDN博客:http://blog.csdn.net/gobitan 注:本课...
  • gobitan
  • gobitan
  • 2017-01-17 17:27:53
  • 995

Andrew NG 机器学习 笔记-week5-神经网络的学习(Neural Networks:Learning)

一、代价函数(Cost Function)首先引入一些便于稍后讨论的新标记方法:假设神经网络的训练样本有 m 个,每个包含一组输入 x 和一组输出信号 y L =神经网络总层数 sls_l = ll...
  • zxm1306192988
  • zxm1306192988
  • 2017-09-30 09:18:15
  • 431

Andrew Ng机器学习笔记(一)

第一篇博客,很有纪念意义,献给让人激动人心的ML,也感谢吴恩达老师的精彩讲解。1.机器学习的定义 假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中任务上获得了性能改善,...
  • YUNFEIYAHG
  • YUNFEIYAHG
  • 2017-09-02 12:31:12
  • 702

监督学习之生成学习算法——Andrew Ng机器学习笔记(四)

内容提要这篇博客的主要讲生成学习算法,主要包括两个算法: - 高斯判别分析(Gaussian Discriminant Analysis) - 朴素贝叶斯(Naive Bayes)now let’...
  • A_cainiao_A
  • A_cainiao_A
  • 2015-12-25 22:35:21
  • 2944

Andrew Ng 机器学习笔记(二)

监督学习的应用:梯度下降 梯度下降算法思想: 先选取一个初始点,他可能是0向量,也可能是个随机点。在这里选择图中这个+点吧。 然后请想象一下:如果把这个三位图当成一个小山公园,而你整站在这个+...
  • chixujohnny
  • chixujohnny
  • 2016-03-09 16:27:14
  • 744

Andrew Ng机器学习入门学习笔记(四)之神经网络(一)

一.神经网络的优势对于复杂的非线性分类问题,当特征变量个数nn很大时,用逻辑回归时S型函数g(θTx)中的θTxS型函数g(\theta^Tx)中的\theta^Tx如果用二次多项式表示,则二次项数目...
  • SCUT_Arucee
  • SCUT_Arucee
  • 2015-12-02 09:58:04
  • 2145

Andrew Ng机器学习笔记1

吴恩达机器学习课程的学习笔记~
  • panglinzhuo
  • panglinzhuo
  • 2016-04-26 16:15:47
  • 1541

Andrew Ng机器学习课程笔记--week3

Logistic Regression一、内容概要 Classification and Representation Classification Hypothesis Representatio...
  • marsggbo
  • marsggbo
  • 2017-08-03 11:55:45
  • 540

Andrew NG机器学习课程笔记系列之——机器学习之逻辑回归(Logistic Regression)

1. Classification 这篇文章我们来讨论分类问题(classification problems),也就是说你想预测的变量 y 是一个离散的值。我们会使用逻辑回归算法来解决分类问题。 之...
  • mydear_11000
  • mydear_11000
  • 2016-03-12 13:30:11
  • 1763
收藏助手
不良信息举报
您举报文章:Andrew Ng 机器学习笔记 14 :异常检测
举报原因:
原因补充:

(最多只允许输入30个字)