异常检测
异常检测问题引入
异常检测问题虽然主要用于非监督学习问题,但从某些角度看,又类似于一些监督学习问题。
以飞机引擎的QA测试为例,我们需要采集一些飞机引擎的特征,如 x1 和 x2 ,如果生产了m个引擎的话就有了m个数据集,我们需要对一个新生产的引擎 xtest 判断是否有异常?
异常问题定义
假设我们有m个正常的样本数据
x(1),x(2),...x(m)
我们需要一个算法来告诉我们一个新的数据
xtest
是否异常。
具体算法:给定的无标签的训练集,对数据集建立一个概率分布模型
p(x)
,对于新的数据
xtest
,如果概率低于阈值
ϵ
;即
p(xtest)<ϵ
,即将其标为异常。反之,如果
p(xtest)>=ϵ
,我们认为是正常的。
异常检测应用
欺诈检测、计算机异常检测、、、
高斯分布
若x是一个随机变量,且x的概率服从高斯分布:其中均值为 μ ,方差为 θ2
如图,高斯曲线主要有俩个参数:
μ
,
θ
,这俩个参数与函数图像之间的关系:
μ 是图像的中心位置,因为曲线围成的面积是不变的,都是1,。所以 θ 越大,离散化程度越大,图像越宽,反之, θ 越小,图像就越高瘦。
μ
和
θ
的具体实现公式如下:
在统计学中,theta项中会采用m-1项,这叫无偏估计。机器学习中,习惯采用m,当数据集很大时,这区别很小,可以忽略不计。
异常检测算法
假设共有m个样本,每个样本有n维特征,对每个样本有高斯分布,总的模型由每个样本的高斯模型连乘得出;这里给出异常检测算法的一般步骤:
1、从样本中找出体现异常行为的特征
2、分别计算每个特征参数 μ 和 θ 。
3、给定新样本,计算出对应的 p(x) ,判断 p(x) <ϵ ?
异常检测例子
这里 ϵ 给定为0.02,后面会有说明如何选定 ϵ 。分别计算俩个新样本的概率。判断是否为异常。