本发明专利技术提供了一种基于内存计算的并行化聚类方法,其主旨在于解决聚类算法DBSCAN在处理海量数据下的效率问题,其方案为:S1:基于简单随机抽样的数据划分,以<ID,Raw_data>作为此阶段的输入,通过对原始数据进行简单随机抽样来完成数据的切分,并将切分的结果保存到不同的RDD;S2:利用内存计算模型在各个计算节点并行执行DBSCAN算法,对不同的RDD中的原始数据进行聚类,产生局部类簇;S3:基于重心合并所有的局部类簇,利用内存计算模型对局部类簇进行合并,从而产生全局聚类结果。本发明专利技术基于内存计算模型,通过简单的数据划分方式对原始数据进行切割,极大地提高了算法的处理效率。同时,基于重心距离的局部类簇合并能快速地构建全局类簇,满足了处理大规模数据的用户需求。
【技术实现步骤摘要】
本专利技术涉及数据挖掘算法并行化领域,特别涉及一种基于内存计算的并行化聚类方法。
技术介绍
如今,随着信息技术的不断创新,数据正以爆炸式的速度增长。如何对大规模数据进行有效地处理已然成为一项严峻的挑战。为了能够从海量数据中挖掘出规律信息,找出数据间的区别与联系,数据挖掘作为一门新型学科出现在人们的视线中,并在各行业发挥着重要作用。聚类分析在数据挖掘中占据着举足轻重的地位,得到了人们的广泛关注。聚类通常是按照一定的相似度度量方法,使得相似度较高的一组数据聚在一起。DBSCAN算法是1996年由Ester Martin等人提出的基于高密度连接区域的密度聚类方法,它能发现任意形状的类簇,并能够有效地处理噪声点。该算法简单、效率高,目前已被广泛地应用于工业生产与科学研究中。在DBSCAN算法中,类簇中的每个数据对象,对于给定的阈值(MinPts),该对象的Eps邻域包含的数据对象的个数必须大于等于阈值。因此当相邻区域的对象数不小于阈值时,将继续聚类。DBSCAN算法在进行海量数据聚类时,需要数据集载入内存,同时要计算两两对象之间的距离,当数据量过大时会造成内存溢出。如果不将数据集载入内存,频繁的I/O操作会造成算法效率低下。因此,传统的DBSCAN算法无法适用于大规模数据集合的聚类分析。现有的并行DBSCAN算法在进行数据分区时,通常是将原始数据库划分为若干个互不相交的分区,并通过一定的策略保证分区之间的负载均衡,随着数据维数的增加,对高维空间的切分将会消耗大量的时间。同时,在分区边界合并时,针对每个分区,都需要找出位于2m个方向上的边界数据进行边界判定,其中m为数据的维度,这无疑将消耗大量的时间,使得算法的效率不高。弹性分布式数据集RDD是分布式内存计算的抽象应用。RDD是只读、可序列化的并且可以通过persist或cache函数缓存在内存中,减少了大量的磁盘IO,极大地提高了机器学习算法的效率。因此,基于内存计算的DBSCAN算法并行化,可以提高算法处理的效率。
技术实现思路
为了能够更好的解决DBSCAN算法在处理海量数据下的效率问题,本专利技术提出了一种基于内存计算的并行化聚类方法。它采用内存计算中自定义的RDD算子来实现并行计算,能快 速实现原始数据的划分以及聚类结果的合并。具有更好的运行效率与可扩展性。本专利技术基于内存计算的并行化聚类方法,包括如下步骤:基于简单随机抽样的数据划分,以<ID,Raw_data>作为此阶段的输入,通过对原始数据进行简单随机抽样来完成数据的切分,并将切分的结果保存到不同的RDD。具体的子流程如下:S11:在集群中启动实现map接口的作业,各个节点以原始数据作为输入,通过自定义的random()函数所产生的随机数作为当前数据的key值,生成带有新的划分标识的原始数据RDD集合;S12:将S11中产生的RDD集合按照划分标识分解成对应的局部RDD集合。S2:并行计算本地DBSCAN算法,利用内存计算模型在各个计算节点并行执行DBSCAN算法,产生局部类簇。具体的子流程如下:S21:对每个局部RDD集合,首先根据数据划分个数确定聚类的邻域半径ε以及阈值MinPts;S22:选取任一数据对象进行邻域查询,若该对象为核心对象,则将其邻域内所有的数据加入到list中,进行递归调用;若该对象为噪声对象,则将其标记为Noise;S23:重复S22,直到所有的对象均被标记,同时尽可能的归到某个类簇中,或者找出那些不属于任何类簇的噪声对象;S24:生成局部类簇RDD。S3:基于重心合并所有的局部类簇,利用内存计算模型对局部类簇进行合并,从而产生全局聚类结果,具体的子流程如下:S31:计算各个数据划分中局部类簇之间的距离,求得最小值局部dmin;S32:根据局部dmin求得在整个数据集下的全局Dmin;S33:根据Dmin确定合并阈值σ;S34:构建重心距离矩阵;S35:根据合并阈值σ,产生合并序列RDD;S36:根据合并序列RDD对局部类簇进行合并,从而产生最终的全局聚类结果。本专利技术因为采用上述技术方案因此具备以下有益效果:与现有技术相比,本专利技术所提供的一种基于内存计算的并行化聚类方法,能很好地解决大规模数据集聚类的效率问题。采用分布式编程模型,通过简单的数据划分方式对原始数据 进行切割,极大地提高了算法的处理效率。同时,基于重心距离的局部类簇合并能快速地构建全局类簇,满足了处理大规模数据的用户需求。附图说明图1为本专利技术方法的框架图;图2为并行计算本地DBSCAN算法流程图;图3为并行计算本地DBSCAN算法示意图;图4为改进的并行局部类簇合并流程图;图5为改进的并行局部类簇合并示意图。具体实施方式下文与图示本专利技术原理的附图一起提供对本专利技术一个或者多个实施例的详细描述。结合这样的实例描述本专利技术,但是本专利技术不限于任何实施例。本专利技术的范围仅由权利要求书限定,并且本专利技术涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本专利技术的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本专利技术。如上所述,本专利技术所提供的一种基于内存计算的并行化聚类方法,能很好地解决大规模数据集聚类的效率问题。采用分布式编程模型,通过简单的数据划分方式对原始数据进行切割,极大地提高了算法的处理效率。同时,基于重心距离的局部类簇合并能快速地构建全局类簇,满足了处理大规模数据的用户需求。在执行算法之前,需要根据具体场景对一些参数进行初始化,如DBSCAN算法的邻域半径ε以及阈值MinPts、实际的计算节点数k进行设置,原始数据Raw_data按行存储在HDFS中,格式为<ID,Raw_data>,ID为行号。这里我们以UCI数据集中的3D-Road-Network数据集为例,该数据集中包含了434874条记录,我们从中任意抽取10条记录组成我们的测试数据集Test_Data,数据集的格式为:Road-ID、Longtitude、Latitude以及Altitude组成,具体的数据格式如表1所示。在本例中邻域半径ε取0.1,MinPts取100,k取5。表1 3D-Road-Network数据格式参考图1,本专利技术的具体步骤包括:S1:基于简单随机抽样的数据划分,它的思想是:首先根据实际的计算节点确定分区的个数,并在此基础上通过自定义的random()函数,将原始数据随机的输出到各个分片中,同时各个分片的数据个数大致相同。每个分片都相当于一次简单的随机抽样,当每个分片抽取的样本数足够大时,抽取的样本与原始的数据具有相似的分布,并且将划分结果保存到HDFS或其他存储系统中。S2:并行计算本地DBSCAN算法,利用内存计算模型在各个计算节点并行执行DBSCAN算法,产生局部类簇。步骤3:S3:基于重心合并所有的局部类簇,利用内存计算模型对局部类簇进行合并,从而产生全局聚类结果。S1:基于简单随机抽样的数据划分,以<ID,Raw_data>作为此阶段的输入,通过对原始数据进行简单随机抽样来完成数据的切分,并将切分的结果保存到不同的RDD中。设计Data_PartitionMap、以及Data_PartitionReduce来完成数据分本文档来自技高网...
【技术保护点】
一种基于内存计算的并行化聚类方法,包括如下步骤:S1:基于简单随机抽样的数据划分,以<ID,Raw_data>作为此阶段的输入,通过对原始数据进行简单随机抽样来完成数据的切分,并将切分的结果保存到不同的RDD;S2:利用内存计算模型在各个计算节点并行执行DBSCAN算法,对不同的RDD中的原始数据进行聚类,产生局部类簇;S3:基于重心合并所有的局部类簇,利用内存计算模型对局部类簇进行合并,从而产生全局聚类结果。
【技术特征摘要】
1.一种基于内存计算的并行化聚类方法,包括如下步骤:S1:基于简单随机抽样的数据划分,以<ID,Raw_data>作为此阶段的输入,通过对原始数据进行简单随机抽样来完成数据的切分,并将切分的结果保存到不同的RDD;S2:利用内存计算模型在各个计算节点并行执行DBSCAN算法,对不同的RDD中的原始数据进行聚类,产生局部类簇;S3:基于重心合并所有的局部类簇,利用内存计算模型对局部类簇进行合并,从而产生全局聚类结果。2.根据权利要求书1所述的一种基于内存计算的并行化聚类方法,包括如下步骤:S11:在集群中启动实现map接口的作业,各个节点以原始数据作为输入,通过自定义的random()函数所产生的随机数作为当前数据的key值,生成带有新的划分标识的原始数据RDD集合;S12:将S11中产生的RDD集合按照划分标识分解成对应的局部RDD集合。3.根据权利要求书1所述的一种基于内存计算的并行化聚类方法,...
【专利技术属性】
技术研发人员:田玲,罗光春,陈爱国,殷光强,
申请(专利权)人:电子科技大学,
类型:发明
国别省市:四川;51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。