异常检测算法综述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
聚类算法对异常的定义:异常是聚类嵌于其中 的背景噪声。
异常探测算法对异常的定义:异常是既不属于 聚类也不属于背景噪声的点。他们的行为与正 常的行为有很大不同。
第2页/共30页
异常探测方法的分类
基于统计(statistical-based)的方法 基于距离 (distance-based)的方法 基于偏差(deviation-based)的方法 基于密度(density-based)的方法 高维数据的异常探测
常; – 否则,单元中的一些对象可能为异常,逐个对象进行处
理。
算法复杂度是O(ck+ N )
第9页/共30页
基于距离的算法小结
由于索引建立的开销很大,简单索引算 法没有竞争性
当k<=4时,基于单元的算法在N越大时 优越性越明显
当k>=5之后,嵌套循环算法开始显现出 优势
第10页/共30页
基于距离的算法的改进
Dnk 异常 用Dk(p)表示点p和它的第k个最近邻的距离, 给定d维空间中包含N个点的数据集,参数n和k(自然 数),如果满足Dk(p’) Dk(p)的点p’不超过n-1个,那 么称p为Dnk 异常。
如果对数据点根据它们的Dk(p)距离进行排序,那么前n 个点就被看作异常。
第12页/共3wenku.baidu.com页
异常探测简介
异常探测是数据挖掘中一个重要方面,用来发 现”小的模式”(相对于聚类),即数据集中间 显著不同于其它数据的对象。
异常探测应用
–电信和信用卡欺骗 –贷款审批 –药物研究 –气象预报 –金融领域 –客户分类 –网络入侵检测等
第1页/共30页
什么是异常(outlier)?
Hawkins(1980)给出了异常的本质性的定义:异 常是在数据集中与众不同的数据,使人怀疑这 些数据并非随机偏差,而是产生于完全不同的 机制。
第13页/共30页
基于偏差的方法
Argrawal和Ragaran(KDD’1995)提出一种 “序列异 常”(sequential exception)的概念。
算法介绍
– 给定n个对象的集合S,建立一个子集序列{S1,S2,…,Sm},
2mn
S j1 S j , S j S
– 对每个子集,确定该子集与前序子集的差异度的差 ;
第4页/共30页
基于距离的方法
Knorr和Ng(VLDB’1998)提出一种基于
距离的异常探测方法
基于距离的异常定义
数据集S中一个对象O称为DB(p, D )-
outlier,如果它满足下列性质:数据集S中至
少p*100%的对象与O的距离大于距离D 。
采用不同的参数p和D , DB(p, D )-outlier可以
Knorr和Ng(VLDB’1998)基于
距离的异常探测方法的缺陷
– 输入参数p与D很难确定,并且对于不同参数,结果 有很大不稳定性。这就需要用户反复输入p与D进行 测试,以确定一个满意解;
– 不能给定异常的程度;
– 算法的复杂度较高。
第11页/共30页
基于距离的算法的改进
Rastogi 和Ramaswamy(SIGMOD’2000)提出了一个新 的基于距离异常定义
改进的基于距离的算法
循环嵌套算法(Nested-loop Algorithm) 对每个点p,计算它的第k个最近邻的距离Dk(p),把具
有极大Dk值前n个点作为异常。上面的算法每次处理一个点 p,那么需要扫描一遍数据库,总共需要扫描N遍(N为数据 点数)。 基于索引的算法(Index-based Algorithm)
– 光滑因子(smoothing factor)最大的子集就是异常集(exception set);
» 光滑因子用来评价从原始数据集中去除一个子集,差异度降低多 少。
– 为减少输入数据的顺序对结果的影响,可以用不同的次序多 次重复上述过程,找出其中光滑因子最大的子集。
这个算法复杂度与数据集大小呈线性关系,有优异的
算法复杂度是O(k N2 )
k——维数 N——数据点数 缺点:
– 需要建立多维索引结构 – 费时
第7页/共30页
嵌套循环算法NL
将内存缓冲区空间划分成相等的两部分,数据 集分成几个大小和每部分缓冲区相等的逻辑块, 通过认真选择调入每一部分缓冲区的次序,使 I/O次数最小
算法复杂度是O(k N2 )
表示所有的基于统计的异常。
第5页/共30页
基于距离的异常探测的算法
基于索引(index-based)的算法 嵌套循环(nested-loop)算法 基于单元(cell-based)的方法
第6页/共30页
基于索引的算法
寻找所有的DB(p, D )-outlier可以通过对最近
邻查询或以O为中心的范围查询的回答来实现 基于多维索引结构R-Tree或kd-Tree
用如R*-树的空间索引结构存储。 基于划分的算法(partition-based Algorithm)
可以如先果对某数个据点集的进D行k(划p)较分小,的然话后,估那计么每不个可划能分是的DDnkk(p异)的常上,、 下界,如果能判定某个划分不可能包含异常的话,那么就 可以直接把它删除掉;然后再从剩下的划分(侯选划分) 来计算异常。现有的许多聚类算法可以用来划分数据集, 如BIRCH 。
k——维数 N——数据点数 特点:
– 不需要建立多维索引结构 – 较费时
第8页/共30页
基于单元的方法
单元划分
– 数据空间被划分为边长为D/(2k1/2)的单元; – 每个单元有两个包围层
» 第一层为1倍的单元厚 » 第二层为int(2k1/2 -1)+1倍的单元厚
确定异常
– 若cell_+_1_layer_count>M,单元中的对象都不是异常; – 若cell_+_2_layer_count<=M,单元中的所有对象都是异
第3页/共30页
基于统计的方法
假设给定的数据集服从一个随机分布 (如正态分布等),用不一致性测试 (discordancy test)识别异常。
存在问题
–在许多情况下,用户并不知道这个数据分布。而且 现实数据也往往不符合任何一种理想状态的数学分 布;
–即使在低维(一维或二维)时的数据分布已知,在 高维情况下,估计数据点的分布是极其困难的。
异常探测算法对异常的定义:异常是既不属于 聚类也不属于背景噪声的点。他们的行为与正 常的行为有很大不同。
第2页/共30页
异常探测方法的分类
基于统计(statistical-based)的方法 基于距离 (distance-based)的方法 基于偏差(deviation-based)的方法 基于密度(density-based)的方法 高维数据的异常探测
常; – 否则,单元中的一些对象可能为异常,逐个对象进行处
理。
算法复杂度是O(ck+ N )
第9页/共30页
基于距离的算法小结
由于索引建立的开销很大,简单索引算 法没有竞争性
当k<=4时,基于单元的算法在N越大时 优越性越明显
当k>=5之后,嵌套循环算法开始显现出 优势
第10页/共30页
基于距离的算法的改进
Dnk 异常 用Dk(p)表示点p和它的第k个最近邻的距离, 给定d维空间中包含N个点的数据集,参数n和k(自然 数),如果满足Dk(p’) Dk(p)的点p’不超过n-1个,那 么称p为Dnk 异常。
如果对数据点根据它们的Dk(p)距离进行排序,那么前n 个点就被看作异常。
第12页/共3wenku.baidu.com页
异常探测简介
异常探测是数据挖掘中一个重要方面,用来发 现”小的模式”(相对于聚类),即数据集中间 显著不同于其它数据的对象。
异常探测应用
–电信和信用卡欺骗 –贷款审批 –药物研究 –气象预报 –金融领域 –客户分类 –网络入侵检测等
第1页/共30页
什么是异常(outlier)?
Hawkins(1980)给出了异常的本质性的定义:异 常是在数据集中与众不同的数据,使人怀疑这 些数据并非随机偏差,而是产生于完全不同的 机制。
第13页/共30页
基于偏差的方法
Argrawal和Ragaran(KDD’1995)提出一种 “序列异 常”(sequential exception)的概念。
算法介绍
– 给定n个对象的集合S,建立一个子集序列{S1,S2,…,Sm},
2mn
S j1 S j , S j S
– 对每个子集,确定该子集与前序子集的差异度的差 ;
第4页/共30页
基于距离的方法
Knorr和Ng(VLDB’1998)提出一种基于
距离的异常探测方法
基于距离的异常定义
数据集S中一个对象O称为DB(p, D )-
outlier,如果它满足下列性质:数据集S中至
少p*100%的对象与O的距离大于距离D 。
采用不同的参数p和D , DB(p, D )-outlier可以
Knorr和Ng(VLDB’1998)基于
距离的异常探测方法的缺陷
– 输入参数p与D很难确定,并且对于不同参数,结果 有很大不稳定性。这就需要用户反复输入p与D进行 测试,以确定一个满意解;
– 不能给定异常的程度;
– 算法的复杂度较高。
第11页/共30页
基于距离的算法的改进
Rastogi 和Ramaswamy(SIGMOD’2000)提出了一个新 的基于距离异常定义
改进的基于距离的算法
循环嵌套算法(Nested-loop Algorithm) 对每个点p,计算它的第k个最近邻的距离Dk(p),把具
有极大Dk值前n个点作为异常。上面的算法每次处理一个点 p,那么需要扫描一遍数据库,总共需要扫描N遍(N为数据 点数)。 基于索引的算法(Index-based Algorithm)
– 光滑因子(smoothing factor)最大的子集就是异常集(exception set);
» 光滑因子用来评价从原始数据集中去除一个子集,差异度降低多 少。
– 为减少输入数据的顺序对结果的影响,可以用不同的次序多 次重复上述过程,找出其中光滑因子最大的子集。
这个算法复杂度与数据集大小呈线性关系,有优异的
算法复杂度是O(k N2 )
k——维数 N——数据点数 缺点:
– 需要建立多维索引结构 – 费时
第7页/共30页
嵌套循环算法NL
将内存缓冲区空间划分成相等的两部分,数据 集分成几个大小和每部分缓冲区相等的逻辑块, 通过认真选择调入每一部分缓冲区的次序,使 I/O次数最小
算法复杂度是O(k N2 )
表示所有的基于统计的异常。
第5页/共30页
基于距离的异常探测的算法
基于索引(index-based)的算法 嵌套循环(nested-loop)算法 基于单元(cell-based)的方法
第6页/共30页
基于索引的算法
寻找所有的DB(p, D )-outlier可以通过对最近
邻查询或以O为中心的范围查询的回答来实现 基于多维索引结构R-Tree或kd-Tree
用如R*-树的空间索引结构存储。 基于划分的算法(partition-based Algorithm)
可以如先果对某数个据点集的进D行k(划p)较分小,的然话后,估那计么每不个可划能分是的DDnkk(p异)的常上,、 下界,如果能判定某个划分不可能包含异常的话,那么就 可以直接把它删除掉;然后再从剩下的划分(侯选划分) 来计算异常。现有的许多聚类算法可以用来划分数据集, 如BIRCH 。
k——维数 N——数据点数 特点:
– 不需要建立多维索引结构 – 较费时
第8页/共30页
基于单元的方法
单元划分
– 数据空间被划分为边长为D/(2k1/2)的单元; – 每个单元有两个包围层
» 第一层为1倍的单元厚 » 第二层为int(2k1/2 -1)+1倍的单元厚
确定异常
– 若cell_+_1_layer_count>M,单元中的对象都不是异常; – 若cell_+_2_layer_count<=M,单元中的所有对象都是异
第3页/共30页
基于统计的方法
假设给定的数据集服从一个随机分布 (如正态分布等),用不一致性测试 (discordancy test)识别异常。
存在问题
–在许多情况下,用户并不知道这个数据分布。而且 现实数据也往往不符合任何一种理想状态的数学分 布;
–即使在低维(一维或二维)时的数据分布已知,在 高维情况下,估计数据点的分布是极其困难的。