一种基于MapReduce的大规模数据分布式聚类处理方法与流程

文档序号:12034736阅读:362来源:国知局
一种基于MapReduce的大规模数据分布式聚类处理方法与流程

本发明属于并行聚类技术领域,特别是一种基于mapreduce的大规模数据分布式聚类处理方法。



背景技术:

伴随信息技术的快速发展,数据规模不断增大,利用并行机制对大规模数据集进行有效地挖掘分析,可以推动互联网技术的发展和进步。聚类分析是一种重要的数据处理技术,是机器学习和人工智能领域的重要课题之一,被广泛用于数据挖掘、信息检索等研究中。主要工作是将数据集划分成多个子集,使得子集内的数据对象间的相似度较高,不同子集间的数据对象间的差异度较大。由于数据规模的增大,传统的单机聚类方法已经无法在有效地时间内处理大规模数据且效率低下,聚类效果不理想,而随之而来的大数据技术愈加成熟,越来越多的人开始关注学习hadoopmapreduce相关技术。因此,建立一个并行集群模式利用mapreduce并行框架是解决这些问题的一个重要研究方向。

mapreduce是一个应用于大规模数据集的并行编程模型,特点是简单,容易实现和易于扩展。核心思想就是“分而治之”,把大规模数据集分成一个个小的数据集,交由主节点管理下的各分节点共同处理,然后把各分节点的中间结果进行整合,得到最终结果。近年来,学者们针对大规模数据聚类展开了一系列的研究,其中k-means方法是基于划分的经典聚类分析方法之一,优点是具有操作简单,收敛速度较快,缺点是对于初始聚类中心的选取采用随机方式,易导致聚类局部最优,影响最后的聚类效果。因此保证初始聚类中心的准确性是面向大规模数据并行聚类的重要环节。

目前的研究热点是并行聚类方法的初始聚类中心点选择方法,主要分为k-means结合canopy方法确定聚类中心和基于数据密度计算确定初始聚类中心两种方法。k-means方法结合canopy方法canopy-kmeans,利用canopy的特点计算对象的相似性,将数据做预处理,优势在于可以给定初始聚类中心点,避免陷入局部最优,但是缺点是计算对象间的相似性的时间耗费较大。基于数据密度计算的方法是计算出所有数据的密度,然后选择密度最大的数据作为聚类中心点从而避免了随机选取的问题,且较为准确,但是传统的计算开销也较大,且易导致节点负载较大,降低并行聚类总体效率。



技术实现要素:

针对现有技术中存在的问题,本发明提供一种基于mapreduce的大规模数据分布式聚类处理方法。

本发明的技术方案如下:

一种基于mapreduce的大规模数据分布式聚类处理方法,包括:

步骤1、对大规模数据以等规模不重复的原则进行抽样,记录抽样数据;

步骤2、启动hadoop分布式集群环境,向mapreduce分布式并行框架输入抽样数据并计算抽样数据的局部密度和平均密度;

步骤3、主节点以抽样数据的平均密度avg为基准下发任务到子节点,各个子节点根据局部密度进行排序,找出局部密度大于平均密度avg的所有抽样数据作为每个簇的初始聚类中心点的候选点集合并反馈给主节点,主节点选取候选点集合中每两个相邻候选点之间距离大于2倍设定范围的所有候选点作为初始聚类中心点;

步骤4、主节点接收初始聚类中心点分布任务给子节点,子节点根据初始聚类中心点利用mapreduce分布式并行框架进行并行聚类任务,针对每个簇计算数据间距离的平均值来更新聚类中心点;

步骤5:子节点应用误差平方和准则函数作为聚类准则函数,判断是否继续迭代:若根据更新后的聚类中心点计算的误差平方和准则函数是收敛的,则当前的各聚类中心点为最终的聚类中心点并反馈给主节点,执行步骤6;否则返回步骤4继续迭代更新聚类中心点;

步骤6:主节点重新输入聚类中心点并分布任务,各子节点根据聚类中心点对大规模数据进行聚类。

所述以等规模不重复的原则进行抽样,采用的公式如下:

fi≈fj且nfi<<d

e=f*n*δ

其中,d表示大规模数据集,di和dj表示两个没有交集的数据集,i和j的范围在1到n之间。数据集di和dj的数据规模分别记为fi和fj,n表示抽样次数e表示抽样的数据大小,f为抽样的数据在大规模数据集中所占的比例,取值为0≤f≤0.1,δ为抽样概率,取值为0.5≤δ≤1。

所述步骤2,包括:

步骤2.1、将抽样数据上传到hadoop分布式集群环境;

步骤2.2、hadoop分布式集群环境中的主节点对传入的抽样数据进行分割成多个数据块,并下发到各个子节点进行分布式处理计算抽样数据的局部密度;

步骤2.3、各个子节点接收任务,利用mapreduce分布式并行框架对各个任务对应的抽样数据进行局部密度计算,即计算抽样数据周围设定范围内的邻居数据的个数;

步骤2.4、各个子节点将计算出的局部密度反馈给主节点,主节点进行整合并根据各局部密度来计算出抽样数据的平均密度,输出抽样数据的平均密度和局部密度。

所述局部密度的计算公式如下:

其中,i和j分别表示第i个数据和第j个数据,n表示抽样数据有n个属性,例如iris鸢尾花卉数据集,每个数据的属性包括花萼长度,花萼宽度等,in表示数据i的第n个属性数据,jn表示数据j的第n个属性数据,dij表示第i个数据和第j个数据的距离。ρi表示第i个数据的局部密度,m表示数据的个数,de表示为第i个数据周围截取半径即设定范围,λ为系数,若邻居数据属于截取半径范围即设定范围内,则λ取值为1,否则值为0。

所述平均密度计算公式:

其中,avg表示m个抽样数据的平均密度,ρi表示第i个抽样数据的局部密度。

有益效果:

本发明提供了一种基于mapreduce的大规模数据分布式聚类处理方法,通过对大规模数据以等规模不重复的原则进行抽样,利用mapreduce分布式并行框架分布式地对抽样数据计算局部密度,在整合后计算数据的平均密度,从而选取合适准确的初始聚类中心点实现并行聚类,减少聚类迭代次数,提高聚类准确率和并行聚类效率,非常适用于大规模数据并行聚类分析,解决对于一些没有分类,不知道类别标签的样本集进行分类问题,聚类可以应用到图像聚类分析处理等研究领域。k-means是基于划分的经典聚类分析算法之一,因为其具有操作简单,收敛速度较快等特点,并行化该算法使其适应于并行集群模式从而应用于大规模数据。

附图说明

图1是本发明具体实施方式中采用的hadoop分布式集群环境框图;

图2是本发明具体实施方式中基于mapreduce并行框架的数据处理流程图;

图3是本发明具体实施方式中基于mapreduce的大规模数据分布式聚类处理方法流程图;

图4是本发明具体实施方式中步骤2流程图;

图5是本发明具体实施方式中实验结果对比图,(a)三种方法的准确率实验对比结果,(b)三种方法的时间消耗实验对比结果。

具体实施方式

下面结合附图对本发明的具体实施方式做详细说明。

如图1所示,本实施方式中的hadoop分布式集群环境有3个服务器,构成3个节点,其中包括一个主节点master用来发号施令分布任务,2个子节点slave用来接收主节点分发的任务并根据主节点master的要求处理运行任务,所有节点通过高速以太网进行相连。主节点master根据用户的应用请求启动整个集群环境,子节点slave和主节点master作为hadoop分布式集群环境并行系统的主体,负责整个hadoop分布式集群的处理运行。如图2所示,本实施方式中:1)根据用户的要求接收待处理数据,将输入的文件进行分割成数据块,以键值对<keyl,value1>形式分发给各个子节点;2)子节点接收数据块进行map函数处理,将处理后的新键值对<key2,value2>发送给本节点的合并端进行中间数据合并处理,形成<key2,list<value2>>;3)子节点将合并的数据发送到reduce端进行reduce函数处理,整合各个节点的数据结果,输出最后的结果<key3,value3>。

本实施方式中的绘制对象采用ucimachinelearningrepository中的iris数据集也称鸢尾花卉数据集,是一类多重变量分析的数据集。其中有150个样本数据,分为3类,每类中有50个数据包,每个数据包含4个属性。分别使用数据集数量为:30、60、90、120、150,根据数据集数量的大小,分别对传统k-means并行方法、基于密度计算k-means并行方法和本发明方法聚类效果进行测试,主要从准确率、时间消耗等方面进行比较。实验结果对比图如图5(a)、(b)所示。

所述基于mapreduce的大规模数据分布式聚类处理方法,如图3所示,包括:

步骤1、对大规模数据以等规模不重复的原则进行抽样,记录抽样数据;

所述等规模不重复抽样规则公式如下:

fi≈fj且nfi<<d

e=f*n*δ

其中,d表示大规模数据集,di和dj表示两个没有交集的数据集,i和j的范围在1到n之间。数据集di和dj的数据规模分别记为fi和fj,n表示抽样次数e表示抽样的数据大小,f为抽样的数据在大规模数据集中所占的比例,取值为0≤f≤0.1,δ为抽样概率,取值为0.5≤δ≤1。

步骤2、启动hadoop分布式集群环境,向mapreduce分布式并行框架输入抽样数据并计算抽样数据的局部密度和平均密度;

所述步骤2,如图4所示,包括:

步骤2.1、在centos系统中,通过start-all.sh命令启动hadoop分布式集群环境,将抽样数据上传到hadoop分布式集群环境;

步骤2.2、hadoop分布式集群环境中的主节点对传入的抽样数据进行分割成多个数据块,并下发到各个子节点进行分布式处理计算抽样数据的局部密度;

步骤2.3、各个子节点接收任务,利用mapreduce分布式并行框架对各个任务对应的抽样数据进行局部密度计算,即计算抽样数据周围设定范围内的邻居数据的个数;

所述局部密度计算公式:

其中,i和j分别表示第i个数据和第j个数据,n表示抽样数据有n个属性,例如iris鸢尾花卉数据集,每个数据的属性包括花萼长度,花萼宽度等,in表示数据i的第n个属性数据,jn表示数据j的第n个属性数据,dij表示第i个数据和第j个数据的距离。ρi表示第i个数据的局部密度,m表示数据的个数,de表示为第i个数据周围截取半径即设定范围,λ为系数,若邻居数据属于截取半径范围即设定范围内,则λ取值为1,否则值为0。

步骤2.4、各个子节点将计算出的局部密度反馈给主节点,主节点进行整合并根据各局部密度来计算出抽样数据的平均密度,输出抽样数据的平均密度和局部密度;

所述平均密度计算公式:

其中,avg表示m个抽样数据的平均密度,ρi表示第i个抽样数据的局部密度。

步骤3、主节点以抽样数据的平均密度avg为基准下发任务到子节点,各个子节点根据局部密度进行排序,找出局部密度大于平均密度avg的所有抽样数据作为每个簇(簇表示的是一类数据)的初始聚类中心点的候选点集合并反馈给主节点,主节点选取候选点集合中每两个相邻候选点之间距离大于2倍设定范围的所有候选点作为初始聚类中心点;

初始聚类中心点的选取:首先在候选点集合中选取局部密度最大的候选点作为第一个初始聚类中心点,接着选取与第一个初始聚类中心点的距离大于2de(de为截取半径)的候选点作为第二个初始聚类中心点,以此方式,第三个初始聚类中心点是与第一、第二个初始聚类中心点的距离都大于2de的候选点,直到选取到候选点集合中的最后一个候选点,结束初始聚类中心点的选取。

步骤4、主节点接收初始聚类中心点分布任务给子节点,子节点根据初始聚类中心点利用mapreduce分布式并行框架进行并行聚类任务,针对每个簇计算数据间距离的平均值来更新聚类中心点;

新的聚类中心点计算公式:

其中,ei为簇ci的数据间距离平均值即新的聚类中心点,x为簇ci中的数据。

步骤5:子节点应用误差平方和准则函数作为聚类准则函数,判断是否继续迭代:若根据更新后的聚类中心点计算的误差平方和准则函数是收敛的,则当前的各聚类中心点为最终的聚类中心点并反馈给主节点,执行步骤6;否则返回步骤4继续迭代更新聚类中心点。

误差平方和准则函数计算公式为:

其中,m为簇中所有数据的方差之和,n为簇ci中的一个数据对象,ei为簇ci中数据间距离的平均值,k表示聚类中心点的个数。

步骤6:主节点重新输入聚类中心点并分布任务,各子节点根据聚类中心点对大规模数据进行聚类。

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