基于冗余距离消除和极端点优化的并行k-means聚类方法与流程

文档序号:13708138阅读:153来源:国知局
技术领域本发明属于计算机领域,尤其涉及一种基于冗余距离消除和极端点优化的并行k-means聚类方法。

背景技术:
名词解释:K-means聚类方法指通过不断地取离种子点(中心点)最近均值的进行聚类的算法。随着互联网技术的高速发展,当前云计算技术已经成为一种商业模式,它已经渗透到各个领域。在医学领域,我们使用k-means聚类方法和云计算技术相结合,从海量医疗数据中挖掘出疾病与药品的信息。K-means聚类方法是当前使用最多、效率最高的聚类方法之一。MapReduce最初是由Google公司开发的,它是一种并行计算框架,非常适合海量数据集的并行计算。MapReduce内部的工作原理比较复杂,但是编码非常简单,它提供了一种简易的接口,可以让普通的开发人员根据自己的需求编写自己的MapReduce程序。普通开发人员像编写串行程序一样只需要实现启动任务的入口函数(通常是main函数)、map函数和reduce函数,更复杂一点的可以实现setUp函数和cleanUp函数即可。这样MapReduce并行计算框架根据数据集的大小启动相应的Map或Reduce任务同时并行的执行开发人员编写的MapReduce程序。开发人员无须关心MapReduce内部复杂的工作原理,如数据集的分块、数据块的分配和排序以及多个Map或Reduce任务之间的通信。Hadoop是由apache基金会开发的一个包含分布式计算和存储的开源项目,它实现了谷歌的MapReduce并行计算模型。当前的Hadoop的版本已经更新到2.6,它主要由以下几个部分组成:client(客户端)、ResourceManager(资源管理器)、NodeManager(节点管理器)、ApplicationMaster(作业管理器)、任务。(1)client(客户端)在Hadoop内部,用“作业”表示一个分布式应用程序,每个作业被切分成多个split(分块),Client负责将用户编写的作业提交到ResourceManager端。此外,Client提供一些接口可以查看作业的运行状态。(2)ResourceManager(资源管理器)ResourceManager是基于应用程序对资源的需求进行调度的,主要是用于管理向应用程序分配计算资源。在Hadoop2.0以上的版本中才会有,它接收client端提交过来的作业,并为每个作业分配相应的资源,这些资源包括:CPU、内存、磁盘、网络等。(3)NodeManager(节点管理器)NodeManager是每一台机器框架的代理,主要是执行ResourceManager分配的任务,监控应用程序的资源使用情况,并且向ResourceManager汇报。(4)ApplicationMaster(作业管理器)每个应用都有一个ApplicationMaster,ApplicationMaster的主要职责是向ResourceManager索要适当的资源容器,运行任务,跟踪应用程序的状态和监控它们的进程,处理任务的失败原因。(5)任务任务分为Map(映射)任务和Reduce(规约)任务两种,均由NodeManager启动。在Hadoop内部,数据处理的最小单位是split(分块),每个split会交由一个Map任务处理,Map任务和Map任务之间是并行执行的。Map任务先将对应的split迭代解析成一个个(key,value)键值对,并依次调用用户自定义的map函数将其映射成一组新的(key,value)键值对,最终将中间数据即新的(key,value)键值对存放到本地磁盘上,其中中间数据被分成若干个partition(分区),每个partition(分区)将被一个Reduce任务处理。Reduce任务用来把所有Map任务产生的partition按照key值,对对应的value值进行处理,产生多个共享相同key值的键组,最终完成整个作业。这种将一个大作业切分成多个小任务,然后并行执行每个小任务,从而达到计算并行化的效果,是目前云计算领域比较通用的一种方式。一些国内外顶尖的研究学者都在各个业务领域使用Hadoop做大数据处理的工作,尤其最近在医学领域使用得非常频繁。他们在MapReduce上实现各种聚类方法,比如说K-means,并获得了一定的成果,但是仍然存在有一些问题。MapReduce虽然是并行计算框架,但是随着数据量的增加,最终的聚类效率也是不尽满意。K-means聚类方法是当前使用最频繁、效率最高的方法之一,但是这个方法还是存在冗余距离计算的问题,数据量越大,冗余距离计算就会跟着相应的增加,而且也没有对极端值进行处理。因此K-means方法还是存在很大的性能瓶颈。在面对上面的这些问题时,国内外的许多专家都提出自己的想法,并取得一定的效果,例如:由于当前K-means聚类方法处理的数据集越来越大,相应的处理速度却越来越慢。为了能够让K-means聚类方法的效率得到提高,伊利诺伊大学的AlinaEne等学者提出一种样本技术,这种技术是尽最大的可能选取跟整体数据集接近的样本数据,把样本数据代替整个数据集,这样数据集减小了,聚类效率也提升了。但是这种做法存在很多问题。首先,样本数据是否完全反映整体数据的特性;其次,数据集越大样本数据也会增加,最终对样本数据聚类也会涉及效率的问题。因此这种方式并不算是真正的解决K-means方法的性能瓶颈。为了是K-means方法变得更高效和可靠,大连海事大学的XuYujie等人提出一种消除冗余距离计算的方式减少K-means方法每次迭代的计算量,从而达到减少K-means方法的整体计算量的目的。这样K-means方法的每次迭代时间减少了,整体的迭代时间也跟着减少了。然而这个种方式虽然能够消除一定的冗余距离计算,但是仍然还是存在一部分的冗余距离计算,而且整个聚类过程中存在许多极端点。所谓的极端点就是在每个聚类中离聚类中心点较远,而且不管经过多少次迭代还是属于当前的聚类。这些极端点对K-means聚类效率也有一定的影响,因此如何优化极端点也是一个提升方法效率的一个手段。对于K-means方法的另一个问题----最终的聚类结果对中心点敏感。选取中心点的方式不同,对最终的聚类结果有很大的影响。因此中心点的选择问题也是很多国内外学者研究的一个重点方向。LiaoQing等研究学者提出一种改进的K-means方法,通过建立一个中心点选择模型,使得每次选择的中心点都是当前情况下是最好的。但是从整体来看这种选择方式并不是最好。因为这种选择方式很可能会导致很多荣誉距离和极端点的产生。总之上述的方法并不是当前情况下最好的K-means聚类方法,他们都有各自的没有解决的问题。

技术实现要素:
为解决上述问题,本发明提供了一种基于冗余距离消除和极端点优化的并行k-means聚类方法。本发明克服了现有技术中在MapReduce计算框架中实现K-means方法遇到的冗余距离计算过多,极端点未处理以及中心点选择不合理的问题。为达到上述技术效果,本发明的技术方案是:一种基于冗余距离消除和极端点优化的并行k-means聚类方法,使用正弦定理和余弦定理,找出每个聚类中的冗余距离并消除每个聚类中的冗余距离;对极端点与极端点所在聚类的中心点之间距离采用曼哈顿距离进行计算;在迭代过程中,采用平均值的计算方式选取K-means聚类方法中的中心点。进一步的改进,包括如下步骤:步骤一、在多台物理服务器上构建完全分布式系统,将医疗数据及中心点数据导入完全分布式系统;步骤二、用户向完全分布式系统提交作业,完全分布式系统将整个作业分解成多个分块;步骤三、完全分布式系统启动映射任务辨别分块的数据,将分块的数据按中心点进行聚类,将离中心点距离最近的点聚为一类;中心点集合形成当前的中心点集;步骤四、消除每个聚类中的冗余距离计算:使用正弦定理和余弦定理,找出每个聚类中的冗余距离,消除每个聚类中的冗余距离;采用曼哈顿距离计算聚类中的极端点与其相应中心点的距离;步骤五、对于k个聚类分别分配1~k个编号;对于每个聚类中的任意一点生成键值对,所述键值对包括键名(key)和值(value);键名(key)为聚类的中心点所在的聚类编号,值(value)为此点所在的列数;按照键名(key)进行分割,产生分区;步骤六、每个分区由一个规约(Reduce)任务进行处理,依次统计规约(Reduce)任务接收到每一个键名(key)对应的值(value);这个值(value)通常包含一个或多个列,然后求出对应列的平均值,这个平均值作为新的聚类中心点,新的中心点集合形成新的中心点集;步骤七、对比新的中心点集与当前的中心点集,如果新的中心点集与当前的中心点集相同,则将规约(Reduce)任务产生的键值对作为最终的聚类结果;否则,用新产生的中心点代替当前的中心点,重复步骤2~6进行迭代运算,直至获得最终的聚类结果。进一步的改进,所述步骤四中,冗余距离计算的方法为:首先,对于聚类中的某一点p点,计算p点与p点所在聚类的中心点o1的距离,该距离记为d(p,o1);其次,找出p点所在的聚类中离中心点o1最远的一个点b点,b点与o1的距离记为d(b,o1);然后p点所在聚类的中心点o1与剩余的k-1个聚类的中心点进行距离计算,与剩余的k-1个聚类的中心点中的中心点o2进行距离计算,中心点o1和中心点o2的距离记为d(o1,o2),p点与o2的距离记为d(p,o2);若d(o1,o2)≥2*d(b,o1),或d(o1,o2)≥d(p,o1)+d(b,o1),则d(p,o2)为冗余距离。因为p不需要与o2进行距离计算就可以知道p点不会被分配到o2所在的聚类,p不属于o2所在的聚类。这样可以依此类推到其他聚类的中心点。。进一步的改进,所述步骤四中,极端点的定义如下:K=Σi=1n(Xi-X‾)4(n-1)D2]]>其中,n表示某一聚类中有n个点,X表示某一聚类中非中心点到中心点的距离,表示某一聚类中所有非中心点到中心点的距离平均值,D表示某一聚类中所有非中心点到中心点的距离的方差,i表示某一聚类中第i个非中心点;如果某一聚类中某个点的K值大于8.4595,则此点是极端点;对于极端点,采用曼哈顿距离计算该点与其相应中心点的距离。进一步的改进,所述完全分布式系统为Hadoop完全分布式系统。本发明的优点如下:1.本发明提出了一种基于冗余距离消除和极端点优化的并行k-means聚类方法,通过消除K-means聚类方法中产生的冗余距离和对极端点与其相应的中心点之间距离采用曼哈顿距离代替欧氏距离来计算。而且在迭代过程中采用平均值的计算方式来代替原有K-means聚类方法采取的随机选取中心点的方式,成功的解决了K-means聚类方法低效以及聚类结果不可靠的问题。2.本发明弥补了上述技术的不足的同时,还保留其各自的优势,使得K-means聚类方法变得更完美:第一,大范围的消除冗余距离计算,找出每个聚类中的冗余距离,然后避免聚类中的点与不相关的中心点做距离计算,让K-means方法在目前的情况下更大程度的消除冗余距离计算;第二,优化极端点的处理,对极端点采用曼哈顿距离代替欧氏距离来计算极端点与中心点之间的距离;最后,中心点的选取方式,采用平均值的计算方式代替随机选取的方式,使得聚类中的点分布的更均匀,聚类结果更精确。附图说明图1为本发明所述方法的MapReduce工作原理图;图2为本发明所述方法的流程图。具体实施方式下面将结合附图和实施例对本发明做进一步的说明。实施例1一种基于冗余距离消除和极端点优化的并行k-means聚类方法,包括以几个步骤:步骤1:在多台物理服务器上构建Hadoop完全分布式系统,将医疗数据及中心点数据导入HDFS(Hadoop完全分布式系统);步骤2:用户Client向步骤1所述的Hadoop完全分布式系统提交作业,Hadoop完全分布式系统将整个作业分解成split分块;步骤3:Hadoop启动多个Map任务分别split分块的数据,将数据按中心点进行聚类,把离中心点距离最近的点聚成一类;步骤4:消除每个聚类中的冗余距离计算,通过使用正弦定理和余弦定理,找出每个聚类中的冗余距离,避免聚类中的点与不必要的中心点做距离计算。对聚类中的极端点都采用曼哈顿距离代替欧氏距离计算这些点与其相应中心点的距离;步骤5:以聚类的中心点为key(键名),其他点为value(值),按照key值进行分区,从而产生分区partition;步骤6:每个partition由一个Reduce任务进行处理,依次统计Reduce任务接收到每一个key值对应的value;根据value求出平均值作为新的中心点集;步骤7:对比新产生的中心点集与当前的中心点集,如果两个中心点集相等,则将Reduce产生的<key,value>键值对作为最终的聚类结果。否则,用新产生的中心点代替当前的中心点,重复步骤2~6,获得最终的聚类结果。所述步骤4中冗余距离计算的方式是通过计算该点与其相应中心点的欧氏距离加上该点所在聚类的最大距离之和与该中心点到其他中心点的欧氏距离来决定。极端点的定义由下面的公式决定。K=Σi=1n(Xi-X‾)4(n-1)D2]]>其中。其中,n表示聚类中有n个点,X表示某一聚类中非中心点到中心点的距离,表示某一聚类中所有非中心点到中心点的距离平均值,D表示某一聚类中所有非中心点到中心点的距离的方差,i表示某一聚类中第i个非中心点;如果某一聚类中某个点的K值大于8.4595,则该点是极端点。对于极端点,我们采用曼哈顿距离代替欧氏距离来计算该点与其相应中心点的距离。如图1所示,MapReduce计算框架将整个作业切割成多个split分块,每个分块都交个一个Map任务来处理,然后经过Shuffle阶段,对每个分块进行排序,将产生的中间结果集放在本地磁盘存储,Reduce任务读取中间结果集,将相同key的数据放入相同的Reduce任务处理,Reduce将处理结果输出到HDFS中。如图2所示,为本发明方法的流程图。开发人员将数据集和中心点文件上传到HDFS中,然后在client端提交一个作业给RsourceManager,RsourceManager把数据集切割成多个分块,每个分块交给一个Map任务处理。Map任务处理完后将结果写入本地磁盘。Reduce读取中间结果集,将相同key的数据交给同一个Reduce来处理,Reduce重新计算中心点,然后对比新产生的中心点是否与当前的中心点相同,如果相同,该方法终止,否则继续从client端提交一个新作业个ResourceManager。为了验证本发明所述方法的正确性与可靠性,在7个节点的集群分别对传统K-means方法在MapReduce上的实现(MR-KCA)和本发明所述的K-means方法在MapReduce上的实现(IMR-KCA),运行10GB、20GB、40GB、80GB的数据集,分别选取1000、2000、3000、4000、5000个中心点,并记录每种情况的SSE、总执行时间和平均迭代时间。SSE是平方差之和,是评价K-means聚类方法准确性的一个标准。SSE的具体计算公式如下:SSE=Σi=1kΣx∈ci|x-xi‾|2]]>x是聚类ci中的点,是聚类ci的所有点的距离平均值。考虑到测试有一定的偶然性,每次测试都运行三次,统计数据取平均值,具体数据见下面的表1~8。从表1~4可以看出,随着中心点的增加,IMR-KCA和MR-KCA方法的SSE都减小,但是IMR-KCA的SSE要远远小于MR-KCA,尤其是当中心点的数量等于5000时,SSE能够减少30以上.SSE越小,说明聚类效果越好。表1不同中心点的SSE值在处理10GB数据集表2不同中心点的SSE值在处理20GB数据集表3不同中心点的SSE值在处理40GB数据集表4不同中心点的SSE值在处理80GB数据集从表5~8可以看出,随着数据集和中心点数的增加,IMR-KCA和MR-KCA的总执行时间都增加。相对MR-KCA来说,IMR-KCA所花费的时间要更少,提升的效率更高,特别是当数据集的容量是80GB,中心点个数达到5000时,IMR-KCA能提升效率到60%。表5不同中心点在处理10GB数据集时的总执行时间表6不同中心点在处理20GB数据集时的总执行时间表7不同中心点在处理40GB数据集时的总执行时间表8不同中心点在处理80GB数据集时的总执行时间以上实例的说明只是用于帮助理解本发明的核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1