1、1,在线教务辅导网:http:/,教材其余课件及动画素材请查阅在线教务辅导网,QQ:349134187 或者直接输入下面地址:,http:/,2,第九章 异常检测,3,第九章 目录,9.1 概 述 9.2 基于距离的异常检测 9.3 基于密度的异常检测 9.4 基于图的异常检测 9.5 本 章 小 结,4,9.1 概述,9.1.1 异常概念 9.1.2 异常的成因 9.1.3 异常检测方法,5,9.1.1 异常概念,异常是数据集中的小比例对象。通常,异常对象被称为离群点、例外(Outlier)、野点等。异常检测是一个有趣的数据挖掘任务,其目标是发现与大部分其他对象不同的对象。异常检测也称偏差检
2、测(deviation detection)或例外挖掘(exception mining),它是发现新知识、新类别的一条有效途径。 异常检测可以分为两个子问题:1)定义在给定的数据集合中什么样的数据认为是不一致的; 2)找到一个有效的方法挖掘这样的异常。,6,9.1.2 异常的成因,常见的异常成因有: 1)数据来源于不同的类。一个数据对象可能不同于其他数据对象(即异常),因为它属于一个不同的类型或类。 2)自然变异。属于同类的数据对象由于自然变异出现了异常。 3)数据测量或收集误差。数据测量和收集过程中出现的误差是另一个异常源。例如,由于人的错误、测量设备的问题或存在噪声,测量值可能被错误记录
3、。,7,9.1.3 异常检测方法(1),对于不考虑数据空间或时间的基本异常检测方法大致可以分成四类:基于统计分布的异常检测(Distribution-based outlier detection)基于偏差的异常检测(Deviation-based outlier detection)基于距离的异常检测(Distance-based outlier detection) 基于密度的异常检测(Density-based outlier detection)。,8,基于统计分布的异常检测方法对给定的数据集假设了一个分布或概率模型(例如,正态分布或泊松分布),然后根据模型采用不和谐检验识别异常。异常
4、是那些同模型不能完美拟合的对象。 基于偏差的异常检测不使用统计检验或基于距离的度量来识别异常对象。相反,它通过检查一组对象的主要特征来识别异常。“背离”这种描述的对象认为是异常。 基于距离的异常检测指定参数pct和dmin,如果数据集合D中的对象至少有pct部分与对象o的距离大于dmin,则称对象o是以pct和dmin为参数的基于距离的异常,记为DB(pct,dmin)。 基于密度的异常检测不将异常看作一种二元性质,而是使用局部异常因子(LOF)来评估一个对象是异常的程度。该程度依赖于对象相对于其邻域的孤立情况。,9.1.3 异常检测方法(2),9,9.1.3 异常检测方法(3),当考虑对象间
5、的空间关系时,常用的异常检测方法有两种:基于图的异常检测(Graph-based outlier detection)基于多维空间的异常检测(Multi-dimensional space-based outlier detection),10,9.1.3 异常检测方法(4),基于图的异常检测以图的连通性为基础。异常定义为属性值明显不同于其空间连通近邻的数据对象,这样的异常常常称为空间异常。基于多维空间的异常检测也是检测空间异常,只是其空间邻域的定义与基于图的异常检测方法中的定义不同。在基于多维空间的异常检测中,空间邻域的定义基于欧几里德距离,而在基于图的异常检测中,空间邻域的定义基于图的连通
6、性。,11,9.2 基于距离的异常检测,9.2.1 嵌套-循环(Nested-Loop,NL)算法 9.2.2 基于单元(Cell-Based)的算法,12,9.2.1 嵌套-循环(Nested-Loop,NL)算法(1),主要思想:假设N是数据集中对象数,缓冲区的大小为数据集大小的B%,算法将整个缓冲区分成两个阵列,分别称为第一阵列和第二阵列。将数据集中的数据划分成块,每块大小为0.5B%。对象以块为单位读入阵列中,然后直接计算数据对象间的距离。第一阵列中的每个对象都有一个计数器,用于记录对象dmin邻域内的对象数目。某个计数器的值一旦大于一个异常的dmin邻域内最多对象数目M=N(1-pc
7、t) ,该计数器就停止计数。,13,算法:嵌套-循环(NL)算法(D,dmin,M) 输入:数据对象集合D,邻域半径dmin,一个异常的dmin邻域内最多对象数目M 输出:D中的异常对象 步骤: (1)用数据集D中的一个数据块填充第一阵列 (2)for 第一阵列中每个数据对象ti,do(2.1)counti=0(2.2)for第一阵列中的每个对象tj(2.2.1)if dist(ti,tj)dmin,then counti+1 /dist()是距离函数(2.2.2)if countiM,then 标记ti不是一个异常,处理下一个ti (3)当第一阵列中的对象都比较完后,do(3.1)用另一个数
8、据块填充第二阵列,将那些从未填充过第一阵列的数据块记录下来,9.2.1 嵌套-循环(Nested-Loop,NL)算法(2),14,(3.2)for第一阵列中未标记的每个数据对象ti(3.2.1)for第二阵列中的每个对象tjif dist(ti,tj)dmin,then counti+1if countiM,则标记ti不是一个异常,处理下一个ti (4)输出第一阵列中每一个未被标记的对象ti,表示它是一个异常 (5)if第二阵列曾经充当过第一阵列,then stopelse交换第一阵列和第二阵列的角色,转(2)算法(2)考察了第一阵列中对象间的距离,(3)考察第一和第二阵列中对象间的距离,(
9、5)保证数据集中的每个对象都能被作为中心进行考虑。,9.2.1 嵌套-循环(Nested-Loop,NL)算法(3),15,例9.1 设NL算法用50%的缓冲区。数据集被分成A、B、C、D 四个逻辑块。每个阵列和块能容纳1/4数据集的对象数。数据块和阵列如图9.1所示。图9.1 数据块和阵列,9.2.1 嵌套-循环(Nested-Loop,NL)算法(4),16,数据块填充阵列的顺序为: 序号 第一阵列 第二阵列 1 A B、C、D 读4块(A、B、C、D) 2 D A、B、C 读2块(B、C) 3 C D、A、B 读2个块(A、B) 4 B C、A、D 读2个块(A、D) 循环4次,总共读了
10、10个块,遍历数据库的次数总计为10/4=2.5次。 NL算法的复杂性为O(kN2)。NL算法不受数据集大小和维数的限制,但是当数据集较大时,NL算法需要多次遍历数据库。如果数据集被划分为n=200/B个块(B是缓冲区的百分比),那么(i)算法NL需读的块的总数为n+(n-2)(n-1),(ii)遍历数据库的次数 n-2。,9.2.1 嵌套-循环(Nested-Loop,NL)算法(5),17,9.2.2 基于单元(Cell-Based)的算法(1),基于单元的算法将空间区域划分为矩形单元,通过使用单元-单元的处理来代替NL算法中对象-对象的处理,避免了复杂性中的N2项,从而提高效率。基于单元
11、的算法分为两个:FindAlloutsM和FindAlloutsD。FindAlloutsM适用于检测存储于主存的数据集中的异常,FindAlloutsD适用于处理大型、磁盘数据集。,18,9.2.2 基于单元(Cell-Based)的算法(2),9.2.2.1 相关概念 9.2.2.2 FindAlloutsM 9.2.2.3 FindAlloutsD,19,9.2.2.1 相关概念 (1),1)1层邻域L1单元Cx,y的1层邻域L1是按通常意义定义的Cx,y的直接邻域,即L=1(Cx,y)= Cu,v|u=x1, v=y1, Cu,vCx,y 图9.2所示的是非边界单元的8个L1邻域。,图
12、9.2 单元Cxy的1层邻域L1,20,性质1:同一单元中两个对象间的最远距离为dmin/2,即性质2:若Cu,v是Cx,y的L1邻域,那么Cu,v中的对象ti与Cx,y中对象tj间的最大距离为dmin,即这是因为相邻单元中对象间的最远距离不会超过单元对角线长度的2倍。,9.2.2.1 相关概念 (2),21,2)2层邻域L2 单元Cx,y的2层邻域L2的定义为: L2(Cx,y)= Cu,v|u=x3, v=y3, Cu,v L1(Cx,y), Cu,vCx,y 每个非边界单元有72-32=40个L2邻域。,9.2.2.1 相关概念 (3),图9.3 单元的2层邻域L2,22,性质3:假如C
13、u,v Cx,y,Cu,v既不是Cx,y的L1邻域,也不是Cx,y的L2邻域,那么Cu,v中的对象ti与Cx,y中对象tj间的距离一定大于dmin,即这是因为L1和L2的厚度加起来是3个单元,ti与tj间的距离一定大于,9.2.2.1 相关概念 (4),23,性质4: 若Cx,y中的对象数M,那么Cx,y中的对象都不异常; 若Cx,y中的对象数+L1(Cx,y)中的对象数M,那么Cx,y中的对象都不异常; 若Cx,y中的对象数+ L1(Cx,y)中的对象数+ L2(Cx,y)中的对象数M,那么Cx,y中的每一个对象都是异常。,9.2.2.1 相关概念 (5),24,9.2.2.2. FindA
14、llOutsM(FM)算法(1),FM算法使用了性质1性质4来检测异常和非异常,这种检测是以单元-单元为基础,而不是以对象-对象为基础,从而可以将大量不可能是异常的对象排除。只有不满足性质4的单元内的对象才进行对象-对象的处理。,25,9.2.2.2. FindAllOutsM(FM)算法(2),算法:FindAllOutsM算法(D,dmin,M) 输入:数据对象集合D,邻域半径dmin,一个异常的dmin邻域内最多对象数目M 输出:D中的异常对象 步骤: (1)for q=1 to m countq=0 /m是单元数,单元的对象计数器清零 (2)将 D中每个对象p映射到合适的单元Cq中,存
15、储p,countq+1 (3)检测各个单元,if countq M,then 将Cq标记为红色 /Cq中的所有对象都不是异常 (4)对每一个红色单元Cr,将它的每一个L1邻域标记为粉红色,提供未曾被标记为红色的邻域 (5)for 每一个非空的白色单元Cw(未被标记颜色)(5.1)(5.2)if countw2 M,then 标记Cw为粉红色(5.3)else(5.3.1)(5.3.2)if countw3 M,then 输出Cw中的所有对象 /都是异常(5.3.3)else for Cw中的每一个对象p countp= countw2for L2(Cw)中的每一个对象 if then coun
16、tp+1if countp M then 输出p /p是异常,26,在算法(5.3.3)步,白色单元Cw中的每个对象p必须与Cw的L2邻域中的每个对象p比较,然后决定有多少个p在p的dmin邻域内。一旦p的dmin邻域内的对象数目超过M,则p不是异常。只有p的dmin邻域内的对象数目M,p才是异常。,9.2.2.2. FindAllOutsM(FM)算法(3),27,9.2.2.3. FindAllOutsD(FD)算法(1),FM算法适用于检测存储于主存的数据集中的异常。对于大型磁盘数据集,无法将整个数据集存储于主存中,因此,将数据集分页,各页依次读入主存处理。在处理大型磁盘数据的过程中,提
17、高效率的关键在于使读页的次数或遍历数据库的次数最小化。在基于单元的算法中,有两个阶段需要读页:1)初始映射阶段:在算法FM的(2),每个对象被映射到合适的单元中。这一步需要遍历数据库一次。2)对象成对比较阶段:在算法FM的5.3.c步,为了完成对象-对象的距离计算,白色单元Cw中的每个对象p与Cw的L2邻域中的每个对象p都需要读。因为映射到同一单元或相邻单元中的对象,它们在磁盘上的物理地址不一定邻近。每一对对象(p,p)的比较可能要求读一页,因此引起了大量的输入输出。,28,FD算法的方法是挑选对象子集保存在主存中,将磁盘上的数据页分类。各类数据页按一定顺序读入,从而使读页次数最小化。被挑选的
18、子集由映射到白色单元中的对象构成。这些对象称为白色对象,它们需要进行对象-对象的计算。白色单元中的对象数目被限定在M以内。在FD算法中,根据所包含的对象,所有页分成A、B、C三种类型。1)A类页:包含白色对象的页。2)B类页:不包含白色对象,但是包含映射到白色单元的L2邻域的非白色单元中的对象的页。3)C类页:所有其它页。,9.2.2.3. FindAllOutsD(FD)算法(2),29,图9.5 A类页、B类页和C类页,A、B、C三类页如图9.5所示。图中Cw、Cw是白色单元,Cv是非白色单元,Cr是红色单元,其中Cw、CvL2(Cw)。,9.2.2.3. FindAllOutsD(FD)
19、算法(3),30,设第i页中的对象p映射到白色单元Cw中,为了判断对象p是否异常,需要计算对象p与下列三种对象间的距离: 1)被映射到Cw的L2邻域的白色单元中的白色对象 2)被映射到Cw的L2邻域的非白色单元中的非白色对象,位于第j页,且ji 3)被映射到Cw的L2邻域的非白色单元中的非白色对象,位于第j页,但ji FD算法先读A类页,并将所有白色对象存储在主存,然后读B类页,若必要再读A类页。先读A类页,当所有A类页被读过之后,对象对(p,p)的距离dist(p,p)可以计算出来;读完B类页后, dist(p,p)可以计算;再读A类页后, dist(p,p)也可以计算。C类页不需要再读。,
20、9.2.2.3. FindAllOutsD(FD)算法(4),31,9.2.2.3. FindAllOutsD(FD)算法(5),算法:FindAllOutsD(FD)算法(D,dmin,M) 输入:数据对象集合D,邻域半径dmin,异常的dmin邻域内最多对象数目M 输出:D中的异常对象 步骤: (1)for q=1 to m countq=0 /m是单元数,单元的对象计数器清零 (2)for 每一个D中对象p (2.1)将p映射到合适的单元Cq中,但不存储p(2.2)countq+1(2.3)记下Cq与p的页对应 (3)for q=1 to m(3.1)if countqM then 将C
21、q标记为红色 (4)对每一个红色单元Cr,将它的每一个L1邻域标记为粉红色,提供未曾被标记为红色的邻域 (5)for 每一个非空的白色单元Cw (5.1)(5.2)if countw2 M,then 标记Cw为粉红色(5.3)else(5.3.1)(5.3.2)if countw3M,then 将Cw标记为黄色 /Cw中的所有对象都是异常(5.3.3)else sumw=countw2,32,9.2.2.3. FindAllOutsD(FD)算法(6),(6)for 每一个至少包含一个白色对象或黄色对象的页i(6.1)读第i页(6.2)for 每一个有对象在页i中的白色单元或黄色单元Cq(6.
22、2.1)for 页i中被映射到Cq中的每一个对象p将p存在Cq中kcountp=sumq (7)for 每一个非空白色单元Cw中的每一个对象p(7.1)for 每一个白色单元或黄色单元CL,CLL2(Cw) (7.1.1)for CL中的每一个对象if ,then kcountp+1if kcountpM,then 标记p不是异常,处理下一个p (8)标记黄色单元中的所有对象是异常,输出这些异常 (9)for 至少包含一个(i)既不是白色对象,也不是黄色对象,(ii)映射到某白色单元Cw的L2邻域内的对象的页i(9.1)读页i(9.2)for 每一个既不是白色单元,也不是黄色单元,并且有对象在
23、页i中的单元Cq,CqL2(Cw) (9.2.1)for 页i中映射到Cq中的每一个对象for 每一个非空白色单元Cw,CwL2(Cq) for Cw中的每个对象pif ,then kcountp+1if kcountpM,then 标记p不是异常 (10)for 每一个非空白色单元中的每个对象p(10.1)If p未被标记为非异常,then 标记p是异常,输出p,33,在FD算法中,前5步的处理与FM算法相似,只是在FD的第(2)步,不再存储对象,但是记录有对象被映射到Cq中的页。建立这样的联系非常重要。因为在后面的步骤中,可能需要获取一个给定单元的对象,或者需要知道一个特定页中的对象被映射
24、到了哪些单元中。在(5.3.2)步,如果检测出一个白色单元中的所有对象都是异常,则将此白色单元标记为黄色。它的对象在(6)从相应的页读入内存,然后在(8)步标记并输出。(6)只读那些至少包含一个白色对象或黄色对象的页,即A类页。这些页的白色对象或黄色对象与白色单元Cw一同存储。Cw中存储了countw个对象,并且countwM。为了处理L2邻域,(6.2.1)的第二步将dmin-邻域计数器初始化为Cw L1(Cw)中的对象数。,9.2.2.3. FindAllOutsD(FD)算法(7),34,在(7),对每一个非空的白色单元Cw,算法只使用( 6)读入并存储起来的对象作为潜在邻域,对Cw中的
25、每个对象进行检测。(7)运行之后,非空白色单元中的一些或所有对象可能不再需要进一步比较,因此减少了(9)中读的数目。在(9),对于那些既不是白色单元,又不是黄色的单元,必须进行读磁盘的操作。这相当于读B类页和重读A类页。然后,仅用新从磁盘读入的对象检测每个白色单元中的对象。 与FM算法相似,FD算法的复杂性也与N呈线性关系。FD算法的最大优点是:遍历数据库的次数不超过3次。对于特别大型的数据集,FD算法遍历数据库的次数比NL算法少。当维数不超过4维时,FD算法比NL算法优越。当k=5之后,NL算法开始显现出优势。,9.2.2.3. FindAllOutsD(FD)算法(8),35,9.3 基于
26、密度的异常检测,9.3.1 相关概念 9.3.2 基于密度的异常检测算法,36,9.3.1 相关概念(1),1)k距离对象p的k距离k-distance(p)是p到它的k最近邻的最大距离。它定义为p与对象oD之间的距离d(p,o),满足:(1)D中至少存在k个对象到p的距离小于或等于p到o的距离。(2)D中最多有k-1个对象到p的距离比p到o的距离小。k与聚类算法DBSCAN中的MinPts相同,用于定义对象p的局部邻域。2)k距离邻域对象p的k距离邻域Nk_distance(p)(p)包含所有与p的距离不超过k_distance(p)的对象,即: Nk-distance(p)(p)=qDp|
27、d(p,q) k-distance(p),37,3)可达距离给定自然数k,对象p关于对象o的可达距离reach_distk(p,o)为:reach_distk(p,o)=maxk_distance(o),d(p,o)。reach_distk(p,o)的含义是,如果对象p远离o,则两者间的可达距离就是它们间的实际距离。但是,如果p在o的k距离邻域内,则实际距离用o的k距离取代。k距离越大,在相同邻域中对象的可达距离越相似。图9.5所示的是=4时对象p1和p2关于对象o的可达距离。,图9.7 k=4时对象p1和p2的可达距离,9.3.1 相关概念(2),38,4)局部可达密度 用MinPts表示p
28、的邻域中最小的对象个数,那么对象p的局部可达密度为对象p与它的MinPts-邻域的平均可达距离的倒数:5)局部异常因子LOF对象p的局部异常因子定义为:LOF是对象p和它的最近邻的局部可达密度的比率的平均值。p的局部可达密度越小,p的MinPts最近邻的局部可达密度越大,LOFMinPts (p)越高。LOF表征了p的异常程度:如果p不是局部异常,则LOFMinPts(p)接近于1;p是局部异常的程度越大,LOFMinPts(p)越高。,9.3.1 相关概念(3),39,9.3.2 基于密度的异常检测算法(1),LOF表征了对象p的异常程度,因此,可以通过计算LOF(p)来判断对象p是否是局部
29、异常。基于密度的异常检测算法的核心是对于指定的近邻个数k,基于对象的最近邻计算对象的LOF。算法:基于密度的异常检测算法(D,MinPts,k) 输入:数据对象集合D,近邻个数MinPts,异常对象数目k 输出:k个异常 步骤: (1)for D中每个数据对象p(1.1)确定p的MinPts距离邻域NMinpts_distance(p)(p),40,9.3.2 基于密度的异常检测算法(2),(1.2)使用p的最近邻(即NMinPts_distance(p)(p)中的对象),计算p的局部可达密度lrdMinPts(p)(1.3)计算NMinPts_distance(p)(p)中每个对象o的局部可
30、达密度lrdMinPts(o)(1.4)计算p的局部异常因子LOFMinPts(p) (2)输出D中LOF值最大的k个对象基于密度的异常检测算法的时间复杂度为O(n2)(其中n是D中对象个数)。算法给出了对象异常程度的定量度量,并且在数据具有不同密度的区域也能够很好地识别局部异常。,41,9.4 基于图的异常检测,9.4.1 相关概念 9.4.2 测试参数的计算 9.4.3 指定路径上的空间异常检测(Route Outlier Detection,ROD)算法,42,9.4.1 相关概念(1),1空间图G空间图G=S, E,其中S是空间对象s1,s2,sn的集合,是S中对象间连接的边的集合。2
31、空间邻域空间邻域基于图的连通性定义。如果在中,结点s1、s2与s3相连,那么s1、s2是s3的空间邻域。,43,9.4.1 相关概念(2),3空间统计量S(x)数据对象x的统计量S(x)定义为x的属性值与其邻域属性平均的差,即S(x)= f(x)- EyN(x)(f(y),其中f(x)是x的属性值,N(x)是x的邻域集合,EyN(x)(f(y)是x邻域属性的平均。如果f(x)是正态分布,则空间统计量S(x)也是正态分布。4空间异常如果数据对象x满足: ,则x是空间异常。其中s是所有S(x)的均值,s是所有S(x)的标准偏差,的选择依赖于指定的置信区间,比如对于95%的置信区间,2。,44,9.
32、4.2 测试参数的计算(1),在检测空间异常之前,需要计算测试参数,如统计量的均值、标准偏差。计算测试参数的算法(Test Parameters Computation,TPC)描述如下: 算法:TPC算法(,D,F,ND,G) 输入:属性空间,数据对象集合D,上的距离函数F,邻域深度ND,空间图G=(D,E) 输出: s,s 步骤: (1)for i=1 to |D| (1.1)oi=Get_one_Object(i,D) /从D 中选择对象(1.2)NNS=Find_Neighbour_Nodes_Set(oi,ND,G) /从G中搜索对象oi的邻域,45,9.4.2 测试参数的计算(2)
33、,(1.3) Accum_Dist=0 (1.4)for j=1 to |NNS| (1.4.1)ok=Get_one_Object(j,NNS) (1.4.2)Accum_Dist=F(oi,ok,)(1.5)Avg_Dist= Accum_Dist/|NNS| /计算对象oi的统计量(1.6)Add_Element(Avg_Dist_Set,i) /存储对象oi的统计量 (2)sGet_Mean(Avg_Dist_Set) /计算统计量的均值 (3)sGet_Standard_Dev(Avg_Dist_Set) /计算统计量的标准偏差 (4)return(s,s) Avg_Dist_Set
34、用于存储所有对象的统计量S(x)。,46,9.4.3 指定路径上的空间异常检测(Route Outlier Detection,ROD)算法 (1),基于TCP计算得到的参数s和s,具有空间图的数据集D中指定路径上的异常可以被检测出来。ROD算法使用TPC算法计算的s和s检测用户指定路径上的空间异常。在具有空间图的数据集D中指定路径RN,ROD算法首先在G中为路径RN上的每个节点x查找其空间邻域;然后计算x的属性值与其邻域的属性平均值之差S(x);使用空间异常测试公式 ,每个S(x)都能被检测,从而判定x是否是异常。是预先指定的置信度区间。,47,算法:指定路径上的空间异常检测(ROD)算法(
35、,D,F,ND,G,CI,s,s,RN) 输入:属性空间,数据对象集合D,上的距离函数F,邻域深度ND,空间图G=(D,E),置信区间CI,TPC算法计算的s和s,路径上的节点集RN 输出:路径上的异常集 步骤: (1)for i=1 to |RN|(1.1)oi=Get_one_Object(i,D)(1.2)NNS=Find_Neighbour_Nodes_Set(oi,ND,G) /从G中搜索对象oi的邻域(1.3)Accum_Dist=0,9.4.3 指定路径上的空间异常检测(Route Outlier Detection,ROD)算法 (2),48,(1.4)for j=1 to |
36、NNS| (1.4.1)ok=Get_one_Object(j,NNS)(1.4.2)Accum_Dist=F(oi,ok,)(1.5)Avg_Dist= Accum_Dist/|NNS| /计算对象oi的统计量(1.6)Tvalue=(Avg_Dists)/s(1.7)if Check_Normal_Table(Tvalue,CI)= =True then Add_Element(Outlier_Set,i) /查正态分布表 (2)输出Outlier_Set,9.4.3 指定路径上的空间异常检测(Route Outlier Detection,ROD)算法 (3),49,9.5 本 章 小 结,本章重点介绍了基于距离的异常检测算法:嵌套-循环(NL)算法、基于单元的算法(FM、FD);基于密度的异常检测算法和基于图的异常检测算法。 基于距离的异常检测和基于密度的异常检测没有考虑数据间的空间关系。基于距离的异常检测依赖于给定数据集的“全局”分布,适用于均匀分布的数据集。基于密度的异常检测给出了对象异常程度的定量度量,并且在数据具有不同密度的区域能够很好地识别局部异常。基于图的异常检测方法的处理对象是空间数据集,其检测的异常是空间异常。空间异常是一些与其邻域中其它的数据表现不一致的观测点。,