Coursera机器学习-第九周-Anomaly Detection

Density Estimation


Problem Motivation

所谓异常检测就是发现与大部分对象不同的对象,其实就是发现离群点,异常检测有时也称偏差检测,异常对象是相对罕见的。
应用:

欺诈检测:主要通过检测异常行为来检测是否为盗刷他人信用卡。
入侵检测:检测入侵计算机系统的行为
医疗领域:检测人的健康是否异常
下面来看一个例子:
x1 : 引擎运转时产生的热量
x2 : 引擎的振动
将它们绘制成图表,假设某天新生产出一个发动机引擎,我们需要对它进行检测是否正常。如果 xtest 对应的特征向量与样本点类似,那么我们可以认为这个引擎是正常的;如果 xtest 对应的点在外面,离我们的样本点很远,则可以认为是一个异常点。

正式地定义异常检测问题:从 x(1) x(m) ,我们通常假定这m个样本都是正常的,或者说都不是异常的。然后我们需要一个算法来告诉我们一个新的样本数据x-test是否是异常。我们要采取的方法是给定训练集给定无标签的训练集。我们将对数据建一个模型 p(x) ,也就是说我们将对x的分布概率建模其中 x 是这些特征变量


p(x)<ε
则认为是异常样本点

p(x)ε
,
则认为是属于正常的


Gaussian Distribution

Gaussian Density:
Coursera机器学习-第九周-Anomaly Detection_第1张图片

图像如下:
Coursera机器学习-第九周-Anomaly Detection_第2张图片

其图像看起来像是一个钟,所以也成为钟型曲线。正态分布的期望 μ 决定了曲线的中心位置,标准差 σ 决定了曲线的宽度。如 μ=1 , σ=1 ,是标准正态分布,其图像如下:
Coursera机器学习-第九周-Anomaly Detection_第3张图片

下面看几个高斯分布的图像,理解一下参数 μ,σ 的影响:

Coursera机器学习-第九周-Anomaly Detection_第4张图片

Parameter estimation:
假如给定数据集{ x(1),x(2),......x(m) },已知数据集中样本服从正态分布,即 x(i)N(μ,σ2) ,该如何求出参数 μ,σ2 ?
这里写图片描述

具体到每个特征向量:
这里写图片描述

Algorithm

Coursera机器学习-第九周-Anomaly Detection_第5张图片

给定的数据集:
Coursera机器学习-第九周-Anomaly Detection_第6张图片

对于每个样本 x 都有 xRn ,即每个样本都是一个n维向量,可以建立一个概率模型来估计每个样本的密度:
这里写图片描述

假设 x1N(μ1,σ21) , x2N(μ2,σ22) …. xmN(μm,σ2m) ,,这里的假设是独立假设,当然,可能会存在一些条件假设问题,但是对算法的影响不是很大。

算法描述

Coursera机器学习-第九周-Anomaly Detection_第7张图片

1. 选择特征向量
2. 拟合 μ,σ2
3. 对新样本 x ,进行密度计算

来看一个完整的例子:

Coursera机器学习-第九周-Anomaly Detection_第8张图片

对于图上的样本点 x1test,x2test ,分别计算出它们的概率密度,
p(x1test)=0.0426
,
p(x2test)=0.0021
,与给定的阈值 ε=0.02 比较,得到 x2test 为异常点。


Building an Anomaly Detection System


Developing and Evaluating an Anomaly Detection System

Coursera机器学习-第九周-Anomaly Detection_第9张图片

1. 选择合适的特征。如果你有一个额外的特征,不确定是否将其考虑进来,那么可以比较加上这个特征与不加这个特征时,运行你的算法所得到的某个数字(这个数字是你定义的指标)
2. 我们先假定已有了一些带标签的数据,所以,我们要考虑的异常检测问题是一个非监督问题,使用的是无标签数据 ,但如果你有一些带标签的数据能够指明哪些是异常样本 ,哪些是非异常样本 ,那么这就是我们要找的能够评价异常检测算法的标准方法。
3. 先考虑训练样本(Training set),将其看成无标签的,这些就是所有正常或者无异常样本的集合。通常来说,我们把这些样本都看成是无异常的,但也有可能一些异常点也被你分到训练集中,这没有关系。接下来,定义交叉验证集(Cross validation Set)和测试集(Test set),通过这两个集合我们将得到异常检测算法。具体来说,对交叉验证集和测试集,我们将假设我们的交叉验证集和测试集中有一些样本,这些样本都是异常的。

算法评价:

Coursera机器学习-第九周-Anomaly Detection_第10张图片

1. 对数据按6:2:2比例进行分配,分别为训练集,交叉验证集,测试集,训练集中全是无标签数据,异常数据在交叉验证集与测试集中按比例进行分配
2. 通过训练集对参数进行拟合
3. 对交叉验证集和测试集中的数据进行测试
4. 由于异常样本的数量非常的少,导致预测十分偏斜,可以通过考察准确率,召回率,F1值来评估模型的效果。
5. 通过交叉验证集来调节参数 ε
评估指标:
对于一个二元分类问题,称少数类为P(positive),即正类,多数类为N(negative),即负类。那么根据实际类别和预测类别存在一个混淆矩阵(confusion matrix),如下:
Coursera机器学习-第九周-Anomaly Detection_第11张图片

根据上述混淆矩阵,可得精度和召回率的定义:
这里写图片描述

这里写图片描述

其中,true positive(TP)称为真正,就是实际类别为正,预测类别也为正。false positive(FP)称为假正,其为实际类别为负,预测类别为正,因为是假正。true negative为真负,false negative为假负。
这里写图片描述

β 通常取值为1,因此就有了常用的 F1 ,其定义如下:


Anomaly Detection vs. Supervised Learning

Coursera机器学习-第九周-Anomaly Detection_第12张图片

在异常检测算法中,我们只有一小撮正样本,因此学习算法不可能从这些正样本中学出太多东西 因此取而代之的是我们使用一组大量的负样本,这样样本就能学到更多或者说能从大量的负样本 中学出 p(x) 模型。 另外 ,我们预留一小部分,正样本来评价我们的算法既用于交叉验证集也用于测试集。
Coursera机器学习-第九周-Anomaly Detection_第13张图片

异常检测算法和监督学习算法的应用场景:
Coursera机器学习-第九周-Anomaly Detection_第14张图片

PS:
如果你拥有相同数量的正负样本或者说既有大量的正样本,也有大量的负样本,那么还是倾向于把这些问题当做监督学习 。


Choosing What Features to Use

当你应用异常检测时对它的效率影响最大的因素之一是,你使用什么特征变量,你选择什么特征变量来输入异常检测算法。
在我们的异常检测算法中我们做的事情之一就是,使用这种正态(高斯)分布来对特征向量建模,就是有 xi 服从正态分布 期望为 μi 方差为 σ2i 那么,常做的一件事就是画出这些数据 。
如果数据是如下左图的话,我们就需要对它进行一些转换,让它看起来更像高斯分布,通过 log(x),x 变为右图。除了取对数变换之外,还有别的一些方法也可以用,假如这是另一个特征 x2 现在我用 log(x2+1) 来取代 或者更一般地 我可以在 x2 后面加上 某个常数C,或者对于另一个特征 x3 也许我可以用它的平方根来取代 x3 的平方根也就是 x3 的二分之一次方。

Coursera机器学习-第九周-Anomaly Detection_第15张图片

虽然通常来说你不这么做,算法也会运行地很好,但如果你使用一些转换方法使你的数据更像高斯分布的话,你的算法会工作得更好 。

有时候,我们需要定义一些新的特征变量来帮助异常检测算法更好地检测异常点。例如:

Coursera机器学习-第九周-Anomaly Detection_第16张图片

对于绿色的异常点,特征 x1 并不能将它区分,所以,设置了另一个特征 x2 ,重新将样本映,得到右图,可以将绿色的异常点区分出来。


Multivariate Gaussian Distribution
##


Multivariate Gaussian Distribution

多元高斯分布 (multivariate Gaussian distribution)它有一些优势,也有一些劣势,它能捕捉到一些之前的算法检测不出来的异常 。
Coursera机器学习-第九周-Anomaly Detection_第17张图片

从上图能够看出,这个绿色的异常样本在单独建模的模型中并不能检测出来。因此这就需要通过多元高斯分布构建模型来检测。

多元高斯分布的概率密度函数为:

这里写图片描述

其中 为n*n维协方差矩阵,| |为矩阵 的行列式。
下面我们来看一些例子,来说明向量和矩阵对概率密度函数的影响:

先来看 的影响:

Coursera机器学习-第九周-Anomaly Detection_第18张图片

Coursera机器学习-第九周-Anomaly Detection_第19张图片

Coursera机器学习-第九周-Anomaly Detection_第20张图片

从上面三个图中可以看出当矩阵 的副对角线都为0时,主对角线上的元素大小控制着概率密度函数俯瞰图的形状大小,至于具体到数字大小对应的形状,大家自己观察便知。
再来看看主对角线不变,变化副对角线是如何影响的例子:
Coursera机器学习-第九周-Anomaly Detection_第21张图片

Coursera机器学习-第九周-Anomaly Detection_第22张图片

能够看出,副对角线控制的是倾斜程度。

下面来看 μ 对概率密度函数的影响:

Coursera机器学习-第九周-Anomaly Detection_第23张图片

从上图能够 μ 看出控制着图形的位置变化。


Anomaly Detection using the Multivariate Gaussian Distribution

算法流程:

Coursera机器学习-第九周-Anomaly Detection_第24张图片

多元高斯分布于一元高斯分布的关系:

Coursera机器学习-第九周-Anomaly Detection_第25张图片

多元高斯模型和一元高斯模型的关系:当协方差矩阵 是对角阵且对角线元为一元高斯分布的估计参数 σ2j 时,两个模型是等价的。区别在于前者能够自动获取特征之间的依赖关系而后者不能(后者假设特征之间是独立的)。当特征数n很大时,前者计算代价高昂而后者计算速度快。前者适用于m>n(一般要求m>10n)的情况,而后者当m很小时依然适用。

Recommender System

详情见: Machine Learning-Recommender Systems(推荐系统)

参考:
异常检测(anomaly detection)
不平衡学习算法的评估指标
异常检测
机器学习公开课笔记(9):异常检测和推荐系统

你可能感兴趣的:(机器学习)