- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Mapreduceafsakm聚类算法并行实现
基于Mapreduceafsakm聚类算法并行实现
摘要:针对kmeans算法对初始聚类中心敏感的问题,提出利用人工鱼群算法去优化k均值算法,即先通过人工鱼的行为进行全局搜索,得到一个初始的全局最优划分后再进行聚类,运用云平台Hadoop的并行处理框架Mapreduce对混合算法实施并行处理,从而快速准确地处理大量数据。实验结果表明,改进后的算法在执行速度、准确性、加速比及可扩展性方面都有所提高。
关键词关键词:聚类;kmeans算法;人工鱼群算法;Mapreduce
DOIDOI:10.11907/rjdk.161281
中图分类号:TP312文献标识码:A文章编号文章编号2016)007005103
0引言
kmeans是一种基于划分的聚类算法,其相似性评价指标为距离,即两个对象距离越近,其相似度越大。算法随机地确定初始值,再优化初始划分。如果初始值选择不合适,算法就易陷入局部最优。为解决这一问题,本文采用人工鱼群算法(AFSA)进行初始化。
针对大数据时代产生的海量数据,在高效存储及计算方面,分布式平台Hadoop发挥着重要作用。本文研究了基于Mapreduce的afsa_km聚类算法,通过相关实验解决了kmeans对初始值敏感的问题,提高了海量数据处理的准确性及效率。1串行afsa_km算法
afsa_km算法利用afsa全局寻优特点,先通过鱼群行为搜索数据集中最优或者靠近最优的解,再把这些解作为kmeans的初始值。该方式在一定程度上能改善kmeans对初始中心敏感的问题,算法流程如图1所示。1.1人工鱼群算法
一般认为一片水域中食物多的地方会有较多的鱼群。全局寻优是利用鱼群追尾、群聚等行为寻找食物的过程,文献中详细说明了算法步骤。
变量定义:X=(x1,x2,…,xn)为个体状态,其中xi(i=1,2,…,n)为寻优变量,人工鱼最大步长为Step,人工鱼的视野为Visual,尝试次数为Try_number,拥挤度因子为λ,人工鱼个体间距离dij=|Xi-Xj|,人工鱼当前位置的食物浓度Y=f(X)。
追尾行为:若当前鱼的状态为 Xi,搜索其视野范围 Visual内相邻伙伴,得到其中的最优个体状态 Xj。若 Xj优于当前状态 Xi,且其周围的拥挤程度不大于λ ,则当前鱼以步长Step向该状态前进一步,否则进行觅食行为。
聚群行为:若当前鱼的状态为 Xi,搜索其视野范围Visual内相邻伙伴,得到相邻伙伴的中心状态 Xc,若状态 Xc优于当前状态 Xi,且其周围的拥挤程度小于λ,则当前鱼向该状态前进一步,否则进行觅食行为。
觅食行为:若当前鱼的状态为 Xi,随机寻找一个在其视野内的状态Xj。若Xj优于当前状态 Xi,则当前鱼以步长Step向该状态前进一步,否则继续随机寻找一个新的状态。若尝试一定次数后,仍没有优于当前的状态,则当前鱼随机移动一步。
随机行为:若当前鱼的状态为 Xi,在其搜索范围内找不到更优的状态,为了扩大搜索空间,随机选择一个视野范围内的状态 Xj,便于跳出局部。
公告板:用来记录目标函数值、最优人工鱼个体状态和历史最优人工鱼个体状态。每条人工鱼在行动一次后就将自身状态与公告板进行比较,如果优于公告板状态,就改写公告板状态。
将人工鱼寻找食物的过程作为聚类时寻找类中心点的过程,满足误差平方和公式(1)即可认为找到最优中心点。
式(1)中k为聚类中心个数,ci为聚类中心,xj为聚类对象。
1.2kmeans聚类算法
kmeans是划分方法中比较经典的聚类算法,由于效率高,在对大规模数据进行聚类时广泛应用。算法以k为参数,把n个对象分成k个簇,使簇内有较高的相似度,而簇间的相似度较低。kmeans具体运行过程如下:先随机选择k个对象,每个对象代表一个簇的平均值或中心;对剩余的对象,根据其与簇中心的距离,将它赋给最近的簇,重新计算每个簇的平均值。 这个过程不断重复,直到准则函数收敛,最后输出k个聚类中心。2并行afsa_km聚类算法
文献采取的改进afsa_km算法可以很好地弥补kmeans算法的缺陷,提高算法准确度。由于整个程序是串行实现的,在处理大规模数据时,效率较低。人工鱼群算法是一种并行算法,可以在Hadoop平台上执行。本文将人工鱼群和kmeans算法全都并行化,并在Hadoop上运行。2.1并行人工鱼群算法
算法思想是:将鱼群划分为几个子鱼群,每个子鱼群在给定的数据集中得到本次过程的局部最优值,再汇总每个子鱼群的最优解,得到本次运行的全局最优解,算法流程如图2所示。在Hadoop中,Map函数主要完成每个子鱼群的寻优,包括觅食、群聚、追尾,输出子鱼群的
原创力文档


文档评论(0)