一种基于联合密度与角度的异常点和边缘点检测方法与流程

文档序号:12906501阅读:329来源:国知局
一种基于联合密度与角度的异常点和边缘点检测方法与流程
本发明涉及数据检测领域,尤其涉及一种基于联合密度及角度的异常点和边缘点检测方法。
背景技术
:传统的聚类、分类和模式识别等技术旨在找到通用模式,而特殊点的检测,包括边缘点和异常点,通常用于识别数据中有效的、有趣的及有潜在价值的模式。与检测正常点相比,特殊点检测通常是一项更有意义的任务。另外,大部分算法均会受到异常点的影响。如著名的非线性流形学习降维算法isomap本身并没有叙述异常点检测的相关问题,但作者提供的代码中则包括了异常点检测过程。因此,如何正确检测出复杂空间的异常点是一个亟待解决的现实问题,是数据预处理中的一项重要任务。国内外研究人员从不同技术角度提出了各种检测算法。从判定异常点的方法上可分为全局模型和局部模型。全局模型针对所有观测点作二值判断,以判断当前观测点是否为异常点。而局部模型一般赋予观测点某种测度值(如角度变化因子),用于估计该点属于异常点的程度。根据是否需要数据标签信息可分为监督、半监督和无监督算法。目前,大多数算法通常采用基于统计(statistical-based)、距离(distance-based)、邻居或密度(density-based)、聚类(clustering-based)或偏离(deviation-based)5类浅层技术手段。基于距离的方法因几何意义清楚是当前使用最普遍的方法。该方法以距离为测度,把没有“足够多”邻居的点判定为异常数据,拓广了基于统计方法的不一致性检验思想。较经典的方法如knorr和ng提出的distance-based异常点db(ε,d)方法。如果数据集中至少ε×100%的点到当前数据点的距离大于d,则判定为异常点。该方法对参数ε和d有较大的依赖性。针对相同的数据集,采用不同的参数值,可导致性能的差异较大。以及后来基于距离的邻居方法,也具有类似参数问题。特别是在高维空间中,基于距离的度量可分性较差,判定公示如下:其中,m为数据的维度,distmax和distmin分别为当前点到其最远邻居和最近邻居的距离。随着m的增大,上式将趋于零。因此距离测度处理普遍存在的高维空间数据具有或多或少的不适应性。针对该问题,德国慕尼黑大学hans-peterkriegel教授提出了基于角度的异常点检测(angle-basedoutlierdetection,abod)算法。该方法一定程度上解决了上述问题,同时又引入了新的邻居关系问题。密度类方法通过不同的密度估计策略计算数据的密度。如果数据点所在的区域密度较低,则把当前点判定为异常点,反之则为正常点。该类方法通常采用局部异常因子(localoutlierfactor,lof)判定异常点,如lof值越大,当前点成为异常点的可能性越大。较经典的方法如lof方法、inflo方法、逆knn方法等。局部模型摈弃了全局模型非此即彼的绝对观念,更符合实际需求。然而大多数密度方法计算复杂度较高,在很大程度上依赖于距离测度,且需要确定较多的参数如最近邻居个数、局部区域半径等。当数据集中各簇的密度差异较大,尤其高维数据分布较稀疏时,绝大多数密度类方法性能会变的较差。kriegel于2008年提出了基于角度的异常点检测算法(abod),该算法不依赖于参数选择问题,且在一定程度上缓解了维数灾难问题。然而,abod算法仅考虑当前点与邻居的关系,而没考虑其邻居之间的更多关系,导致该算法容易识别到错误的异常点。也有通过获取标签信息即先验信息来确定边缘点的,但是有些应用环境无法获取先验信息,从而限制了算法的应用范围。以上大多数经典异常点检测算法在特定条件或特定领域下效果较好,当数据的维度较高,这些算法的效果并不理想,泛化能力较弱。目前大多数的异常点检测算法仅仅考虑数据的单一特征如密度、角度等检测异常,针对较复杂数据集存在检测算法的性能不稳定性的问题。因此,如何提高异常点和边缘点检测算法的性能和稳定性成为数据检测领域亟需解决的问题。技术实现要素:针对现有技术之不足,本发明提出一种基于联合密度及角度的异常点和边缘点检测方法,所述方法包括如下步骤:步骤1:输入数据集x∈rm′n,其中x为m′n的数据集,x的每一列表示一个数据样本,即x包括n个样本,每个样本具有m维度,xi∈rm,i∈{1,2,…n},m表示样本维度,n表示所述数据集的样本个数;步骤2:设定计算联合角度信息时所需要的邻居个数k=floor(5log10(n));步骤3:计算数据点的局部密度信息ρ=[ρ1,ρ2,…ρn],针对每一个样本xi,根据公式(1)计算其对应的局部密度值为ρi:其中,dij表示样本xi与样本xj之间的欧式距离,dc为cutoff距离,式(1)根据dij与dc的距离关系,统计当前样本点xi的邻居个数,作为xi的局部密度值ρi;步骤4:计算联合角度信息ζ=[ζ1,ζ2,…ζn],针对每一个样本点xi,计算其对应的联合角度信息值ζi,所述联合角度信息值ζi包括第一局部角度测度值δi和第二局部角度测度值τi,计算所述联合角度信息值ζi包括以下步骤:步骤41:数据处理,针对每一个数据点xi,i∈1,2,…n,选取其k个邻居,做归一化和去耦性操作,记作xi,具体操作如式(2)所示:令则步骤42:计算第一局部角度测度值δi,样本xi的δi值计算方式如下式所示:步骤43:计算第二局部角度测度值τi,对每一个样本xi以及其对应的xi,利用均值方法,计算xi的近似法向量vi,即vi=mean(xi);根据法线与角度的关系,按式(3)计算τi:步骤44,对每一个数据样本xi,i∈{1,2,…n},由式ζi=δi/τi计算联合角度值;步骤5:判定特殊点,步骤如下:步骤51:确定门限值γ,步骤52:针对样本点xi,如果ρi/γ<min(mean(ρ)/γ,max(ζ)),则xi被判定为异常点;对每一个样点,重复执行步骤52,判定其为异常点或正常点。根据一种优选的实施方式,步骤3中计算局部密度值的方法包括:步骤31:计算所述数据集x中任意两个样本之间的欧式距离,针对数据集x,通过计算后得到距离矩阵d∈rn′n,其中所述距离矩阵d中的元素dij表示样本xi与样本xj之间的欧式距离;步骤32:设置cutoff距离dc:把所述距离矩阵d中的n′n个元素,按其值的大小从小到大进行排序为一个向量sd。设置dc=sd(p),即选取sd向量中的第p个元素值,其中p=round((n-1)*n*percent/100);步骤33:根据dij与dc的距离关系,统计当前样本点xi的邻居个数,作为xi的局部密度值ρi,根据式(1)可知当dij小于dc时,则认为xj是当前点xi的邻居,反之则不是其邻居。根据一种优选的实施方式,所述方法还包括验证特殊点,包括:步骤6:可视化显示,对所述数据集x∈rm′n,当1≤m≤3时,在可视化空间中标注显示所判断定的特殊点,以判定特殊点是否在数据集的边缘位置上;对所述数据集x∈rm′n,当m>3时,采用经典降维方法把所述数据集x降到可视化空间,再进行标注显示。本发明的有益效果在于:1、本发明基于边缘点和异常点具有较低的局部密度和较小的角度方差变化的思想,结合数据集的角度与密度的联合信息,提出了一种较稳定的异常点与边缘点的检测方法,提高了边缘点与异常点检测的性能,可较好地反映数据集的特征,并且能够检测出噪音数据,更好的去除噪音,克服了现有技术在复杂数据集中特殊点检测的效果不好和不稳定的缺点。2、本发明无需从未知的环境中预先获取先验信息,克服了现有技术需要获取先验信息的不足,使得算法的应用范围更广。附图说明图1是本发明检测特殊点的方法流程图;图2是步骤41数据处理后的效果图;图3是对二维flame数据用本发明方法进行特殊点判定的效果图;图4是对二维xor数据集用本发明方法进行特殊点判定的效果图;图5是对二维banana数据集用本发明方法进行特殊点判定的效果图;图6是对具有噪音的二维panelb数据集用本发明方法进行特殊点判定的效果图。具体实施方式下面结合附图进行详细说明。本发明中的数据集是指:是一个m′n维的矩阵,其中每一列表示样本。本发明中的异常点是指:远离其它点而被引起怀疑的观测点,认为它来自不同的数据产生机制。本发明中的边缘点是指:位于较高密度分布的数据集的边缘上的点。本发明中的特殊点包括边缘点和异常点。本发明中的邻居是指:在某种测度上与当前点相似的点。本发明中的cutoff距离的含义是:临界值。本发明中的局部密度值ρ的含义是:统计到当前点的距离小于临界值的邻居的个数。本发明中的联合角度值ζi的含义是:δi/τi两种角度测度的比值。本发明中的第一局部角度值的含义是:δi是邻居向量内积的方差变换。方差变换越小,说明其为异常点的可能性越小。本发明中的第二局部角度值的含义是:τi是统计邻居向量与法线的内积正值的个数。如果内积值为正则夹角为锐角,刚说明在夹角测度上为邻居。第二局部角度值越大,说明当前点为异常点的可能性越小。本发明中的联合测度的含义是:方差变换较小且夹角邻居较多共同决定。δi与1/τi均较小时,当前点为异常点的可能性越大。本发明基于边缘点和异常点具有较低的局部密度和较小角度方差变化的思想,结合数据集的角度与密度的联合特征,利用联合测度去判定样本点属于异常点和边缘点的程度,通过设置门限值γ自动确定特殊点,提出一种较稳定的异常点和边缘点检测方法,提高了边缘点和异常点检测的性能,更好地反映数据集的特征。图1是本发明检测特殊点的方法流程图。如图1所示,本发明一种基于联合密度及角度的异常点和边缘点检测方法,所述方法包括如下步骤:步骤1:输入数据集x∈rm′n,矩阵x中的每一列表示一个样本,即x包括n个样本,每个样本具有m维度,即xi∈rm,i∈{1,2,…n}。每一个样本对应m维空间中一个点。如一个3维的列向量,对应3维空间中的一个点,即这个点是可以用(x,y,z)坐标来表示。另外,一幅l′k大小的图像可以转换成(l′k)维空间中的一个数据点,数据点是指任何数据来被电脑处理前都会都被数值化,转成不同维度的列向量存在计算机上,进而可以看作高维空间中的点。即数据集x可以是文本、数值图像等。其中x表示m′n的数据集矩阵x=(x1,x2,x3...xn),其每一列表示一个数据样本xi∈rm,i∈{1,2,…n},即x包括n个样本,每个样本具有m维度,r表示数据空间,m表示样本维度,n表示数据集的样本个数。例如:10张20′20大小的图片,可把每一张图像处理成一个400′1大小的列向量,则10张图像构成的数据集x∈r400′10,x就是一个400′10大小的矩阵。步骤2:设定计算联合角度信息时所需要的邻居个数k=floor(5log10(n))。floor(·)函数是向下取整的函数,例如floor(5.4)结果为5。与人工经验设置邻居个数相比,本发明自动设置邻居个数的方法更好的结合了数据的分布特点,适应性更好。步骤3:计算数据点的局部密度信息ρ=[ρ1,ρ2,…ρn],针对每一个样本点xi,根据公式(1)计算其对应的局部密度值为ρi;其中,dij表示样本xi与样本xj之间的欧式距离,dc为cutoff距离,式(1)根据dij与dc的距离关系,统计当前样本点xi的邻居个数,作为xi的局部密度值ρi。其中,z=dij-dc。现有的密度类检测算法在很大程度上需要确定较多的参数如最近邻居个数、局部区域半径等。当数据集中各簇的密度差异较大,尤其高维数据分布较稀疏时,绝大多数密度类方法性能会变的较差。本发明的技术方案在计算局部密度信息时仅采用唯一参数dc,尽可能减少外界影响,进一步优化了检测性能。步骤31:计算数据集中任意两个样本之间的欧式距离,针对数据集x,通过计算后会得到一个距离矩阵d∈rn′n,其中距离矩阵d中的元素dij表示样本xi与样本xj之间的欧式距离。i的取值范围为1到n,j的取值范围为1到n。步骤32:设置cutoff距离dc:把距离矩阵d中的n′n个元素,按其值的大小从小到大进行排序为一个向量sd。设置dc=sd(p),即选取sd向量中的第p个元素值。其中p=round((n-1)*n*percent/100),一般设置percent为0.2。round(·)为四舍五入取整函数。步骤33:根据dij与dc的距离关系,统计当前样本点xi的邻居个数,作为xi的局部密度值ρi,根据式(1)来计算局部密度值ρi。根据式(1)可知当dij小于dc时,则认为xj是当前点xi的邻居,反之则不是其邻居。步骤4:计算联合角度信息ζ=[ζ1,ζ2,…ζn],针对每一个样本点xi,,计算其对应的联合角度值ζi,联合角度值ζi包括第一局部角度值δi和第二局部角度值τi,计算联合角度值ζi包括以下步骤:步骤41:数据处理,针对每一个数据点xi∈rm,i∈1,2,…n,选取其k个邻居,做归一化和去耦性操作,记作xi,具体操作如下式所示:令则日前大部分检测方法在很大程度上依赖于距离测度,特别是在高维空间中,基于距离的度量可分性较差。为了消除距离的影响,这里采用归一化和去耦性预处理方法,尽可能的消除距离对角度测度的影响。进行步骤41后,优点是把xi的k个邻居拉到一个单图位圆上,即任意到xi的距离为1,去掉了距离的影响。图2是步骤41数据处理后的效果图。从图2可直观的看出,xi的所有邻居到xi的距离均为1。步骤42:计算第一局部角度值δi,样本xi的δi值计算如下式所示:因所以因此,第一局部角度值的测度可以转化为内积测度。其中θij表示第i个样本与第j个样本之间的夹角。xit是指公式(2)中的xi的转置,var(·)函数是取方差的函数。一般情况下,δi值越小,xi成为边缘点的可能性越大。然而,某些特殊的边缘点,如位于两类之间的部分点,则具有较高的δi。因为处于两类的中间的点,当k取值较大时,其邻居可以选自两个类,而不是单独的一类,这样就造成其角度变化较大。为了在一定程度上解决将两数据类之间的部分点误判为正常点的问题,本发明提出了联合角度测度检测的方法。步骤43:计算第二局部角度值τi,对每一个样本xi以及其对应的xi,利用均值方法,计算xi的近似法向量vi,即vi=mean(xi)。根据法线与角度的关系,按式(3)计算τi:步骤44:对每一个数据样本点xi∈rm,i∈{1,2,…n},由式ζi=δi/τi计算联合角度值。本发明采用两种角度测度值使算法的鲁棒性更好,δi是基于当前点与邻居向量内积的方差信息,τi是根据向量与法线的夹角值来定义的。步骤5:判定异常点与边缘点,包括以下步骤:步骤51:确定门限值γ,步骤52:针对样本点xi,如果ρi/γ<min(mean(ρ)/γ,max(ζ)),则xi被判定为异常点;对每一个样本点,重复执行步骤52,判定其为异常点或正常点。验证特殊点方法如下:步骤6:可视化显示,对所述数据集x∈rm′n,当1≤m≤3时,在可视化空间中标注显示所判断定的特殊点,以判定特殊点是否在数据集的边缘位置上;对所述数据集x∈rm′n,当m>3时为高维数据,采用经典降维方法把数据集x降到可视化空间,再进行标注显示。目前的降维算法主要有主成分分析算法(principalcomponentanalysis,pca)、局部线性嵌入(locallylinearembedding,lle),普拉斯特征映射(laplacianeigenmaps,le)。验证特殊点的方法还可以通过判定已经查找到的特殊点是否可以提高聚类或分类算法的性能以验证特殊点判定方法的可行性。找出特殊点和边缘点以后,则可以进行数据分析,以分析数据集中有潜在价值的模式,即该类数据具有的特征,如处于正常人与肝脏疾病患者之间的将要得病而没有得病的人,分析这类特殊人群将有助于研究肝脏疾病的特征,且处于肝脏病边缘的该类人群更应该这引起大家的关注。所以分析该类特殊点具有非常重要的研究意义。为了进一步说明本发明提出的bpdad算法检测数据集中特殊点的效果,采用不同数据集进行测试试验。数据集中的点均用空心的小圆圈显示,对检测出的特殊点,用*号将其标注为实心的点。图3是对二维flame数据集用bpdad算法检测特殊点的结果图,如图3所示,灰色实心标注的点为用本发明提出的bpdad算法检测的特殊点。图4是对二维xor数据集用bpdad算法检测特殊点的结果图,如图4所示,灰色实心标注的点为用bpdad算法检测的特殊点,从图4中可以直观的看出,检测到的特殊点均位于数据集的边缘位置,检测效果较好。图5是对二维banana数据集用bpdad算法检测特殊点的结果图,如图6所示,的点为用bpdad算法检测的特殊点,从图5中可以直观的看出,检测到的特殊点均位于数据集的边缘位置,检测效果较好。图6是对具有噪音的二维panelb数据集用bpdad算法检测特殊点的结果图。如图6所示,灰色实心的点为用bpdad算法检测的特殊点和噪音数据,从图6中可以直观的看出bpdad算法不仅能够检测到位于数据集边缘的特殊点,同时能够有效的去除数据集中的噪音数据。为了客观的说明本发明提出的bpdad(boundarypointsdetectionwithangleanddensity)算法能够更精确的识别出异常点和特殊点,对一样的数据分别用beps(border-edgepatternselectionethod)算法、idd算法、iddwhole算法进行特殊点检测,并用k-means和smce(sparsemanifoldclusteringandembedding)聚类算法进一步验证bpdad算法的检测特殊点的有效性。实验数据如表1所示。表1method#removedboundarypointsclusterp(%)kmeans70.22beps43kmeans68.89idd0kmeans70.22iddwhole053.37bpdad95kmeans73.49smce70.22idd0smce69.10beps43smce62.96bpdad95smce63.86表1的试验数据为高维wine数据,表1中“removedboundarypoints”表示用对应方法检测出的特殊点个数,表1中“cluster”表示采用的聚类算法,如k-means或smce聚类算法,表1中“p(%)”表示聚类精度。p(%)的值越高,表示检测特殊点的有效性越好。需要注意的是,上述具体实施例是示例性的,本领域技术人员可以在本发明公开内容的启发下想出各种解决方案,而这些解决方案也都属于本发明的公开范围并落入本发明的保护范围之内。本领域技术人员应该明白,本发明说明书及其附图均为说明性而并非构成对权利要求的限制。本发明的保护范围由权利要求及其等同物限定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1