一种基于k甚近邻的高准确率全局离群点检测算法

文档序号:9396951阅读:735来源:国知局
一种基于k甚近邻的高准确率全局离群点检测算法
【技术领域】
[0001] 本发明属于数据挖掘技术领域,尤其涉及一种基于k甚近邻的高准确率全局离群 点检测算法。
【背景技术】
[0002] 离群点也称异常点、异常对象,现在学术界最有影响的定义是Hawkins提出的定 义"离群点是数据集中与众不同的数据点,其表现与其它点如此不同,以至于使人怀疑这些 数据并非随机的偏差,而是由另外一种完全不同的机制所产生的"。除此之外,每一类离群 检测算法都给出相应的离群点定义。离群点检测也称为异常检测、偏差检测或离群点挖掘, 它就是按照一定的算法把数据集中的离群点检测出来,例如检测出TOP η离群点,或者所有 符合要求的离群点。换言之,离群点检测就是挖掘海量数据中极少数与主流数据显著不同 的点。
[0003] 基于距离的离群检测算法具有通用性。它不需要用户具有相关领域知识,也不需 要假定数据集满足任何特定概率分布模型。自1998年Knorr和Ng首先提出基于距离的离 群点定义之后,学者们纷纷提出各种各样的离群点定义及相应的检测算法。其中最为常用 的定义共有三个:
[0004] 来源于Knorr和Ng提出的定义DB (p,D)--数据集T中的对象0是一个离 群点,当数据集T中至少有P部分对象与0的距离大于D。该定义等价为,意为与对象 0的距离小于R的对象不多于k个,显然这样的定义更加形象直观。及DB (p,D)都是 二元化定义,一个对象要么是离群点,要么是正常点。
[0005] 是Ramaswamy等人于2000年提出的定义。该定义以对象0与其第k近邻的 距离值作为离群度,因此能够排序得出TOP-n离群点,在一定程度上避免了二元化定义精 度较差的问题。
[0006] C是Angiulli等人于2002年提出的定义。该定义与较为相似,它以对象 〇与其前k近邻的距离之平均值作为离群度,在的基础上进一步提高了精确度,因而成 为离群检测算法研究上应用最广泛的定义。
[0007] 现有的基于距离的三个最常用的离群点定义中,一般认为叱=>具有最高的检测 准确率,但仍然不够理想,适用数据集也有局限性。

【发明内容】

[0008] 本发明所要解决的技术问题在于提供一种能够增大数据集适用范围并能够提高 检测准确率的全局离群点检测算法。
[0009] 本发明提供了一种基于k甚近邻的高准确率全局离群点检测算法,包含以下步 骤:
[0010] 步骤Sl :将数据集D以分块方式进行检测,被检测的每一块数据称为一个数据块, 数据块的每个对象与其(m+k)近邻距离都初始化为最大值;
[0011] 步骤S2 :用数据集D的每个对象与第一个数据块的每个对象计算距离,并更新第 一个数据块中每个对象的(m+k)近邻,实时计算每个对象的离群度,近邻数量小于m+k个 时,离群度置为无穷大,离群度小于初始阈值c的就从该数据块排除;所述每个对象的离群 度为该对象与其第m+1至m+k近邻的距离之和;
[0012] 步骤S3 :处理完第一个数据块后,将第一个数据块中未被排除的对象按离群度从 大到小排序,取前η个对象加入TOP η离群点,并更新阈值c ;
[0013] 步骤S4 :用数据集D的每个对象与第二个数据块的每个对象计算距离,并更新第 二个数据块中每个对象的(m+k)近邻,实时计算每个对象的离群度,近邻数量小于m+k个 时,离群度置为无穷大,离群度小于阈值c的就从该数据块排除;
[0014] 步骤S5 :处理完第二个数据块后,若第二个数据块中未被排除的对象的离群度大 于TOP η离群点中的离群度,则更新TOP η离群点,并更新阈值C ;
[0015] 步骤S6 :对于第i个数据块,i = 3、4、5……,重复步骤S4-S5 ;直至所有的数据块 都处理完,输出TOP η离群点。
[0016] 进一步地,所述步骤S2中初始阈值c设为0。
[0017] 进一步地,步骤S3和步骤S5中,在更新阈值c时,以所述TOP η离群点中第η个 离群点的离群度作为阈值c的值。
[0018] 本发明与现有技术相比,有益效果在于:本发明提供的基于k甚近邻的高准确率 全局离群点检测算法,在计算某对象的离群度时,是先去掉该对象的m最近邻,再计算该对 象与其k最近邻的距离之和,这样就更容易检测出密集离群点了,同时也能兼顾到稀疏离 群点的检测,增大了数据集适用范围;同时采用本发明提供的全局离群点检测算法也提高 了检测准确率;另外,通过设置阈值来提前排除非离群点,节省了内存空间。
【附图说明】
[0019] 图1是本发明实施例提供的基于k甚近邻的高准确率全局离群点检测算法流程 图。
【具体实施方式】
[0020] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。
[0021] 本发明计算某对象的离群度是:该对象到其第m+1到第m+k个近邻的距离之和。
[0022] 下面介绍一种基于k甚近邻的高准确率全局离群点检测算法:
[0023] 直接计算数据集中所有对象的m+k个近邻,然后计算每个对象p的离群度(即p 与其第m+1至m+k近邻的距离之和),排序得TOP η个,即得TOP η离群点。
[0024] 这种实现方式的优点是简单,缺点是消耗的内存空间非常大。
[0025] 事实上,对于一个对象来说,搜索最近邻的过程,肯定是越搜索,"临时"离群度(实 时计算得到的离群度)越来越低,因为不断地有更近的近邻被找到;所以一旦某个对象的 "临时"离群度小于阀值c,它就不再可能是离群点了,因为继续搜索计算下去的话,它的离 群度只会更小,更不可能是离群点;算法依据这一点来用阀值c提前排除非离群点。
[0026] 下面介绍本发明提供的一种基于k甚近邻的高准确率全局离群点检测算法,所述 算法具体包含以下步骤:
[0027] 步骤Sl :将数据集D以分块方式进行检测,被检测的每一块数据称为一个数据块, 数据块的每个对象与其(m+k)近邻距离都初始化为最大值;
[0028] 步骤S2 :用数据集D的每个对象与第一个数据块的每个对象计算距离,并更新第 一个数据块中每个对象的(m+k)近邻,实时计算每个对象的离群度,近邻数量小于m+k个 时,离群度置为无穷大,离群度小于初始阈值c (初始阈值c设为0)的就从该数据块排除; 所述每个对象的离群度为该对象与其第m+1至m+k近邻的距离之和;
[0029] 步骤S3 :处理完第一个数据块后,将第一个数据块中未被排除的对象按离群度从 大到小排序,取前η个对象加入TOP η离群点,并更新阈值c ;
[0030] 步骤S4 :用数据集D的每个对象与第二个数据块的每个对象计算距离,并更新第 二个数据块中每个对象的(m+k)近邻,实时计算每个对象的离群度,近邻数量小于m+k个 时,离群度置为无穷大,离群度小于阈值c的就从该数据块排除;
[0031] 步骤S5 :处理完第二个数据块后,若第二个数据块中未被排除的对象的离群度大 于TOP η离群点中的离群度,则更新TOP η离群点,并更新阈值c ;
[0032] 步骤S6 :对于第i个数据块,i = 3、4、5……,重复步骤S4-S5 ;直至所有的数据块 都处理完,输出TOP η离群点。
[0033] 所述步骤S3和步骤S5中,在更新阈值c时,以所述TOP η离群点中第η个离群点 的离群度作为阈值c的值。
[0034] 下面介绍采用上述算法搜索TOP η离群点的具体实施例:
[0035] 某一维数据集包含的对象是:
[0036] 3,1,4,15,9, 2,6, 5, 35, 7,97,93, 23,84,62
[0037] 分为三个数据块,每个数据块包含5个对象:
[0038] 第一个数据块:3,1,4,15,9
[0039] 第二个数据块:2,6,5,35,7
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1