您的位置:首页 > 其它

无监督学习:异常检测与剔除(局部异常因子法 & SVM异常检测器)

2017-06-14 10:17 225 查看

1.前言

前面介绍的都是有监督学习的回归和分类算法。有监督学习是指对输入和输出都有成对出现的训练样本{(xi,yi)}。在这里,主要介绍在没有输出信息时,只利用输入样本{xi}的信息进行无监督学习的方法。本篇博客重点讨论删除样本{xi}中包含异常值的方法。
异常值检测,是指找出给定的输入样本{xi}中包含的异常值的问题。虽然再有监督回归和有监督分类里面我们也研究了对异常值具有较高鲁棒性的学习法,但是当样本中包含较多异常值的时候,先除去异常值在进行学习的方法,一般会更有效。
如果是给定了带有正常值和异常值标签的数据,异常检测就可以看做是有监督学习的分类问题。但是异常值的种类繁多,一般而言,要想从商量的异常数据中训练出有效的、可以区分正常和异常数据的分类器是很困难的。
下面开始讨论两种无监督的异常检测方法,一种是局部异常因子法,另一种是支持向量机异常检测器。此外也会介绍通过在训练集{xi}之上附加正常样本集{x'i},进行更高精度的异常检测的"弱监督异常检测法"。

2.局部异常因子

局部异常因子,是指对偏离大部分数据的异常数据进行检测的方法。
首先,从x到x'的可达距离定义如下:



RD=Reachability distance.xk表示的是训练样本xi中距离x第k近的样本。从x到x`的可达距离是指,从x到x`的直线距离为||x-x'||.如果x'比xk距离x更近,那么直接使用||x-xk||的值表示。使用这个可达距离,x的局部可达密度可由下式加以定义:



LRD=Local Reachability Density.x的局部可达密度,是从xi到x的可达距离平均值的倒数。当x的训练样本密度值很高的时候,局部可达密度的值也比较大。
应用这个局部可达密度,x的局部异常因子可有下式加以定义:



LOF=Local Outlier Factor.LOF(x)的值越大,x的异常度就越大。LOFk(x)是xi的局部可大密度的平均值与x的局部可达密度的比。当xi的周围的密度比较高而x周围的密度比较低的时候,局部异常因子就会比较大,x就会被看作异常值被对待。
下面是一个局部异常因子的实例。显而易见,偏离大部分正常值的数据点具有较高的异常值:



各个样本周围圆的半径,与样本的局部异常因子的值成正比
圆的半径越大,其样本越倾向于异常值
局部异常因子,是遵循预先指定的规则(偏离大部分正常值的数据被认为异常值),寻找异常值的无监督方法。所以,如果事先指定的规则与我们的期望不相符,就不能找到正确的异常值。虽然通过改变近邻数k的值也可以在某种程度上对异常检测做出调整。但是对于无监督学习而言,由于通常不会给定有关异常值得任何信息,所以近邻数k的取值一直是一个非常难得的问题。另外,为了寻找k近邻样本,需要计算所有n个训练样本间的距离并进行分组,当n非常大的时候,计算负荷也会相应的增加,这也是我们必须考虑的问题。

3.支持向量机异常检测

在无监督学习的异常检测中引入学习要素,即为支持向量机异常检测器。
支持向量机异常检测器会求出几乎包含所有训练样本xi的超球,并肩没有包含在超球内的训练样本看做是异常值。具体而言,就是通过求解下属的最优化问题来求得超球的球心c和半径R:



支持向量机异常检测器



这样就变成了与SVM类似的最优化问题。其拉格朗日函数如下所示:



一样的。a和β就是我们常说的拉格朗日待定因子,该优化问题也就变成了拉格朗日对偶问题:



求偏导,置零可以得到最优条件:



这样,拉格朗日对偶问题就可以通过下式表示:



这又是一个二次规划问题(KKT最优化问题)。
其结论与SVM也是非常相似的:

ai=0时,样本xi位于超球的表面与内侧;
0<ai<C时,样本xi位于超球表面;(支持向量
ai=C时,样本位于超球的表面或外侧。
由于支持向量机异常检测器是通过数据对超球的中心或半径进行学习的,因此可以得到较为理想的异常检测结果。然而,异常检测的结果对于正则化参数C,核函数的种类选择(如果选择核映射)具有较强的依赖性。所以在实际应用中,如何确定这些参数的最优值是一项很重要的工作。

4.基于密度比的异常检测

基于密度比估计的异常检测,是灵活应用正常值得信息对异常值进行监测的方法,因此可以不用事先确定异常值的种类,直结合数据本身进行适宜的异常检测。另外,通过把异常检测问题转化为密度比的计算问题。对基准KL进行交叉验证,就可以通过客观的方法确定基函数中包含的各个参数了。实际中还是很有价值的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐