一种基于快速随机密集支撑点的度量空间离群检测方法与流程

文档序号:17489481发布日期:2019-04-23 20:19阅读:190来源:国知局
一种基于快速随机密集支撑点的度量空间离群检测方法与流程

本发明涉及数据集检测领域,尤其涉及一种基于快速随机密集支撑点的度量空间离群检测方法。



背景技术:

度量空间离群检测适用于大多数数据类型,图像、音视频、蛋白质等复杂数据类型,现有技术中近似的技术有adpod方法。adpod方法,即基于快速随机密集支撑点的离群检测算法,随机选取若干候选支撑点,然后每个候选支撑点都与全局数据集计算距离,按自适应截断距离计算每个候选支撑点的密度,排序得出密度最大者,作为支撑点。离群检测算法则基于该支撑点建立简单索引,从远到近检测离群点。

但是adpod方法存在以下缺陷:

1、对于每个候选支撑点都与全局数据集计算距离,计算量较大,不适用于较大的数据集,特别是无法一次性调入内存的数据集;2、对于截断距离的确定依赖于候选支撑点与全局数据集的距离计算,计算开销较大;3、单独使用密集支撑点,对减少距离计算次数的效果较差。



技术实现要素:

本发明的目的在于针对背景技术中的缺陷,提出一种基于快速随机密集支撑点的度量空间离群检测方法,以解决背景技术中的缺陷问题。

为达此目的,本发明采用以下技术方案:

一种基于快速随机密集支撑点的度量空间离群检测方法,包括以下步骤:

步骤a:选取快速随机密集支撑点,得到支撑点的最大密度值;

步骤b:建立度量空间索引;

步骤c:对数据集进行离群检测,得到离群点集。

优选的,在步骤a中,选取快速随机密集支撑点的具体步骤如下:

步骤a1:在数据集中随机选取m个候选支撑点,组成候选支撑点集,m为数据集规模的0.1%-1%;

步骤a2:计算候选支撑点集中,每个候选支撑点与其他m-1个候选支撑点的距离并存储为距离信息,保存其中的最大距离值maxdistance及该最大距离相对应的两个候选支撑点,将其命名为第一边缘支撑点pe1和第二边缘支撑点pe2;

步骤a3:每一个候选支撑点与其他m-1个候选支撑点的距离之和,称为稀疏度;

计算第一个候选支撑点与其他m-1个候选支撑点的距离之和,将其作为第一稀疏度,并将其赋值于当前最小稀疏度,则当前最小稀疏支撑点为第一个候选支撑点(拥有当前最小稀疏度的候选支撑点为当前最小稀疏支撑点);

步骤a4:从第二个候选支撑点开始,依次计算每个候选支撑点与其他m-1个候选支撑点的距离之和,设当前计算的是第i个候选支撑点(2≤i≤m),则赋值为第i稀疏度,并与当前最小稀疏度做比较,若第i稀疏度小于当前最小稀疏度,则将第i稀疏度赋值给当前最小稀疏度,将当前最小稀疏支撑点重新赋值为该候选支撑点,即第i稀疏度对应的候选支撑点;

将计算第i稀疏度时,是将某个候选支撑点与其他m-1个候选支撑点的距离进行累加,并将每累加一次得到的第i稀疏度实时与当前最小稀疏度作比较,若出现第i稀疏度大于或等于当前最小稀疏度,则停止计算该候选支撑点的稀疏度;若出现第i稀疏度小于或等于当前最小稀疏度,则继续累加该候选支撑点与后续其他候选支撑点的距离然后再次实时比较;

步骤a5:当m个候选支撑点都完成步骤a4之后,取具有当前最小稀疏度的当前最小稀疏支撑点作为密集支撑点pm3并将其输出。

优选的,在步骤b中,建立度量空间索引的具体步骤如下:

步骤b1:将整个数据集的所有对象与第一边缘支撑点、第二边缘支撑点和密集支撑点计算距离,并保存距离信息命名为支撑点空间;

步骤b2:将整个数据集的所有对象,按照其与密集支撑点的距离从大到小进行排序,形成支撑点索引。

优选的,基于快速随机密集支撑点的度量空间离群检测方法还包括计算终止规则和支撑点空间剪枝规则,根据终止规则和支撑点空间剪枝规则判断离群检测的结果;

计算终止规则的步骤如下:

首先根据公式一:c=0.2*maxdistance计算截断距离,在公式一中,c表示截断距离,maxdistance表示第一边缘支撑点pe1和第二边缘支撑点pe2的最大距离值;

根据公式二:d(x,pm3)+d(pm3,nnk(pm3,d))<c,计算终止规则,在公式二中,d为数据集,k为密集度阈值,pm3为密集支撑点,x为离群检测过程中正在检测的对象,d()为距离函数,nnk(p,d)表示对象p在数据集d中的第k最近邻;

当d(x,pm3)+d(pm3,nnk(pm3,d))<c,则终止离群检测并得到正确结果。

优选的,根据支撑点空间剪枝规则判断离群检测的结果包括:

根据公式三排除非c近邻的对象;

若公式三:||dist(xt,p)-dist(xj,p)||>c,则对象xj不为对象xt的c近邻;

在公式三中,p为第一边缘支撑点pe1、第二边缘支撑点pe2及密集支撑点pm3之中的任一个支撑点;xt和xj表示离群检测过程中正在检测的对象,dist()表示距离函数,c表示截断距离。

优选的,在步骤c中,对数据集进行离群检测的具体步骤如下:

步骤c1:读取支撑点索引,并划分支撑点索引序列为数据块,得到离群检测的顺序;

步骤c2:将离群点集初始化为空集,按照步骤c1中的离群检测的顺序,逐数数据块读取整个数据集;

步骤c3:若所有数据块都已检测完毕,则输出离群点检测结果,即离群点集;

步骤c4:若存在未检测的数据块,则按照离群检测的顺序检测下一个数据块,并且在该数据块中,判断其当前正在检测的对象的终止规则是否成立;

若终止规则成立,则输出离群点集;

若终止规则不成立,则该数据块每个对象相对整个数据集以螺旋顺序搜索c近邻,当发现该数据块中的某个对象的密集度高于密集度阈值k时,则将该对象从该数据块移除;若该数据块的该对象的支撑点空间剪枝规则成立,则直接将该对象从该数据块中移除;

当检测完该数据块中所有对象后,将符合要求的对象加入离群点集中。

有益效果:

1.本发明可快速选取到质量较好的支撑点(密集支撑点和边缘支撑点)。

2.本发明可快速计算得截断距离,有利于缩短程序运行时间。

3.本发明同时使用多个剪枝规则尽量排除非c近邻和非离群点,从而减少距离计算次数。

4.建立索引时间开销较小,索引加速效果好。

附图说明

图1是本发明的基于快速随机密集支撑点的度量空间离群检测整体流程图;

图2是本发明的离群检测的细节流程图。

具体实施方式

下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。

本实施例中的名词介绍:

截断距离:用来衡量近邻数量多少的距离范围,在本发明中以字母c表示。

c近邻:对象p的c近邻表示与p距离小于等于c的对象(近邻)。

密集度:一个对象的密集度表示与其距离在“截断距离”的范围内有多少个近邻。密集度可反映离群的程度,因为密集度越小,意味着该对象所在区域越稀疏,离群度就越大。

数据块:离群检测的一个单位,由数据集中的若干个对象组成,例如常用1000个对象作为一个数据块。

密集度阈值:确定是否离群点的密集度值,密集度小于该值则为离群点,否则不是离群点。在本发明中以字母k表示。

离群点:c近邻数量小于等于密集度阈值k的对象,或者密集度小于等于密集度阈值k的对象。

螺旋顺序:例如有一个索引序列1、2、3、4、5、6、7、8、9、10,如果以5为起点,它的螺旋顺序就是5、4、6、3、7、2、8……,或者5、6、4、7、3、8、2……,就是一前一后、依此类推的意思。

本实施例的一种基于快速随机密集支撑点的度量空间离群检测方法,如图1所示,本发明分为三部分:

步骤a:选取快速随机密集支撑点,得到支撑点的最大密度值;

步骤b:建立度量空间索引;

步骤c:对数据集进行离群检测,得到离群点集。

各部分具体流程分别如下:

步骤a:快速随机密集支撑点的选取方法:

步骤a1:随机选取m个候选支撑点,组成候选支撑点集。m通常可设置为100或为数据集规模的0.1%-1%。

步骤a2:计算候选支撑点集之中,每个候选支撑点(例如p10)与其它候选支撑点(例如p11)的距离(即候选支撑点两两之间的距离)并存储距离信息d(p10,p11),保存其中的最大距离值maxdistance及该距离相应的两个候选支撑点pe1与pe2,即第一边缘支撑点和第二边缘支撑点。显然,每个候选支撑点共与m-1个其它候选支撑点计算距离。

步骤a3:计算第一个候选支撑点(设为p1)与其它m-1个候选支撑点的距离之和,作为其稀疏度sv1。并令当前最小稀疏度svm=sv1。令当前最小稀疏支撑点pm3=p1。

步骤a4:对于从第二个候选支撑点开始的每个候选支撑点pa,在与其它m-1个候选支撑点距离逐个累加计算第i稀疏度sva的过程中,实时与当前最小稀疏度svm比较,如果sva≥svm则停止计算该候选支撑点的稀疏度(因为如果继续累加下去其值将进一步增大,不可能成为具有最小稀疏度的支撑点了)。如果sva≤svm则继续累加计算其稀疏度。当计算完该候选支撑点的稀疏度时,如果仍有sva<svm则令svm=sva及pm3=pa。

步骤a5:当每个候选支撑点都完成步骤a4之后,即计算完所有候选支撑点的稀疏度之后,取具有当前最小稀疏度的候选支撑点pm3作为密集支撑点输出,换言之,pm3具有最大密度值。

步骤b:建立度量空间索引

步骤b1:将整个数据集的所有对象与上述选取到的3个支撑点(包括第一边缘支撑点pe1、第二边缘支撑点pe2及密集支撑点pm3)计算距离,并保存这些距离信息(称为支撑点空间)。

步骤b2:将整个数据集按与密集支撑点pm3的距离从大到小排序,形成索引。

步骤c:离群检测

(1)剪枝规则

首先令截断距离c=0.2*maxdistance。而密集度阈值通常可设置为数据集规模的0.1%。

假设给定d为数据集,k为密集度阈值(即与自身距离c1范围内的对象数量小于k个则为离群点),p为第一边缘支撑点pe1、第二边缘支撑点pe2及密集支撑点pm3之中的任一个支撑点,x为离群检测算法正在检测的对象,d()为距离函数,nnk(p,d)表示对象p在数据集d中的第k最近邻。

终止规则:

如果d(x,pm3)+d(pm3,nnk(pm3,d))<c;

那么离群检测过程可以终止并得到正确的结果。

终止规则和支撑点空间剪枝规则都是依据距离三角不等性推导而得,而距离三角不等性是度量空间的一个特点。m的值和密集度阈值k的设置依据是离群点占数据集的比例较少,约0.1%-1%,即本实施例适用于离群点占比例0.1%-1%或更低的情况。边缘支撑点的命名,因为候选支撑点集之中,两两之间最大距离对应的两个候选支撑点,位于边缘。

支撑点空间剪枝规则:排除非c近邻的对象。

对于3个支撑点的任意一个支撑点p,如果

||dist(xt,p)-dist(xj,p)||>c

那么对象xj不可能为对象xt的c近邻。

步骤c1:读取支撑点索引,并划分支撑点索引序列为数据块,得到离群检测的顺序;

步骤c2:将离群点集初始化为空集,按照步骤c1中的离群检测的顺序,逐数数据块读取整个数据集;

步骤c3:若所有数据块都已检测完毕,则输出离群点检测结果,即离群点集;

步骤c4:若存在未检测的数据块,则按照离群检测的顺序检测下一个数据块,并且在该数据块中,判断其当前正在检测的对象的终止规则是否成立;

若终止规则成立,则输出离群点集;

若终止规则不成立,则该数据块每个对象相对整个数据集以螺旋顺序搜索c近邻,当发现该数据块中的某个对象的密集度高于密集度阈值k时,则将该对象从该数据块移除;若该数据块的该对象的支撑点空间剪枝规则成立,则直接将该对象从该数据块中移除;

当检测完该数据块中所有对象后,将符合要求的对象加入离群点集中。

如图2所示,密集度阈值k,截断距离c,数据集d,数据块b表示整个数据集中的其中一个数据块,对象x和对象xj表示数据块b中的对象;

具体说明:

在初始化离群点集和数据块之后,利用选取快速随机密集支撑点的步骤选取密集支撑点和边缘支撑点,即步骤a1-a5。随后依据数据集所有对象与密集支撑点计算距离并按从大到小排序建立索引,并依据数据集所有对象与所有支撑点(包括密集支撑点与边缘支撑点)计算距离并保存距离信息形成支撑点空间,即步骤b1-b2。在检测过程中,首先判断每个数据块的每个对象是否使“终止规则”成立,若成立,则终止整个离群检测过程,输出离群点检测结果。若不成立,则从索引序列上该数据块的中点对象开始,按照螺旋顺序搜索该数据块所有对象的c近邻。在搜索c近邻时,先计算“支撑点空间剪枝规则”是否成立,若成立,则该对象不可能成为被检对象的c近邻,不需要计算其真实距离。实时计算被检对象的当前密集度,如果高于阈值k,从数据块移除对象x。每检测完一个数据块,将该数据块剩下的所有对象加入离群点集。当所有数据块都检测完或者终止规则成立时,结束检测过程,输出离群点集,作为离群检测结果。

以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1