孤立点分析

“孤立点是什么?”

经常存在一些数据对象,它们不符合数据的一般模型。这样的数据对象被称为孤立点( outlier ),它们与数据的其他部分不同或不一致。

孤立点可能是度量或执行错误所导致的。例如,一个人的年龄为-999 可能是程序对未记录的年龄的缺省设置所产生的。另外,孤立点也可能是固有的数据变异性的结果。例如,一个公司的首席执行官的工资自然远远高于公司其他雇员的工资,成为一个孤立点。

许多数据挖掘算法试图使孤立点的影响最小化,或者排除它们。但是由于一个人的噪声可能是另一个人的信号,这可能导致重要的隐藏信息的丢失。换句话说,孤立点本身可能是非常重要的,例如在欺诈探测中,孤立点可能预示着欺诈行为。这样,孤立点探测和分析是一个有趣的数据挖掘任务,被称为孤立点挖掘。

孤立点挖掘有着广泛的应用。像上面所提到的,它能用于欺诈监测,例如探测不寻常的信用卡使用或电信服务。此外,它在市场分析中可用于确定极低或极高收人的客户的消费行为,或者在医疗分析中用于发现对多种治疗方式的不寻常的反应。

孤立点挖掘可以描述如下:给定一个 n 个数据点或对象的集合,及预期的孤立点的数目 k ,发现与剩余的数据相比是显著相异的、异常的或不一致的头 k 个对象。孤立点挖掘问题可以被看作两个子问题: (i) 在给定的数据集合中定义什么样的数据可以被认为是不一致的; (ii) 找到一个有效的方法来挖掘这样的孤立点。

孤立点的定义是非平凡的。如果采用一个回归模型,偏差的分析可以给出对数据“极端性”的很好的估计。但是,当在时间序列数据中寻找孤立点时,它们可能隐藏在带趋势的、季节性的或者其他周期性变化中,这项任务非常棘手。当分析多维数据时,不是任何特别的一个而是维值的组合可能是极端性的。对于非数值型的数据(如分类数据),孤立点的定义要求特殊的考虑。

“采用数据可视化方法来进行孤立点探测如何?”

你可能想知道。既然人眼在发现数据的不一致上是非常迅速和有效的,可能看起来这是一个明显的选择。但是,这不适用于包含周期性曲线的数据,这时异常的值可能正好是现实中有效的值。数据可视化方法对于探测有很多分类属性的数据,或高维数据中的孤立点效率很低,这是因为人眼只擅长于处理两到三维的数值型数据。

在本节中,我们探讨基于计算机的孤立点探测方法。这些方法可以分为三类:统计学方法,基于距离的方法和基于偏移的方法,每类方法在此都要进行讨论。注意,当聚类算法将孤立点作为噪声剔除时,它们可以被修改,包括孤立点探测作为执行的副产品。一般说来,用户必须检查以确定由这些方法发现的每个孤立点均是事实上的孤立点。

基于统计的孤立点检测

统计的方法对给定的数据集合假设了一个分布或概率模型(例如一个正态分布),然后根据模型采用不一致性检验( discordancy test) 来确定孤立点。该检验要求知道数据集参数(例如假设的数据分布)、分布参数(例如平均值和方差)和预期的孤立点的数目。

“不一致性检验如何进行?”

一个统计学的不一致性检验检查两个假设:一个工作假设( working hypothesis )和一个替代假设( alternative hypothesis )。一个工作假设 H 是一个命题: n 个对象的整个数据集合来自一个初始的分布模型 F ,即

H: Oi 属于 F  ,i= 1,2,...,n

如果没有统计上的显著证据支持拒绝这个假设,它就被保留。不一致性检验验证一个对象 O i 关于分布 F 是否显著地大(或者小)。依据可用的关于数据的知识,不同的统计量被提出来用作不一致性检验。假设某个统计量 T 被选择用于不一致性检验,对象 O i 的该统计量的值为 v i ,则构建分布 T ,估算显著性概率 SP(V i ) = Prob(T>V i ) 。如果某个 SP(V i ) 是足够的小,那么 O i 是不一致的,工作假设被拒绝。替代假设 H 被采用,它声明 O i 来自于另一个分布模型 G 。既然 O i 可能在一个模型下是孤立点,在另一个模型下是非常有效的值,那么结果非常依赖于模型 F 的选择。

替代分布在决定检验的能力(即当 0 ‘真的是孤立点时工作假设被拒绝的概率)上是非常重要的。有许多不同的替代分布:

•  固有的替代分布( inherent alternative distribution ):在这种情况下,所有对象来自分布 F 的工作假设被拒绝,而所有对象来自另一个分布 G 的替代假设被接受:

非H: Oi 属于G ,i=1,2,...,n

F 和 G 可能是不同的分布,或者是参数不同的同一分布。对 G 分布的形式存在约束以便它有产生孤立点的可能性。例如,它可能有不同的平均值或者离差,或者更长的尾部。

•  混合替代分布( mixture alternative distribution ):混合替代分布认为不一致的值不是 F 分布中的孤立点,而是来自其他分布的污染物。在这种情况下,替代假设是:

非H:Oi 属于 (1-r)F+rG ,i=1,2,...,n

•  滑动替代分布 (slippage alternative distribution) :这个替代分布声明所有的对象(除了少量外)根据给定的参数独立地来自初始的模型 F ,而剩余的对象是来自修改过的 F 的独立的观察,这个 F 的参数已经变化了。

检测孤立点有两类基本的过程:

•  批( block )过程:或者所有被怀疑的对象都被作为孤立点对待,或者都被作为一致数据而接受。

•  连续的过程:该过程的一个例子是内部出局( inside-out )过程。它的主要思想是:首先检验最不可能是孤立点的对象。如果它是孤立点,那么所有更极端的值都被认为是孤立点;否则,检验下一个极端的对象,依次类推。这个过程往往比批过程更为有效。

“在孤立点检测上统计学方法的有效性如何?”

一个主要的缺点是绝大多数检验是针对单个属性的,而许多数据挖掘问题要求在多维空间中发现孤立点。而且,统计学方法要求关于数据集合参数的知识,例如数据分布。但是在许多情况下,数据分布可能是未知的。当没有特定的检验时,统计学方法不能确保所有的孤立点被发现,或者观察到的分布不能恰当地被任何标准的分布来模拟。

 

基于距离的孤立点检测

为了解决统计学方法带来的一些限制,引入了基于距离的孤立点的概念。

“什么是基于距离的孤立点?”

如果数据集合 S 中对象至少有尸部分与对象 o 的距离大于 d ,则对象 o 是一个带参数 p d 的基于距离的( DB )孤立点,即 DB( p,d ) 。换句话说,不依赖于统计检验,我们可以将基于距离的孤立点看作是那些没有“足够多”邻居的对象,这里的邻居是基于距给定对象的距离来定义的。与基于统计的方法相比,基于距离的孤立点检测拓广了多个标准分布的不一致性检验的思想。基于距离的孤立点检测避免了过多的计算,而大量的计算正是使观察到的分布适合某个标准分布,及选择不一致性检验所需要的。

对许多不一致性检验来说,如果一个对象 o 根据给定的检验是一个孤立点,那么对恰当定义 p d o 也是一个 DB( p,d ) 孤立点。例如,如果离平均值偏差 3 或更大的对象被认为是孤立点,假设一个正态分布,那么这个定义能够被一个 DB(0.9988,0.13σ) 孤立点所概括。

目前已经开发了若干个高效的挖掘基于距离的孤立点的算法,概述如下:

(1) 基于索引的算法:给定一个数据集合,基于索引的算法采用多维索引结构(例如 R 树或 k-d 树),来查找每个对象。在半径 d 范围内的邻居。设 M 是一个孤立点的 d -邻域内的最大对象数目。因此,一旦对象 o 的 M+ l 个邻居被发现, o 就不是孤立点。这个算法在最坏情况下的复杂度为 O(k × n 2 ), 这里 k 是维数, n 是数据集合中对象的数目。当 k 增加时,基于索引的算法具有良好的扩展性。但是,复杂度估算只考虑了搜索时间,即使建造索引的任务本身就是计算密集的。

(2) 嵌套-循环算法:嵌套-循环算法和基于索引的算法有相同的计算复杂度,但它避免了索引结构的构建,试图最小化 1/O 的次数。它把内存的缓冲空间分为两半,把数据集合分为若干个逻辑块。通过精心选择逻辑块装人每个缓冲区域的顺序, I/O 效率能够改善。

(3) 基于单元( cell-based )的算法:为了避免 O(n 2 ) 的计算复杂度,为驻留内存的数据集合开发了基于单元的算法。它的复杂度是 O(c k +n), 这里。是依赖于单元数目的常数, k 是维数。在该方法中,数据空间被划分为边长等于 d/(2*sqr(k))的单元。每个单元有两个层围绕着它。第一层的厚度是一个单元,而第二层得厚度是 [2*sqr(k)-1]。该算法逐个单元地对孤立点计数,而不是逐个对象地进行计数。对一个给定的单元,它累计三个计数—单元中对象的数目,单元和第一层中对象的数目,及单元和两个层次中的对象的数目。让我们把这些计数分别称为 cell_count , cell_+_1_layer_count , cell_ +_2_layers_count 。

“在该方法中怎样确定孤立点?” V-1M 是一个孤立点的 d- 邻域中可能存在的孤立点的最大数目。

•  在当前单元中的一个对象。被认为是孤立点,仅当 cell-+_1_layer_count 小于或等于 M 。如果这个条件不成立,那么该单元中所有的对象可以从进一步的考察中移走,因为它们不可能是孤立点。

•  如果 cell_+_2_layers_count 小于或等于 M ,那么单元中所有的对象被认为是孤立点。否则,如果这个计数大于 M ,那么单元中的某些对象有可能是孤立点。为了探测这些孤立点,逐个对象加以处理。对单元中的每个对象 o , o 的第二层中的对象被检查。对单元中的对象,只有那些 d -邻域内有不超过 M 个点的对象是孤立点。一个对象的 d -邻域由这个对象的单元、它的第一层的全部和它的第二层的部分组成。

一个该算法的变形是关于 n 呈线性的,确保不会要求对数据集合进行超过三遍的扫描。它可以被用于大的磁盘驻留的数据集合,但对于高维数据不能很好地伸缩。

基于距离的孤立点探测要求用户设置参数尸 fnd. 寻找这些参数的合适设置可能涉及多次的试探和错误。

 

基于偏离的孤立点检测

基于偏离的孤立点检测( deviation-based outlier detection )不采用统计检验或基于距离的度量值来确定异常对象。相反,它通过检查一组对象的主要特征来确定孤立点。与给出的描述

“偏离”的对象被认为是孤立点。这样,该方法中的偏离( deviation )典型地用于指孤立点。在本节中,我们研究基于偏离的孤立点探测的两种技术。第一种顺序地比较一个集合中的对象,而第二种采用了一个 OLAP 数据立方体方法。

(1) 序列异常技术

序列异常技术( sequential exception technique )模仿了人类从一系列推测类似的对象中识别异常对象的方式。它利用隐含的数据冗余。给定 n 个对象的集合 S ,它建立一个子集合的序列, {S 1 , S 2 , …, S m } ,这里 2 £ m £ n 。满足

Sj-1 真包含于 Sj 其中 Sj 包含于 S

序列中子集合间的相异度被估算。这个技术引人了下列的关键术语:

•  异常集 (exception set) :它是偏离或孤立点的集合,被定义为某类对象的最小子集,这些对象的去除会产生剩余集合的相异度的最大减少。

•  相异度函数 (dissimilarity function) :该函数不要求对象之间的度量距离。它可以是满足如下条件的任意函数:当给定一组对象时,如果对象间相似,返回值就较小。对象间的相异度越大,函数返回的值就越大。一个子集的相异度是根据序列中先于它的子集增量计算的。给定一个 n 个对象的子集合 {x1, … , xn} ,可能的一个相异度函数是集合中对象的方差:

((X1-avg(X))*(X1-avg(X))+(X2-avg(X))*(X2-avg(X))+...+(Xn-avg(X))*(Xn-avg(X)))/n

这里 x 是集合中 n 个数的平均值。对于字符串,相异度函数可能是模式字符串的形式(例如包含通配符),它可以用来覆盖目前所见的所有模式。当覆盖在 S j-1 中所有字符串的模式不能覆盖在 S j 中却不在 S j-1 中的任一字符串时,相异度增加。

•  基数函数 (cardinality function) 这一般是给定的集合中对象的数目。

•  平滑因子 (smoothing factor) :这是一个为序列中的每个子集计算的函数。它估算从原始的对象集合中移走子集合可以带来的相异度的降低程度。该值由集合的势依比例决定。平滑因子值最大的子集是异常集。

一般的寻找异常集的任务可以是 NP 困难的(即不可解的)。一个顺序的方法在计算上是可行的,能够用一个线性的算法实现。

“该方法如何工作?”不考虑其补集来估算当前子集的相异度,该算法从集合中选择一个子集合的序列来分析。对每个子集合,它确定其与序列中前一个子集合的相异度差异。

“序列中子集合的顺序不影响结果吗?”为了减轻输人顺序对结果的任何可能的影响,以上的处理过程可以被重复若干次,每一次采用子集合的一个不同的随机顺序。在所有的迭代中具有最大平滑因子值的子集合成为异常集。

(2) OLAP 数据立方体技术

偏离探测的 OLAP 方法在大规模的多维数据中采用数据立方体来确定反常区域。这种技术在第 2 章中有详细的描述。为了提高效率,偏离的探测过程与立方体的计算是重叠的。这个方法是发现驱动探索的一种形式,预先计算的指示数据异常的值被用来在集合计算的所有层次上指导用户进行数据分析。如果一个立方体的单元值显著地不同于根据统计模型得到期望的值,该单元值被认为是一个异常,并采用可视化的提示来表示,例如背景颜色反映每个单元的异常程度。用户可以选择对那些标为异常的单元进行钻取。一个单元的度量值可能反映了发生在立方体更低层次上的异常,这些异常从当前的层次是不可见的。

这个模型考虑了涉及一个单元所属的所有维的度量值中的变化和模式。例如,假设你有一个销售数据的数据立方体,正在查看按月汇总的销售额。在可视化提示的帮助下,你注意到与其他月份相比, 12 月的销售额有增长。这可能看起来是时间维上的一个异常。但是,通过向下查看 12 月中每个项目的销售额,你发现每个项目的销售额都有相似的增长。因此,如果考虑项目维, 12 月份总销售额的增长就不是一个异常。该模型考虑了隐藏在数据立方体集合分组操作后面的异常情况。对这样的异常,由于搜索空间很大,特别是当存在许多涉及多层概念层次的维的时候,人工探测是非常困难的。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值