异常值检测

异常对象呗称为离群点(oulier)。异常检测也称偏差检测(deviation detection),因为异常对象的属性值明显偏离期望的或常见的属性值。异常检测也称例外挖掘(exception mining),因为异常在某种意义上是例外的。这里我们主要使用术语异常或离群点。

一、预备知识
1、异常的原因
(1)数据来源于不同的类:某个数据对象可能不同于其他数据对象(即异常),因为它术语一个不同的类型或类。
Hawkins 的离群点定义:离群点是一个观测值,它与其他观测值的差别如此之大,以至于怀疑它是由不同的机制产生的。
(2)自然变异:许多数据集可以用一个统计分布建模,如正态(高斯)分布建模,其中数据对象的概率随对象到分布中心距离的增加而急剧减少。换言之,大部分数据对象靠近中心(平均对象),数据对象显著地不同于这个平均对象的似然性很小。
(3)数据测量和收集误差:数据收集和测量过程中的误差是另一个异常源。剔除这类异常是数据预处理(尤其是数据清理)的关注点。

2、异常检测方法
(1)基于模型的技术:许多异常检测技术首先建立一个数据模型。异常是那些同模型不能完美拟合的对象。
(2)基于邻近度的技术:通常可以在对象之间定义邻近性度量,并且许多移仓检测方法都基于邻近度。异常对象是那些远离大部分其他对象的对象,这一邻域的许多技术都基于距离,称作基于距离的离群点检测技术。
(3)基于密度的技术:对象的密度估计可以相对直接地计算,特别是当对象之间存在邻近度度量时。地密度区域中的对象相对远离近邻,可能被看做异常。

3、类标号的使用
(1)监督的异常检测:监督的异常检测技术要求存在异常类和正常类的训练集(注意,可能存在多个正常类或异常类)
(2)非监督的异常检测:在许多实际情况下,没有提供类标号。在这种情况下,目标是将一个得分(或标号)赋予每个实例,反映该实例是异常的程度。注意许多互相相似的异常的楚翔可能导致他们都被标记为正常,或具有较低的离群点得分。
(3)半监督的异常检测:在半监督的情况下,目标是使用有标记的正常对象的信息,对于给定的对象集合,发现异常标号或得分。注意,在这种情况下,被评分对象集中许多相关的离群点的出现并不影响离群点的评估。

4、问题
(1)用于定义异常的属性个数:一个对象是不是基于单个属性的异常问题也就是对象的那个属性值是否异常的问题。
(2)全局观点或局部观点:一个对象可能相对于所有对象看上去不寻常,但是相对于它的局部近邻并非如此。例如,身高6英尺5英寸的人对于一般人群是不常见的,但是对于职业篮球运动员不算什么。
(3)点的异常程度
(4)一次识别一个异常与多个异常:在某些技术中,一次删除一个异常,即识别并删除最异常的实例,然后重复这一过程。
(5)评估
(6)有效性

二、统计方法
统计学方法是基于模型的方法,即为数据创建一个模型,并且根据对象拟合模型的情况来评估它们。大部分用于离群点检测的统计学方法都基于构建一个概率分布模型,并考虑对象有多大可能符合该模型。

聚类和异常检测的目标是估计分布的参数,以最大化数据的总似然(概率)

基于似然的离群点检测
1:初始化:在时刻t=0,令Mt包含所有对象,而At为空
令LLt(D) = LL(Mt) + LL(At)为多有数据的对数似然
2:for 属于Mt 的每个点 x do
3: 将x从Mt移动到At,产生新的数据集合A(t+1) 和M(t+1)
4: 计算D的新的对数似然LL(t+1)(D) = LL(M(t+1)) + LL(A(t+1))
5: 计算差 v = LLt(D) - LL(t+1)(D)
6: if v >c ,其中c是某个阈值 then
7: 将x分类为异常。即M(t+1) 和 A(t+1) 保持不变,并成为当前的正常和异常集。
8: end if
9:end for

优点与缺点:离群点检测的铜继续啊方法具有坚实的基础,建立在标准的统计学技术(如分布参数的估计)之上。当存在充分的数据和所用的检验类型的知识时,这些检验可能非常有效。对于单个属性,存在各种统计离群点检测。对于多元数据,可用的选择少一些,并且对于高维数据,这些检验可能性很差。


三、基于邻近度的离群点检测
度量一个对象是否原理大部分点的一种最简单的方法是使用到k-最近邻的距离。离群点得分的最低值是0,而最高值是距离函数的可能最大值——一般为无穷大。

到k最近邻的距离:一个对象离群点得分由到它的k-最近邻的距离给定。

优点与缺点:基于邻近度的方法一般需要O(m^2)时间。这对于大型数据集可能代价过高,尽管在低维情况下可以使用专门的算法来提高性能。该方法对参数的选择也是敏感的。此外,它不能处理具有不同密度区域的数据集,因为它使用全局阈值,不能考虑这种密度的变化。

四、基于密度的离群点检测
从基于密度的观点来看,离群点是在低密度区域中的对象。
基于密度的离群点:一个对象的离群点得分是该对象周围密度的逆。
基于密度的离群点检测与基于邻近度的离群点检测密切相关,因为密度通常用邻近度定义。一种常用的定义密度的方法是,定义密度为到k个最近邻的平均距离的倒数。如果该距离小,则密度高,反之亦然。

给定半径内的点计数:一个对象周围的密度等于该对象指定距离d内对象的个数。
需要小心地选择参数d。如果d太小,则许多正常点可能具有低密度,从而具有高离群点得分。如果d太大,则许多离群点可能具有与正常点类似的密度(和离群点得分)。

相对密度离群点得分算法
1:{k是最近邻个数}
2:for all 对象 x do
3: 确定x的k-最近邻N(x,k)
4: 使用x的最近邻(即N(x,k)中的对象),确定x的密度density(x,k)
5:end for
6:for all 对象x do
7: 置outlier score(x,k) = average relative density(x,k)
8:end for


优点与缺点:基于相对密度的离群点检测给出了对象是离群点程度的定量度量,并且及时数据具有不同密度的区域也能够很好地处理。与基于距离的方法一样,这些方法必然具有O(m^2)时间复杂度(其中m是对象个数),虽然对于低维数据,使用专门的数据结构可以将它降低到O(mlogm)。参数选择也是困难的,虽然标准LOF算法通过观察不同的k值,然后取最大离群点得分来处理该问题。然而,仍然需要选择这些值的上下界。

五、基于聚类的技术
一种利用聚类检测离群点的方法是丢弃原理其他簇的小簇。这种方法可以与任何聚类技术一起使用,但是需要最小簇大小和小簇与其他簇之间距离的阈值,通常,该过程可以简化为丢弃小于某个最小尺寸的所有簇。
一种更系统的方法是,首先聚类所有对象,然后评估对象属于簇的程度。对于基于原型的簇类,可以用对象到它的簇中心的距离来度量对象属于簇的程度。更一般地,对于基于目标函数的聚类技术,可以使用该目标函数来评估对象属于任意簇的程度。特殊情况下,如果删除一个对象导致该目标的显著改进,则我们可以将该对象分类为离群点。

优点与缺点:有些聚类技术(如K均值)的时间和空间复杂度是线性或接近线性的,因而基于这种算法的离群点检测技术可能是高度有效的。此外,簇的定义通常是离群点的补,因此可能同时发现簇和离群点。缺点方面,产生的离群点集和它们的得分可能非常依赖所用的簇的个数和数据总离群点的存在性。例如,基于原型的算法产生的簇可能因数据中存在离群点而扭曲。聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大。每种聚类算法只适合特定的数据类型;因此,应当小心地选择聚类算法


异常点检测方法


一、基本概念

    异常对象被称作离群点。异常检测也称偏差检测和例外挖掘。

    常见的异常成因:数据来源于不同的类(异常对象来自于一个与大多数数据对象源(类)不同的源(类)的思想),自然变异,以及数据测量或收集误差。

    异常检测的方法:

(1)基于模型的技术:首先建立一个数据模型,异常是那些同模型不能完美拟合的对象;如果模型是簇的集合,则异常是不显著属于任何簇的对象;在使用回归模型时,异常是相对远离预测值的对象。

(2)基于邻近度的技术:通常可以在对象之间定义邻近性度量,异常对象是那些远离其他对象的对象。

(3)基于密度的技术:仅当一个点的局部密度显著低于它的大部分近邻时才将其分类为离群点。


二、异常点检测的方法

1、统计方法检测离群点

    统计学方法是基于模型的方法,即为数据创建一个模型,并且根据对象拟合模型的情况来评估它们。大部分用于离群点检测的统计学方法都是构建一个概率分布模型,并考虑对象有多大可能符合该模型。离群点的概率定义:离群点是一个对象,关于数据的概率分布模型,它具有低概率。这种情况的前提是必须知道数据集服从什么分布,如果估计错误就造成了重尾分布。异常检测的混合模型方法:对于异常检测,数据用两个分布的混合模型建模,一个分布为普通数据,而另一个为离群点。

    聚类和异常检测目标都是估计分布的参数,以最大化数据的总似然(概率)。聚类时,使用EM算法估计每个概率分布的参数。然而,这里提供的异常检测技术使用一种更简单的方法。初始时将所有对象放入普通对象集,而异常对象集为空。然后,用一个迭代过程将对象从普通集转移到异常集,只要该转移能提高数据的总似然(其实等价于把在正常对象的分布下具有低概率的对象分类为离群点)。(假设异常对象属于均匀分布)。异常对象由这样一些对象组成,这些对象在均匀分布下比在正常分布下具有显著较高的概率。

     优缺点:(1)有坚实的统计学理论基础,当存在充分的数据和所用的检验类型的知识时,这些检验可能非常有效;(2)对于多元数据,可用的选择少一些,并且对于高维数据,这些检测可能性很差。


2、基于邻近度的离群点检测

    一个对象是异常的,如果它远离大部分点。这种方法比统计学方法更一般、更容易使用,因为确定数据集的有意义的邻近性度量比确定它的统计分布更容易。一个对象的离群点得分由到它的k-最近邻的距离给定。离群点得分对k的取值高度敏感。如果k太小(例如1),则少量的邻近离群点可能导致较低的离群点得分;如果K太大,则点数少于k的簇中所有的对象可能都成了离群点。为了使该方案对于k的选取更具有鲁棒性,可以使用k个最近邻的平均距离。

优缺点:(1)简单;(2)缺点:基于邻近度的方法需要O(m2)时间,大数据集不适用;(3)该方法对参数的选择也是敏感的;(4)不能处理具有不同密度区域的数据集,因为它使用全局阈值,不能考虑这种密度的变化。


3、基于密度的离群点检测

    从基于密度的观点来说,离群点是在低密度区域中的对象。一个对象的离群点得分是该对象周围密度的逆。基于密度的离群点检测与基于邻近度的离群点检测密切相关,因为密度通常用邻近度定义。一种常用的定义密度的方法是,定义密度为到k个最近邻的平均距离的倒数。如果该距离小,则密度高,反之亦然。另一种密度定义是使用DBSCAN聚类算法使用的密度定义,即一个对象周围的密度等于该对象指定距离d内对象的个数。需要小心的选择d,如果d太小,则许多正常点可能具有低密度,从而具有高离群点得分。如果d太大,则许多离群点可能具有与正常点类似的密度(和离群点得分)。使用任何密度定义检测离群点具有与基于邻近度的离群点方案类似的特点和局限性。特殊地,当数据包含不同密度的区域时,它们不能正确的识别离群点。

    为了正确的识别这种数据集中的离群点,我们需要与对象邻域相关的密度概念,也就是定义相对密度常见的有两种方法:(1)使用基于SNN密度的聚类算法使用的方法;(2)用点x的密度与它的最近邻y的平均密度之比作为相对密度。

    使用相对密度的离群点检测局部离群点要素LOF技术):首先,对于指定的近邻个数(k),基于对象的最近邻计算对象的密度density(x,k) ,由此计算每个对象的离群点得分;然后,计算点的邻近平均密度,并使用它们计算点的平均相对密度。这个量指示x是否在比它的近邻更稠密或更稀疏的邻域内,并取作x的离群点得分(这个是建立在上面的离群点得分基础上的)。

    优缺点

(1)给出了对象是离群点的定量度量,并且即使数据具有不同的区域也能够很好的处理;

(2)与基于距离的方法一样,这些方法必然具有O(m2)的时间复杂度。对于低维数据使用特定的数据结构可以达到O(mlogm);

(3)参数选择是困难的。虽然LOF算法通过观察不同的k值,然后取得最大离群点得分来处理该问题,但是,仍然需要选择这些值的上下界。


4、基于聚类的技术

    一种利用聚类检测离群点的方法是丢弃远离其他簇的小簇。这个方法可以和其他任何聚类技术一起使用,但是需要最小簇大小和小簇与其他簇之间距离的阈值。这种方案对簇个数的选择高度敏感。使用这个方案很难将离群点得分附加到对象上。一种更系统的方法,首先聚类所有对象,然后评估对象属于簇的程度(离群点得分)(基于原型的聚类可用离中心点的距离来评估,对具有目标函数的聚类技术该得分反映删除对象后目标函数的改进(这个可能是计算密集的))基于聚类的离群点:一个对象是基于聚类的离群点,如果该对象不强属于任何簇。离群点对初始聚类的影响:如果通过聚类检测离群点,则由于离群点影响聚类,存在一个问题:结构是否有效。为了处理该问题,可以使用如下方法:对象聚类,删除离群点,对象再次聚类(这个不能保证产生最优结果)。还有一种更复杂的方法:取一组不能很好的拟合任何簇的特殊对象,这组对象代表潜在的离群点。随着聚类过程的进展,簇在变化。不再强属于任何簇的对象被添加到潜在的离群点集合;而当前在该集合中的对象被测试,如果它现在强属于一个簇,就可以将它从潜在的离群点集合中移除。聚类过程结束时还留在该集合中的点被分类为离群点(这种方法也不能保证产生最优解,甚至不比前面的简单算法好,在使用相对距离计算离群点得分时,这个问题特别严重)。

   对象是否被认为是离群点可能依赖于簇的个数(如k很大时的噪声簇)。该问题也没有简单的答案。一种策略是对于不同的簇个数重复该分析。另一种方法是找出大量小簇,其想法是(1)较小的簇倾向于更加凝聚,(2)如果存在大量小簇时一个对象是离群点,则它多半是一个真正的离群点。不利的一面是一组离群点可能形成小簇而逃避检测。

    优缺点:

(1)基于线性和接近线性复杂度(k均值)的聚类技术来发现离群点可能是高度有效的;

(2)簇的定义通常是离群点的补,因此可能同时发现簇和离群点;

(3)产生的离群点集和它们的得分可能非常依赖所用的簇的个数和数据中离群点的存在性;

(4)聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大。


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