一种基于网格的空间多尺度快速聚类方法与流程

文档序号:15447724发布日期:2018-09-14 23:34阅读:288来源:国知局

本发明涉及大数据分析挖掘与可视化领域,尤其涉及一种基于网格的空间多尺度快速聚类方法。



背景技术:

聚类是探索性数据分析的一个重要手段,具有广泛的应用。但传统的聚类方法未明确提出数据尺度和观察尺度的概念并说明其在聚类分析中发挥的作用,也很少显式的将这两个尺度因素作为聚类的依据,这限制了我们观察、分析事物的维度,使得聚类结果不够客观全面。尤其是海量时空数据场景下,数据中蕴含的信息通常更加复杂、结构更加丰富,单一尺度的聚类算法很难充分挖掘其中的模式规律。针对现有聚类算法尺度单一导致的认知片面问题,有学者提出了如ripley,sk函数、层次聚类等多尺度聚类方法,但这些方法通常具有较高的计算复杂度,难以适应海量数据聚类的需求;而小波聚类、sting聚类等基于网格的多尺度聚类算法,虽然聚类效率很高,但尺度定义不够清晰、聚类结果也不够精细,而且难以解决聚类簇内部密度分布变化较大、多个聚类簇之间密度不均的问题。



技术实现要素:

本发明要解决的技术问题在于针对现有技术中大规模数据集中,聚类尺度单一、聚类效率较低以及网格聚类无法识别多密度聚类簇的缺陷,提供一种基于网格的空间多尺度快速聚类方法。

本发明解决其技术问题所采用的技术方案是:

本发明提供一种基于网格的空间多尺度快速聚类方法,该方法包括以下步骤:

s1、获取包含n维样本的海量点数据集,选定一个数据尺度,以该尺度上各数据维度属性的分辨率作为划分网格单元大小的依据,将n维空间划分成不相交的网格单元;统计落在每个网格单元中原始数据点的数量,将其定义为网格单元的密度属性,以此构建网格密度矩阵;

s2、指定密度阈值t,对网格单元进行筛选并得到满足阈值条件的新网格密度矩阵;

s3、指定一个滤波器模板,对密度阈值过滤后的网格密度矩阵进行全局滤波处理;

s4、通过邻域搜索,连接密度非零的网格单元生成连通区,对每个连通区包含的网格单元进行积分操作,并根据密度积分阈值v剔除密度积分不满足条件的连通区,得到剔除后的网格连通区;将每个网格连通区作为一个聚类,并将网格单元对应的聚类类别信息映射到原始数据点上,得到最终的聚类结果;

s5、对滤波器模板进行尺度变换,使用变换后新生成的滤波器模板对步骤s2中得到的密度矩阵重复步骤s3和步骤s4,得到不同观察尺度下的聚类结果;

s6、改变数据尺度,以新的网络单元格大小对n维空间重新进行网格划分,重复步骤s1至步骤s5,得到不同数据尺度下的聚类结果。

进一步地,本发明的步骤s1的具体方法为:

s11、获取包含n维样本的海量点数据集x={x1,x2,x3,x4},根据数据尺度下各维度属性的分辨率,确定在该数据尺度下每个维度上的网格尺寸e={ε1,ε2,ε3...εd};

s12、根据数据集x上各维度属性取值的最大最小值,分别计算网格各维度的划分数量,并据此对各个维度空间进行网格划分:

m={m1,m2,m3…md},

其中,mi表示第i个维度上网格的划分数量,xi为x中所有样本第i个维属性值构成的向量,max(xi)和min(xi)分别是向量xi对应属性维度取值的最大和最小值,则m构成了d维属性空间各属性维度划分数量的向量表达;

s13、遍历原始数据点集,把每一个点都映射到相应的网格中:

定义网格集合g(g1,g2,g3...gs)为所有网格单元构成的集合(其中),g0为缓存网格集合,用来缓存与当前点存在交集的网格,即包含该点的网格;遍历点集,若对于点集中的某一点则把gi加入进缓存网格集合中,即令g0=g0∪{gi};

根据点在网格单元中的隶属关系,调整网格单元密度;若点落在某一网格内部,则令该网格密度值增加1;若点落在网格边线上,那么该点与两个网格单元存在交集,则令这两个网格单元的密度值同时增加0.5;若点落在四个网格共享的顶点处,则令这四个网格单元的密度值同时增加0.25,即采用如下公式更新网格密度矩阵中各个网格单元对应的密度值:

其中matrix0(g0)表示集合g0所包含网格在密度矩阵matrix0中对应的密度值,|g0|表示g0中元素个数;

然后清空缓存集合g0,遍历下一个点对象,直至遍历完所有的点对象,记最终密度矩阵为matrix1。

进一步地,本发明的步骤s2的具体方法为:

基于密度阈值参数t对matrix1中每一个网格单元进行阈值筛选,当网格单元密度值小于阈值t时,调整该网格单元密度值为0;否则,不作任何调整;遍历所有网格单元,得到密度阈值过滤后的新网格密度矩阵matrix2。

进一步地,本发明的步骤s3的具体方法为:

s31、选取一个d维的滤波器模板f=(f1,f2,f3...fd),其中fi是一个长度为l的一维信号向量;

s32、对每个数据属性维度分别进行离散卷积操作:

其中,matrix3(k1,k2,...,kd)表示在网格密度矩阵matrix3中索引为(k1,k2,...,kd)网格单元的密度,符号表示向下取整操作,从而得到卷积之后的网格密度矩阵matrix3。

进一步地,本发明的步骤s4的具体方法为:

s41、根据matrix3中密度值非零网格单元之间邻接关系生成网格单元连通区,并为每个连通区赋予不同的类别标签作为初始的聚类结果,连通区计算方法包括四邻域、八邻域及其高维拓展;

s42、根据连通区密度积分阈值v分别对每个连通区域中网格单元密度值进行累加,剔除密度积分值小于阈值v的连通区,每个保留下来的满足密度积分阈值条件的连通区域即为一个聚类簇;

s43、将网格的连通区结果映射到原始点集,为每一个点赋予所在网格单元对应的类别标签,即得到每个点在该观察尺度下的聚类类属信息;若网格单元不属于任何聚类簇,则对应点属于噪声点。

进一步地,本发明的步骤s5的具体方法为:

s51、根据观察尺度对滤波器模板进行尺度变换,拓展滤波器模板长度。使用滤波器的目的在于除去孤立的噪声网格单元,并通过网格密度补值的方式连接距离邻近但不相邻网格单元,达到网格平滑的效果;通过不断拓展滤波器模板长度,实现由识别高密度热点区域到更大范围中低密度连通区域逐渐拓展的多层次聚类效果,以反映和刻画人观察和认识对象时候的层次化和阶段化过程。滤波器模板拓展方法包括离散二进小波变换和高斯滤波器的参数调整法;

s52、将网格矩阵matrix2作为新的网格矩阵计数,利用新得到的模板对网格矩阵matrix2进行步骤s3至步骤s4的操作,得到不同观察尺度下的聚类结果。

进一步地,本发明的步骤s6的具体方法为:

改变数据尺度,以该数据尺度上各数据属性维度的分辨率作为依据,重新划分网格空间的单元格大小,重复步骤s1至步骤s5的操作,得到不同数据尺度下的聚类结果。

本发明产生的有益效果是:本发明提出了一种新的基于网格的海量数据多尺度聚类算法处理流程,将数据尺度和观察尺度作为尺度维度引入聚类过程,并通过滤波器模板拓展建立不同尺度聚类结果之间的内在逻辑关系。该算法复杂度低、聚类效率高;同时,相对于小波聚类等基于网格的聚类算法,本算法的聚类结果在聚类边缘的精度表现更好,而且能够解决聚类簇内部密度变化较大、不同聚类簇之间密度分布不均的问题。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本算法的核心概念图;

图2是本算法的计算流程图;

图3是不同数据尺度下的一组聚类结果;

图4是256×256网格单元数量对应数据尺度下不同观察尺度的聚类结果;

图5是对网格采取的滤波器示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

现有一千三百万中国大陆企业的位置数据,需要对上述企业poi位置点进行聚类,从而得到不同空间尺度下企业的空间分布模式(如:分布范围、企业集聚与共位模式)。由于点规模巨大,传统聚类算法很难高效地聚类,也无法得到多个数据尺度和观察尺度下的聚类效果。其中不同的数据尺度是指企业poi数据不同粒度的空间统计单元或地理空间分辨率(如,个体poi点、千米格网),体现在不同大小的网格划分;而观察尺度则是模拟人在观察时不同的认知阶段,体现在同一数据尺度下,聚类认知范围从局部高密度聚类核心区域向更大范围中/低密度连通区域扩展的渐变过程。

本发明通过基于网格的聚类算法,采用不同的网格单元大小和不同长度的滤波器模板,生成不同数据尺度和观察尺度约束下的多组聚类结果。

下面将结合本发明中的附图,对本发明的算法过程进行详细阐述,具体步骤如下:

1)将中国地图的最小外接矩形进行网格划分,根据数据尺度的不同调整网格划分的单元格大小;

2)将所有的poi点映射到每个网格单元当中,统计并记录每个网格单元的密度值和每个点对应网格的索引标识id;

3)设置自适应数据尺度的密度阈值,基于密度阈值对网格单元进行初步筛选:

其中r表示网络划分的行数或列数。

通过阈值t去除极低密度的网格;若暂时不考虑观察尺度的改变,直接计算不同数据尺度的聚类结果,则:

4)对所有密度值非零的网格单元进行四邻域的连通区搜索,搜索算法如下:

①设定标记值的初始值mark=0,并将mark值赋给第一个网格单元;

②向右逐行对网格单元进行遍历,选择密度值大于0的网格单元进行赋值,赋值情况如下:

i.如果当前网格单元左边的相邻网格单元密度值大于0,并且上方的相邻网格单元密度值为0,那么给当前网格单元赋予和左边网格单元一样的标记值mark(i,j)=left_mark(i,j);

ii.如果当前网格单元左边的相邻网格单元密度值等于0,而上方的相邻网格单元密度值大于0,那么给当前网格单元赋予和上方网格单元一样的标记值mark(i,j)=top_mark(i,j);

iii.如果当前网格单元左边和上方的相邻网格单元密度值都等于0,那么让mark=mark+1,给当前网格赋予新的标记mark(i,j)=mark值;

iv.如果当前网格单元左边和上方的相邻网格单元密度值都大于0,那么让当前网格单元赋予左边网格单元的标记值left_mark(i,j),并且重新遍历已遍历的网格单元,统一当前网格单元左邻和上邻对应的标注,让标记值等于top_mark(i,j)的网格单元更新标记值为left_mark(i,j);

③标注过程中可能产生不同聚类簇的标注值不连续的情况,将标记值更新为1,2,3…顺序的聚类类别id值,统计不同标记取值的个数n,n对应聚类结果中的聚类簇个数。

通过搜索连通区,可以得到如图3所示的不同数据尺度下的一组聚类结果,其中a)是在4096×4096的网格划分下的聚类结果,b)是在1024×1024的网格划分下的聚类结果,c)是在256×256的网格划分下的聚类结果,d)是在64×64的网格划分下的聚类结果,e)是在16×16网格划分下的聚类结果。

固定数据尺度,生成该数据尺度下不同观察尺度对应的聚类结果(以256×256网格划分对应的数据尺度为例),操作步骤如下:

5)使用如图5所示滤波器对网格进行滤波操作,其中图4中的a)采取了3×3的滤波器,b)采取了5×5的滤波器,c)采取了7×7的滤波器,d)-f)依照递增规律采取了更大的滤波器。利用这类滤波器进行滤波操作不仅可以除去噪声网格,也可以对整个网格空间进行平滑插值,使聚类结果更加平滑连续。利用多组不同大小的滤波器,达到在观察尺度上从局部高密度聚类区域到全局中低密度连通区域聚类的多尺度聚类效果。

6)通过对非零网格单元的连通区搜索,统计每个聚类簇的网格密度总值,将该参数作为密度积分阈值筛选的依据;

根据观察尺度设置筛选聚类的积分阈值。对所有聚类簇的密度积分从大到小排序,设置密度积分阈值为第一个十分位数(对应密度积分阈值为150),提取出高密度的聚类簇作为第一个观察尺度的聚类结果,表示初步的观察范围会停留在高密度的区域,如图4a)所示。图4b)中取第二个十分位数作为密度积分阈值,得到了更大范围的聚类效果。以此类推,可以得到其余观察尺度的聚类结果。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

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