一种基于弹性分布数据集的海量空间数据密度聚类方法与流程

文档序号:11582978阅读:161来源:国知局
本发明涉及移动设备,尤其涉及一种基于弹性分布数据集的海量空间数据密度聚类方法。
背景技术
::聚类分析在空间数据挖掘中扮演重要的角色。空间聚类分析将空间数据按其聚集特性分成若干聚簇,使得位于同一聚簇的数据具有较大的相似性,而位于不同聚簇的数据具有较大的差异性。根据不同的指导思想,可将聚类算法分为基于划分的聚类、基于层次的聚类、基于密度的聚类、基于网格的聚类以及基于特定模型的聚类。经典划分式算法k-means与其改进算法k-medoids,k-means++,通过多次迭代来确定聚簇中心并将数据归类.算法实现简单,但对噪音敏感,对非球形的聚簇的处理效果较差。随着数据规模的激增,传统的聚类算法往往由于数据量过大而无法运行,迫切需要高速、有效、高伸缩的海量数据聚类算法。面向计算机集群gfs,bigtable和mapreduce技术为海量数据的聚类分析提供了思路。作为上述技术的开源实现,hadoop并行计算框架在聚类分析领域被广泛应用。由于追求高吞吐量,基于hadoop-mapreduce框架的并行聚类算法需要多次读写磁盘以存取中间结果,导致算法i/o开销较大,具有较高的延迟,无法用于实时聚类。技术实现要素:本发明为克服上述的不足之处,目的在于提供一种基于弹性分布数据集的海量空间数据密度聚类方法,本方法针对快速挖掘大规模空间数据的聚集特性基,基于“rdd分区--区内并行计算--合并局部结果”思想设计,首先根据数据在空间的分布情况,自动划分网格并分配数据,使得网格内数据量相对均衡,达到平衡运算节点负载的目的;接着,提出一种适用于并行计算的局部密度定义,并改进聚类中心的计算方式,解决了原始算法需要通过绘制决策图判断聚类中心对象的缺陷;最后,通过网格内及网格间聚簇合并等优化策略,实现了大规模空间数据的快速聚类处理。本发明是通过以下技术方案达到上述目的:一种基于弹性分布数据集的海量空间数据密度聚类方法,包括如下步骤:(1)基于数据在空间的分布情况,引入空间网格索引生成基于网格rdd分区:(1.1)利用二叉索引生成空间网格,结合自上向下策略逐层分割空间并构建网格索引,直至生成的子网格边界长度不大于给定的预值;(1.2)采用map-reduce思想,统计各层网格内数据对象的数目,广播索引结构并均分待聚类数据对象到各计算节点,归并网格内数据量信息,得到完整的网格索引结构;(1.3)遍历索引,查找数据量小于给定值的最大网格,根据查找结果生成基于网格编号的key-valuerdd,生成基于网格rdd分区:(2)进行分区内聚类计算:以改进的局部密度定义为依据,在得到的各个分区上并行运行cluster_dp算法确定聚簇中心,使得数据对象具有相同的局部密度;(3)通过网格内及相邻网格间的聚簇合并优化策略进行局部结果合并,完成聚类处理。作为优选,所述空间网格的定义如下:将空间s划分为若干个互不重叠的子区域,则每一区域为一个空间网格,记为g;其中为网格边界端点在第k维数轴上的投影。作为优选,所述相邻网格的定义如下:对于任意存在则称网格g1和g2相邻。作为优选,所述(1.1)具体如下;利用二叉索引生成空间网格,其中,索引的每个节点记录网格的基本信息与网格内数据对象数目,采取自上向下策略逐层分割空间并构建网格索引,将空间二等分,存储生成的子网格信息于网格索引,并访问新生网格,将新生网格再次二等分并存储,直至生成的子网格边界长度不大于给定的预值。作为优选,所述步骤(1.3)具体为:在得到完整索引结构后,遍历索引,查找数据量小于给定值的最大网格,找到后则停止继续往下遍历,得到空间划分的结果.据此结果映射数据对象,生成基于网格编号的key-valuerdd,利用key-valuerdd的mappartitionwithindex函数接口,自动生成基于网格rdd分区。作为优选,所述改进的局部密度的定义为:设ρ′i为数据对象pi的改进局部密度,则有其中,以给定数据对象pi为中心,其半径为dc内的k维空间称为pi的dc邻域.对dc邻域内的数据对象pj,有dist(pi,pj)<dc。作为优选,所述在运行cluster_dp算法时,设计辅助函数γ自动判定聚簇中心,具体如下:已知数据对象的局部密度为ρ′i,其最小高密度距离为δi,则设:其中,max(ρ)*max(δ)为网格内最大局部密度与最小高密度值的乘积;ρi为局部密度,定义为pi的dc邻域内数据对象的数目称为pi的局部密度,记为ρi,公式如下:其中,作为优选,所述的最小高密度距离δi定义为:若pj是所有局部密度高于ρi的数据对象中距离pi最近对象,则称nn(pi)=pj为pi的最近高密度邻居,称δi=dist(pi,pj)为pi的最小高密度距离,定义公式如下:作为优选,所述步骤(3)具体为:通过计算两个簇间的平均局部密度,将聚簇成员标记为核心成员与光晕,其中核心成员为聚簇的中心部分,由高密度点组成,是稳定的数据对象聚集;光晕对应聚簇外围部分,包含低密度数据点,是聚簇的非稳定部分数据的聚集;利用核心与光晕的概念,提出网格间聚簇的合并策略:若邻接网格中靠近网格边界的数据对象分布存在如下两种情况,则需调整数据对象所属聚簇:(a)相邻网格中近边界处存在聚簇核心对象,并且核心对象相互靠近,则合并两个聚簇;(b)两邻接网格的边界处存在光晕对象,则需重新评估光晕点所归属的聚簇。作为优选,所述重新评估光晕点所归属的聚簇的方法为:在光晕对象所在网格的邻接网格中查找密度高于光晕对象的数据对象,并计算满足条件的数据对象到光晕点的距离:若计算得出的最小距离小于当前光晕对象的最小高密度距离,则更新光晕点的最近高密度邻居与最小高密度距离,并根据更新后的最近高密度邻居将光晕对象分配到新的聚簇中。本发明的有益效果在于:本发明方法实现了大规模空间数据的快速聚类处理,克服了聚类中延迟的问题。附图说明图1是本发明方法的流程示意图。具体实施方式下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此:实施例:在本实施例中,设d={p1,p2,...,pn}为待聚类数据集,其所处k维空间区域s为d的计算空间。为k维空间中的数据对象(1≤i≤n),为pi在第k维数轴上的投影。一种基于弹性分布数据集的海量空间数据密度聚类方法产生聚类的主要步骤如图1所示,本发明的实现基于如下基本概念:定义1(dc邻域):以给定数据对象pi为中心,其半径为dc内的k维空间称为pi的dc邻域.对dc邻域内的数据对象pj,有dist(pi,pj)<dc。定义2(局部密度pi):pi的dc邻域内数据对象的数目称为pi的局部密度,记为ρi.有:其中定义3(最小高密度距离δi):若pj是所有局部密度高于ρi的数据对象中距离pi最近对象,则称nn(pi)=pj为pi的最近高密度邻居.称δi=dist(pi,pj)为pi的最小高密度距离.有:定义4(空间网格):将s划分为若干互不重叠的子区域,则每一区域为一空间网格,记为g.其中为网格边界端点在第k维数轴上的投影。定义5(相邻网格):对任意存在则称网格g1和g2相邻。在本实施例中,pclusterdp总体框架pclusterdp利用rdd存储数据,基于“rdd分区-区内并行计算-合并局部结果”思想设计,借助分割s实现rdd分区与并行。算法总体框架如下所示:input:d:asetofpointstobeclustereds:computingspaceofddc:auserinputradiusdistancemaxpointingrid:aparameterdeterminethemaxnumberofpointsinagridoutput:c:asetofclustersmethod:/*partitioningphase*/datasetrdddexecuteaspacepartitionalgorithmtosplitssintogridsgetagridsetgusingthesplitresultforeachpointindatasetrdddomapeachpointintocorrespondgbelongtogendforgenerateapartitionedpointsrddbasedonassignedpoints/*paraellcomputingphase*/mappartition:foreachpartitioninpartitionedpointsrdddoexecuteamodifiedcluster_dpalgorithmtogeneratelocalclustersetc’endmap/*mergeingphase*/executemergelocalclustersalgorithmonc’tobuildfinalclustereddatac映射数据对象到分割后的空间网格g,生成基于网格编号的key-valuerdd。利用mappartition接口,根据网格编号划分rdd,分配同区的数据对象到相同计算节点。各节点独立运行密度聚类算法得到基于网格分区的局部簇。随后,合并相邻网格中局部簇,生成最终聚类结果。在本实施例中,pclusterdp算法引入空间网格索引,保证网格内数据量相对均衡,利用二叉索引生成空间网格。索引的每个节点记录网格的基本信息(grid)与网格内数据对象数目(count),树根节点存储s与d。算法采取自上向下策略,逐层分割空间并构建网格索引。将s二等分,存储生成的子网格信息于网格索引。随后访问新生网格,将其再次二等分并存储,直到生成的子网格边界长度小于等于给定的预值。对固定不变的s,网格索引可保存并重复使用,节省构建索引的时间,提高算法效率。得到各层网格的基本信息后,统计各层网格内数据对象的数目。统计算法采用map-reduce思想设计以提高运算速度。广播索引结构并均分待聚类数据对象到各计算节点。各节点各自统计网格内的数据.然后归并网格内数据量信息。具体空间划分算法如下:得到完整索引结构后,遍历索引,查找数据量小于给定值的最大网格,一旦找到则停止继续往下遍历,得到空间划分的结果.据此结果映射数据对象,生成基于网格编号的key-valuerdd。利用key-valuerdd的mappartitionwithindex函数接口,自动生成基于网格rdd分区。在本实施例中,为平衡运算速度与计算结果精度,实现并行计算,定义如下改进的局部密度计算方式。定义4(改进的局部密度ρ′i):设ρ′i为数据对象pi的改进局部密度,有公式(3)在公式(1)的基础上考虑了邻域内数据对象的紧凑程度。对于dc邻域内拥有相同邻居数的数据对象,通过计算数据对象与其邻居间的距离扩大局部密度的差异。可以认为,在dc邻域范围内的邻居数相同情况下,与其邻居之结合越紧密的数据对象拥有越大的局部密度。本发明提出的局部密度定义,具体地,将局部密度的计算限制在数据对象的领域之内,计算局部密度时只考虑数据对象所在网格分区以及其邻接网格分区的对象,避免遍历整个数据集,降低计算节点的工作开销。原始cluster_dp在确定聚簇中心时,需绘制决策图,并通过人机交互进行判断。为摆脱算法对决策图的依赖和人为干预,设计辅助函数γ自动判定聚簇中心。已知数据对象的局部密度为ρ′i,其最小高密度距离为δi,则设:其中,max(ρ)*max(δ)为网格内最大局部密度与最小高密度值的乘积。由于局部密度与最小高密度距离具有不同的尺度,因此借助网格内局部密度与最小高密度距离的最大值进行简单归一化操作。将γi限定在[0,1]后,将其降序排列,可以看出非聚簇中心对象γ趋近0,聚簇中心对象的γ值离散分布且远离原点。由此,可通过预设阀值确定聚簇的中心候选对象。预设值的选取依赖实际应用环境,选择γ>0.2的数据对象作为聚簇中心候选对象生成局部簇,可得到较为理想的聚类结果。得到聚簇中心候选对象后,即可确定聚簇的数目,进而将网格内数据归类到对应的局部簇中。分区间聚簇合并策略每个rdd分区对应一空间网格,对于靠近网格边界的数据对象,需要在相邻网格之间再次评估其聚集特性,避免由于划分rdd造成的归类错误.通过计算两个簇间的平均局部密度,将聚簇成员标记为核心成员(clustercore)与光晕(clus-terhalo)。其中,核心成员为聚簇的中心部分,由高密度点组成,是稳定的数据对象聚集;而光晕对应聚簇外围,包含低密度数据点,是聚簇的非稳定部分数据的聚集。利用核心与光晕的概念,提出网格间聚簇的合并方法.如果邻接网格中靠近网格边界的数据对象分布存在如下情况,则需调整数据对象所属聚簇。情况1,相邻网格中近边界处存在聚簇核心对象,并且核心对象相互靠近。由于网格的存在,将原本应归为同一聚簇的数据对象分配到了不同的聚簇中,此情况下合并两个聚簇。情况2,两邻接网格的边界处存在光晕对象,此时需重新评估光晕点所归属的聚簇。具体调整算法如下所示。在光晕对象所在网格的邻接网格中查找密度高于光晕对象的数据对象,并计算满足条件的数据对象到光晕点的距离。若计算得出的最小距离小于当前光晕对象的最小高密度距离,则更新光晕点的最近高密度邻居与最小高密度距离,并根据更新后的最近高密度邻居将光晕对象分配到新的聚簇中。以上的所述乃是本发明的具体实施例及所运用的技术原理,若依本发明的构想所作的改变,其所产生的功能作用仍未超出说明书及附图所涵盖的精神时,仍应属本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1