第5章 挖掘建模之离群点检测
离群点检测
- 离群点检测是数据挖掘中重要的一部分,它的任务是发现与大部分其他对象显著不同的对象。大部分数据挖掘方法都将这种差异信息视为噪声而丢弃,然而在一些应用中,罕见的数据可能蕴含着更大的研究价值。
- 因为离群点的属性值明显偏离期望的或常见的属性值,所以离群点检测也称偏差检测。

离群点检测已经被广泛应用于电信和信用卡的诈骗检测、贷款审批、电子商务中、网络入侵、天气预报等领域,如可以利用离群点检测分析运动员的统计数据,以发现异常的运动员。
- 离群点的主要成因有:数据来源于不同的类、自然变异、数据测量和收集误差。
- 离群点的类型:

- 常用离群点检测方法如下:

基于统计模型的离群点检测方法需要满足统计学原理,如果分布已知,则检验可能非常有效。基于邻*度的离群点检测方法比统计学方法更一般、更容易使用,因为确定数据集有意义的邻*度量比确定它的统计分布更容易。基于密度的离群点检测与基于邻*度的离群点检测密切相关,因为密度常用邻*度定义:一种是定义密度为到K个最邻*的*均距离的倒数,如果该距离小,则密度高;另一种是使用DBSCAN聚类算法,一个对象周围的密度等于该对象指定距离d内对象的个数。
离群点检测——基于模型的离群点检测方法
1、一元正态分布中的离群点检测
正态分布(0,1)
2、混合模型的离群点检测
混合模型数据产生过程为:给定几个类型相同但参数不同的分布,随机地选取一个分布并由它产生一个对象。重复该过程n次,其中n是对象的个数。
这种类型的分布可以对椭圆簇建模。
对于混合模型,每个分布描述一个不同的组,即一个不同的簇。通过使用统计方法,可以由数据估计这些分布的参数,从而描述这些分布(簇)。也可以识别哪个对象属于哪个簇。然而,混合模型只是给出具体对象属于特定簇的概率。
聚类时,混合模型方法假定数据来自混合概率分布,并且每个簇可以用这些分布之一识别。同样,对于离群点检测,数据用两个分布的混合模型建模,一个分布为正常数据,而另一个为离群点。
Summary:
- 聚类和离群点检测的目标都是估计分布的参数,以最大化数据的总似然。
- 一种离群点检测常用的简单的方法:先将所有数据对象放入正常数据集,这时离群点集为空集;再用一个迭代过程将数据对象从正常数据集转移到离群点集,只要该转移能提高数据的总似然。
- 在某些情况下是很难建立模型的。如:因为数据的统计分布未知或没有训练数据可用。在这种情况下,可以考虑另外其他不需要建立模型的检测方法。
离群点检测——基于聚类的离群点检测方法
聚类分析用于发现局部强相关的对象组,而异常检测用来发现不与其他对象强相关的对象。因此聚类分析非常自然地可以用于离群点检测。
本节主要介绍两种基于聚类的离群点检测方法。
(1)丢弃远离其他簇的小簇
一种利用聚类检测离群点的方法是丢弃远离其他簇的小簇。通常,该过程可以简化为丢弃小于某个最小阈值的所有簇。
这个方法可以和其他任何聚类技术一起使用,但是需要最小簇大小和小簇与其他簇之间距离的阈值。而且这种方案对簇个数的选择高度敏感,使用这个方案很难将离群点得分附加到对象上。
如下图中,聚类簇数K=2,可以直观地看出其中一个包含5个对象的小簇远离大部分对象,可以视为离群点。

(2)基于原型的聚类
另一种更系统的方法,首先聚类所有对象,然后评估对象属于簇的程度(离群点得分)。在这种方法中,可以用对象到它的簇中心的距离来度量属于簇的程度。特别地,如果删除一个对象导致该目标的显著改进,则可将该对象视为离群点。例如,在K均值算法中,删除远离其相关簇中心的对象能够显著地改进该簇的误差*方和(SSE)。
对于基于原型的聚类,评估对象属于簇的程度(离群点得分)主要有两种方法:一是度量对象到簇原型的距离,并用它作为该对象的离群点得分;二是考虑到簇具有不同的密度,可以度量簇到原型的相对距离,相对距离是点到质心的距离与簇中所有点到质心的距离的中位数之比。
如下图,如果选择聚类簇数K=3,则对象A、B、C应分别属于距离它们最*的簇,但相对于簇内的其他对象,这三个点又分别远离各自的簇,所以有理由怀疑对象A、B、C是离群点。

诊断步骤如下:
1)进行聚类。 选择聚类算法(如K-Means算法),将样本集聚为K簇,并找到各簇的质心。
2)计算各对象到它的最*质心的距离。
3)计算各对象到它的最*质心的相对距离。
4)与给定的阈值作比较。 如果某对象距离大于该阈值,就认为该对象是离群点。
基于聚类的离群点检测的改进:
离群点对初始聚类的影响:通过聚类检测离群点时,离群点会影响聚类结果。
为了处理该问题,可以使用如下方法:对象聚类,删除离群点,对象再次聚类(这个不能保证产生最优结果)。
还有一种更复杂的方法:取一组不能很好的拟合任何簇的特殊对象,这组对象代表潜在的离群点。
- 随着聚类过程的进展,簇在变化。不再强属于任何簇的对象被添加到潜在的离群点集合;而当前在该集合中的对象被测试,如果它现在强属于一个簇,就可以将它从潜在的离群点集合中移除。
- 聚类过程结束时还留在该集合中的点被分类为离群点(这种方法也不能保证产生最优解,甚至不比前面的简单算法好,在使用相对距离计算离群点得分时,这个问题特别严重)。
对象是否被认为是离群点可能依赖于簇的个数(如k很大时的噪声簇)。该问题也没有简单的答案。一种策略是对于不同的簇个数重复该分析。另一种方法是找出大量小簇,其想法是:
1)较小的簇倾向于更加凝聚;
2)如果存在大量小簇时一个对象是离群点,则它多半是一个真正的离群点。 不利的一面是一组离群点可能形成小簇从而逃避检测。
P.S. 没有一种方法是万能的,所以要广泛学习各种方法,同时,库的类型也有很多;学习的过程中要判断各个算法的适用场景,并且会分析产生的原因。

浙公网安备 33010602011771号