吴恩达机器学习笔记8-异常检测

基本含义

一组数据,判断其中某一个是否异常

D a t a s e t : { x ( 1 ) , x ( 2 ) , . . . , x ( m ) }

Is x t e s t anomalous?

我们对其分布进行建模,模型为 p ( x )

如果 p ( x t e s t < ϵ ) ,那么我们认为这个数据异常
如果 p ( x t e s t ϵ ) ,那么我们认为这个数据正常

异常检测的应用

最常见的应用是欺诈检测,用特征变量表示用户的各个行为,如果ta某一时刻的行为满足 p ( x t e s t < ϵ ) ,那么我们认为用户行为异常,可能被盗号

另一个例子是工业生产领域,例如飞机的引擎是否正常

第三个例子,数据中心,对每台计算机的特征进行量化,建模,如果有一台计算机的 p ( x t e s t 非常小,就说明可能发生异常,可以要求管理员检查

高斯分布

x~ N ( μ , σ 2 )

p ( x ; μ , σ 2 ) = 1 2 π σ e ( x μ ) 2 2 σ 2

σ -标准差, σ 2 -方差, μ -均值
μ 越大,数据越分散,图像越宽,高度越矮
图像与x轴围成的面积始终是1
+ p ( x ) d x = 1

参数估计问题
给出一组数据,求出高斯分布的参数 μ , σ

μ = 1 m i = 1 m x ( i )

σ 2 = 1 m i = 1 m ( x ( i ) μ ) 2

异常检测算法

D a t a s e t : { x ( 1 ) , x ( 2 ) , . . . , x ( m ) }

其中 x R n
我们假设 x i ~ N ( μ i , σ i 2 ) ,每个特征都服从参数不同的正态分布,同时也假设了每个特征变量互相独立
于是
p ( x ) = p ( x 1 ) p ( x 2 ) . . . p ( x n )

算法步骤
1. 选择一些可能出现与异常有关的特征
2. 计算参数 μ 1 , . . . , μ n , σ 1 2 , . . . σ n 2
3. 计算新实例x的概率
p ( x ) = i = 1 n p ( x i )

异常检测系统的评价

如果有一些带标签的数据,指出哪些样本是正常的,哪些样本是异常的。那么我们在训练集中放入正常的无标签的数据,在交叉验证集合测试集中放入带标签的异常数据,用训练集的数据拟合p(x)。接下来把正常的一些数据也放入交叉验证集和测试集中,然后使用p(x)进行判断。

训练集:验证集:测试集=6:2:2

然后在验证集和测试集中计算p(x),计算准确率,召回率,F1

异常检测 vs 监督学习

异常检测适用的场景:正例非常少,大部分全是反例(错误的数据很少—)。有可能有不同类型的异常,而且未来出现的异常可能从没见过。
监督学习适用的场景:正例和反例都很多。未来出现的数据基本上和以前出现的很相似

如何选择异常检测算法的特征变量

如果数据分布近似高斯分布的话就选这个变量,否则就要进行处理,比如取对数。选择数据的时候不要选特别大或者特别小的。

多元高斯分布

存在这样一种情况:每个特征变量都在高斯分布正常范围内,但是合起来看就不是了,为了在此时也能正确判断异常,需要用到多元高斯分布
在多元高斯分布中,

μ R n , σ R n n

此时 σ 叫做协方差矩阵
多元高斯分布的概率表达式
p ( x ; μ , σ ) = 1 ( ( 2 π ) n / 2 | σ | 1 2 e 1 2 ( x μ ) T σ 1 ( x μ )

如果变量互相独立,那么协方差矩阵非对角元都是0

使用多元高斯分布估计参数

给出数据集 D a t a s e t : { x ( 1 ) , x ( 2 ) , . . . , x ( m ) }
其中 x R n
μ = 1 m i = 1 m x ( i )
σ = 1 m i = 1 m ( x i μ ) ( x i μ ) T

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

  1. 使用上述公式计算参数 μ σ
  2. 对于一个新的样本实例,计算 p ( x n e w )
  3. 如果 p ( x n e w ) < ϵ ,则样本异常

什么时候用多元高斯模型

如果愿意为关联的变量创建新的特征变量,那么用原始模型更好,另外,原始模型的计算量更小。但是,多元高斯模型可以自动分析关联性。如果变量不是那么多,可以用多元高斯模型
多元高斯模型要确保样本数大于特征数 ( m > n )
如果发现协方差矩阵不可逆,有可能是m

猜你喜欢

转载自blog.csdn.net/zic234gh9/article/details/81590395