基于MapReduce的并行SFLA-FCM聚类算法
2020-03-16
来源:爱问旅游网
Computer Engineering andApplications计算机工程与应用 基于MapReduce的并行SFLA—FCM聚类算法 苟 杰,马自堂 GOU Jie,MA Zitang 解放军信息工程大学三院,郑州450000 The Third Institute,PLA Information Engineering University,Zhengzhou 450000,China GOU Jie,MA Zitang.Parallel SFLA—FCM clustering algorithm based on MapReduce.Computer Engineering and Applications,2016,52(1):66-70. Abstract:Fuzzy C—Means(FCM)algorithm is a kind of widely used clustering algorithm.But the clustering quality of the FCM depends on the choice of initial values.Combined with the better searching performance of the Shufled Frog fLeaping Algorithm(SFLA),this paper presents a parallel SFLA—FCM clustering algorithm based on MapReduce.The algorithm uses the information transmitting within subgroups and global information exchange to search the high quality of the clustering center.The algorithm process is designed to conform to the MapReduce programming model and it has the ability of dealing with large-scale dataset.The experiments prove that parallel SFLA—FCM improves the searching performance and the accuracy of clustering results and has high speedup and scalability. Key words:clustering;Fuzzy C—Means(FCM):Shufled fFrog LeapingAlgorithm(SFLA):MapReduce 摘要:模糊c均值算法(Fuzzy C—Means,FCM)是目前应用比较广泛的一种聚类算法。FCM算法的聚类质量依赖 于初始聚类中心的选择并且易陷入局部极值,结合混合蛙跳算法(Shufled Frog Leapifng Algorithm,SFLA)较强的 搜索能力,提出一种基于MapReduce的并行SFLA—FCM聚类算法。该算法利用SFLA算法的子群内模因信息传递 和全局信息交换来搜索高质量的聚类中心,根据MapReduce编程模型设计算法流程,实现并行化,使其具有处理大 规模数据集的能力。实验证明,并行SFLA.FCM算法提高了的搜索能力和聚类结果的精度,并且具有良好的加速比 和扩展性。 天键词:聚类;模糊c均值算法;混合蛙跳算法;MapReduce 文献标志码:A 中图分类号:TP301 doi:10.3778 ̄.issn.1002—8331.1504.0199 l 引言 大数据时代的来临,对传统数据挖掘业带来了巨大 模的急剧增加,传统的串行计算模式已经无法满足大数 据量的计算需求。 目前,国内外的研究者提出了许多FCM算法的并行 的挑战。聚类分析是数据挖掘的一项关键技术,它既可 以作为一种分析手段获取数据集中隐藏的信息,又可以 作为数据挖掘其他技术的预处理阶段,提高挖掘效率。 聚类就是将事物按照某种规则,划分成若干个簇,使同 个簇中的元素尽可能的相似,不同簇中的元素尽可能 一方案。虞倩倩等人提出了基于MapReduce的并行模糊 C均值聚类算法,利用并行环境的优势,大幅度提高了 FCM处理大数据集的计算效率 。在此基础上,王永贵 等人针对该算法进行了改进,减少了MapReduce计算过 程中的迭代次数,提高了算法的整体执行效率 。余长 俊等人则通过利用Canopy算法对数据集进行预处理, 先得到初始数据集的粗略划分,再利用FCM算法进行 聚类,一定程度上提高了聚类效率 。但是,并行的FCM 的不同”。 。模糊c均值聚类算法是聚类分析与模糊理 论相结合的产物,利用模糊理论中描述事物间模棱两可 的关系,将K.means算法中数据元素之间的硬关系,转 化为软关系,更符合现实中的情况,提高了聚类精度,已 成功应用于模式识别、数据挖掘等领域。但随着数据规 算法对于初始聚类中心的选择具有敏感性,容易陷入局 作者简介:苟杰(1990一),男,硕士研究生,主要研究领域为大数据与数据挖掘,E—mail:xdgj0000000@163.corn;马自堂(1962一), 男(回族),教授,主要研究领域为信息安全、密码系统工程。 收稿口期:201 5-04—22 修同日期:2015—06—19 文章编g-:1002—8331(2016)01—0066—05 CNKI网络优先{』l版:2015-08—20,http://www.cnki.net/kcms/detail/11.2127.TP.20150820.1641.006.html 苟杰,马自堂:基于MapReduce的并行SFLA—FCM聚类算法 部极值,该问题在上述改进方案中并没有得到解决。 利用群智能算法的全局搜索能力解决初值设置困 难的问题,是一种有效的解决方案。混合蛙跳算法(SFLA) 2.2混合蛙跳算法 混合蛙跳算法由Eusuff和Lansey为解决组合优化 问题于2003年最先提出 。它的思想是模仿一群青蛙 在石头间跳跃觅食的过程,在觅食活动中,青蛙通过跳 跃来找到食物较多的地方。所有的青蛙划分为多个子 群,子群内部的青蛙进行交流来达到信息的共享,每一 只青蛙都代表一组解,这个解随着子群的进化而进化; 当子群发展到一定程度,各个子群间再进行信息的交 是一种全新的亚启发式协同搜索算法,结合了基于模因 进化的模因算法和基于群体行为的粒子群算法,在具有 遗传算法的全局寻优能力的同时,还具有粒子群算法较强 的局部寻优能力,并且计算简单,参数较少,容易实现 。 本文基于MapReduce的计算模型,提出了一种利用混合 蛙跳算法解决并行FCM算法初值敏感的问题,并在 Hadoop平台上进行了算法性能的实验。实验结果表 明:并行SFLA.FCM算法克服了FCM算法初值敏感的 问题,提高了算法的聚类精度,同时具有较高的加速比 和扩展性 2相关算法研究 2.1 FCM算法 设样本空间X有 个数据元素,表示为 ={ , ,…, ),其中 为第i个元素, 是数据元素集总量, 且 ≥2;预设聚类的类别数为尼,2≤尼≤,z;(c : 1,2,…,k) 表示聚类中心,其中C 为第i个聚类中心的簇心;将 分成k类可以用一个模糊矩阵/z=( )来表示,其中/z , 为第i个数据元素属于第,类的隶属度。 . FCM算法的目标函数J(/z,C)定义如下: ( ,c)=∑∑ 列 一Ci (1) 其中m(m>1)是模糊指数,可以控制聚类结果的模糊 程度。 FCM算法的执行过程就是通过迭代使目标函数 ( ,C)达到最小值,C均值要求一个样本对于各个聚 类中心的隶属度之和为1,即 ∑ =1, 1,2,…,n (2) 在式(2)的条件下求式(1)的极小值,令 ( ,C)对 C 和 的偏导数为0,可得必要条件: =∑ /∑ , =1,2,…,k (3) “ : —————————— : ::i ,z l, ,…,… , ; 耋(1/I 一 l J:1,2,…,k (4) FCM算法通过迭代的方式求解式(3)和式(4),使 用梯度下降的方式来优化目标函数,直到C 变化小于 预定阈值。该算法的聚类结果受初始聚类中心的影响 很大,若采用随机的方式确定初始聚类中心,结果容易 陷入局部极值,影响聚类效果㈣。 流,实现群体问的信息混合,直到达到最优解 …。混合 蛙跳算法实现了局部搜索和全局搜索的结合,在子群内 部通过局部搜索使模因信息在局部个体之间传递,优化 子群内的个体,然后混合所有青蛙,通过再分子群的过 程将全局信息在所有青蛙之间进行交换,该算法能够向 着全局最优的方向进行,子群内部的局部搜索与全局搜 索将分别在达到各自的收敛条件时结束。 混合蛙跳算法的一般过程描述为: (1)随机产生F只青蛙组成初始种群P={ ,置,…, },第k只青蛙表示问题的解为 ={x X”…,X }, 其中S为解空间的维数,初始化适应度函数f(x1。 (2)将所有的青蛙按照适应度函数的大小降序排 列,并标记最优的青蛙 ,然后将排序后的青蛙分配到 个子群中,每个种群中包含 只青蛙,则F=m x ,设 第i个子群的青蛙集合为F ,分配过程表达式为: Ff={ +m(1_l1∈Pl1<,< },1<i<m (5) (3)在每一个子群中,分别标记出最优的青蛙 和 最差的青蛙 执行子群内局部搜索,即对子群中 . ,进行更新操作,更新规则为: D=r×( 一 ) (6) x= +D,D≤D (7) 其中r为0到1之间的随机数,D为青蛙的跳跃步长, D…为青蛙的最大跳跃步长,经过一次更新后,若 , 优于原先的 则取代原子群中的蛙,否则,用 ,取 代 按照公式(6)、(7)重新执行更新操作。若执行后 还是没有改进,则在子群中随机产生一个新蛙代替 一 不断执行操作直到达到预设条件。 (4)将所有的蛙进行混合,重新排序和划分子群,重 复步骤(2)、(3),进行新一轮局部搜索,反复进行直到达 到最终终止条件,最好解的蛙即为最优解。 混合蛙跳算法的局部搜索和全局信息交换使得最 优解向全局最优移动,避免了陷入局部极值的困境。 3 MapReduce模型 MapReduce并行编程模型最早是由Google公司于 2004年提出的,Apache的开源项目Hadoop处理平台正是 基于这一模型开发,它将待处理的任务划分成两个处理 Computer Engineering andApplications计算机工程与应用 阶段,分别为Map阶段和Reduce阶段,每个阶段都以一 组键值对作为输入和输出。编程人员只需要根据需求对 Map()函数和Reduce()函数进行重写,而不用考虑分布 式环境的底层细节,具有编程简单,容易实现的特点 。 图1展示了MapReduce模型的计算流程。 输入数据Map阶段 中间结果 Reduce阶段输出数据 图1 MapReduce模型计算流程 (1)输入阶段:将分布式文件系统(Hadoop Distributed File System,HDFS)中的待处理数据分片Split,每一个 Split的默认大小为64MB(用户可自行更改大小),同时 创建数据片的副本,这些Split就近分配给Map节点,以 减少通信量。 (2)Map阶段:Mapper遍历所有的Split,并将其解析 成键值对(Key/Value),然后调用用户编写的Map()函数 对键值对i 亍女哩,输出若干中间键值对(keyi /Valuei )。 这里得到中间结果可以在Map阶段结束前进行预处理, 进行合并或者排序,减少传输给Reducer时的通信量。 (3)中间结果处理阶段:Partitioner的作用是对Mapper 的计算结果进行分片,以便同一分组的数据交给同一个 Reducer处理。默认的处理方式包括HashPartitioner和 TotalOrderPartitioner,前者是基于哈希的分片方法,后者 是基于区间的分片方法。Hadoop平台提供了Partitioner 接口,用户可以根据需求进行重写。 (4)Reduce阶段:遍历所有的中间结果,执行用户定 义的Reduce()函数,输出新的键值对(Key /Value 。 )。 (5)输出阶段:此阶段将Reducer的输出结果写入到 HDFS中的输出目录 。 4并行SFLA.FCM算法介绍 4.1算法设计 通过分析混合蛙跳算法的过程,可以发现,青蛙在 子群内部进行深度搜索更新时是相互独立的,在传统串 行的计算模式下,每个子群的迭代更新操作都是依次进 行的,前一个子群达到迭代次数后,下一个子群才能进 行迭代更新操作,这样就大大增加了算法的时间开销。 当面临大数据集时,子群的数量可能成千上百,在单一 节点上运行该算法,受制于计算机的内存和计算效率, 则出现运行时间不能容忍或者根本不可行的情况。 MapReduce计算模型提供的并行化设计思路需要算法的 计算过程具有一定独立性,并行化SFLA.FCM算法主要利 用子群内部更新迭代的独立性来实现,具体思路如下: Map阶段:由于MapReduce计算模型在节点问通信 时以键\值对的形式传输数据,所以需要将初始化的青 蛙进行改造,转化成键\值对的形式进行存储,将青蛙的 适应度作为Key值,青蛙的编码信息作为Value值。 Mapper从Split中读取青蛙的信息,输入数据为(行偏移 量,记录行),保证每个Mapper读取到的青蛙的数量大 致相同,充分利用计算机资源,避免出现负载不均衡的 情况。Map()函数主要完成所有青蛙适应度的计算,并 更新Key值,输出数据为(.厂( ), )。 Partition阶段:将所有的青蛙按照适应度的大小进 行排序,使用归并排序的方案,在Map阶段,每个Mapper 进行局部排序,在Reduce阶段,启动一个Reduce Task 进行全局排序。然后根据公式(5)分配所有的青蛙,将 同一个子群的青蛙分配到同一个Reducer进行处理。将 Partition函数中的 ̄numPartitions设置为m,即Reducer 的个数,使其与青蛙子群的数目保持一致。Pa ̄ition函 数影响Reducer的负载均衡,并使数据有序排列,以便于 Reduce()函数进行归约处理。 Reduce阶段:Reducer接收同一个子群的青蛙,输入 数据为(厂( 。), ),按照蛙跳算法的步骤执行子群内的 迭代搜索,输出更新后的青蛙,输出数据为(厂( ), )。 Reduce阶段完成后,将所有的青蛙混合,进行全局信息 的交换,然后把青蛙信息传输到Mapper继续进行种群 的重新划分,完成新一轮的迭代,如此反复,直到达到最 大迭代次数。 4.2蛙的编码方式 首先需要设计青蛙的编码方式。在混合蛙跳算法 中,青蛙代表解空间的一组解,FCM算法的结果是找到 k个最优聚类中心,所以,每只蛙由k个聚类中心组成, 第S只蛙的编码如下: X = X ssL’X …,X s (8) 4.3适应度函数设计 然后需要设定适应度函数,由FCM算法思想可知, 目标函数J(/z,C)是评价FCM聚类中心的指标,目标函 数越小,说明聚类中心越优,所以,混合蛙跳算法的适应 度函数可设定为: 厂( ) ‘9) 由此可知,目标函数越小,适应度函数越大,则聚类 中心质量越好。 4.4并行SFLA.FCM算法流程 并行SFLA.FCM算法流程如图2所示,具体步骤描 述如下。 步骤1设置参数及随机产生初始青蛙群体:设置蛙 的总数为F只,划分为m个种群,每个种群包含n只青 蛙,即满足F=m×n,设定全局迭代次数 ,子群迭代 苟杰。马自堂:基于MapReduce的并行SFLA—FCM聚类算法 次数 ,模糊参数m和聚类类别数k。设定Key值存 娱乐等18个频道的新闻数据,提供URL和正文信息,完 储青蛙的适应度,Value存储青蛙的编码。 步骤2计算适应度:将青蛙群体随机分配到Mapper, 保证每个Mapper的青蛙数大致一样,Mapper主要用公 整版大小为1.65 GB,另有随机采样的样例数据34 MB。 本文利用汉语词法分析系统ICTCLAS对数据文档进行 特征词的提取,结合文献[14】中提出的利用TF.IDF(Tem1 Frequency—Inverted Document Frequency)计算特征词 式(9)计算每只青蛙的适应度,输出数据为(.厂( ), )。 步骤3划分子群:Partitioner将青蛙按照适应度大 小依次排序,获取最优青蛙 ,然后按照公式(5)的种 群划分方式,将同一个种群的青蛙传给同一个Reducer, 权重的方式,可以得到文档矢量信息,通过计算多维向 量间的距离得到文档间的相异度,从而可以进行聚类。 5.2参数设置 本文提出的算法需要设置的参数有:模糊指数、青 蛙总数、子群数、子群内的迭代次数、混合迭代次数、青 蛙跳跃的最大步长。为了保证算法的准确性和效率,在 初始阶段进行了多次反复实验,设置模糊指数为2,青蛙 的总数为200,子群数量为5,每个子群中的数量为40, 子群内的迭代次数为30,混合迭代次数最大为100。 并设置numPartitions为m,即Reducer的个数。 步骤4局部更新:Reducer用公式(6)、(7)局部更新 接收到的种群,直到达到预设的迭代次数 。 步骤5全局更新:Reducer计算完成后,对更新后的 所有青蛙进行混排,转向步骤2,如果达到预设的全局最 大迭代次数 时,迭代结束,输出最优解。 步骤6获取结果:将步骤4生成的聚类中心作为FCM 青蛙的最大跳跃步长D…对于搜索的性能影响较 大,根据文献[15]和[161的描述,其取值依赖于青蛙的种 算法的初始聚类中心,将所有数据依据FCM算法聚类, 分配给所属聚类中心,到此算法结束,得到聚类结果。 群规模,青蛙的种群规模较大时,一般D…取值较大, 当种群规模较小时,D…取值相对也要较小。在本实 验环境中,进行多次实验后发现,当青蛙的D…取6时, 聚类效果最为理想。 5.3算法准确率比较 比较并行FCM算法和并行SFLA.FCM算法聚类 结果的准确性。实验采用样例数据。并行FCM算法采 用文献[3]提供的方案,随机产生初始聚类中心,重复实 验20次,在同样的运行环境下,使用本文提出的并行 SFLA-FCM算法对同样的数据进行聚类,重复20次,并 记录结果。 图2并行SFLA—FCM算法流程 从图3中可以看出,并行FCM的准确率波动比较 大,这是因为随机产生的初始聚类中心对聚类结果的影 响较大,又因为FCM算法容易陷入局部极值,所以聚类 结果的准确率波动较大,不稳定;而并行SFLA.FCM算 法的准确率波动范围较小,比较稳定。并行FCM算法 的平均准确率为75.46%,并行SFLA.FCM算法的平均 准确率为79.83%,高于并行FCM算法。 5实验结果分析 5.1实验环境 本文通过在实验室环境中搭载Hadoop进行实验, 搭建Hadoop平台的硬件选取情况如表1所示。 表1 Hadoop平台节点硬件信息 集群节点之间均以100 MB带宽互联,搭建Hadoop 平台的软件选取情况如下:Hadoop版本为2013.10.1放 出的2.2.0版本;OS为Ubuntu12.04。实验数据采用的是 实验次数 图3算法准确率比较 5,4算法性能比较 比较并行FCM算法和并行SFLA—FCM算法的运行 时间和适应度函数。实验采用样例数据,重复20次,计 搜狗实验室提供的搜狐新闻数据(SogouCS),该数据集 搜集了2012年6月至7月期间国内、国际、体育、社会、 70 2016,52(1) ComputerEngineering anaappUcations计算机工程与应用 算平均运行时间和平均适应度函数。 根据表2的数据显示,并行SFLA.FCM算法的运行 时间并不占优,这是由于该算法中子群内的迭代搜索消 耗了部分时间,但是算法的平均适应度和最大适应度均 高于并行FCM算法,表现出较好的搜索性能。 表2算法性能比较 5.5算法的加速比 算法的加速比可以衡量算法的并行性能,它指的是 同一个任务单节点运行时间与多节点运行时间的比 率。选择完整版数据,将原数据分成3个样本,大小分别 为0.5 GB、1.0 GB、1.5 GB,分别在2、3、4、5个节点上使用 并行的SFLA.FCM算法进行聚类。 从图4中可以看出,随着节点数目的增加,该算法 具有良好的加速比,随着数据规模的增加,加速比上升 趋势更加明显,证明并行SFLA.FCM算法在处理较大规 模的数据时,性能良好。 节点数目 图4并行SFLA..FCM算法的加速比 5.6算法的扩展性 算法的扩展性体现在算法能够随着节点数目和处 理数据规模的增加表现出良好的计算性能。同样选择 完整版数据,将原数据分成3个样本,大小分别为0.5 GB、 1.0 GB、1.5 GB,分别在2、3、4、54--节点上使用并行SFLA— FCM算法进行聚类。从图5中可以看出,随着节点数目 和数据规模的增加,算法的运行效率基本保持稳定,表 现出良好的扩展性。 厘 苔 节点数目 图5并行SFLA.TCM算法运行情况 6结束语 本文针对现有的并行模糊聚类算法对于初始聚类中 心敏感易陷于局部极值的缺陷,提出了利用混合蛙跳算 法和FCM算法相结合的并行SFLA.FCM聚类算法,利用 混合蛙跳算法较强的寻优能力,来发现高质量的聚类中 心,提高了聚类算法的精度。实验证明,并行SFLA.FCM 算法具有很好的聚类性能和求解精度,并且在并行环境 下保持了良好的加速比和扩展性。 参考文献: [1]孟小峰.大数据管理:概念、技术与挑战[J]_计算机研究与发 展,2013,50(1):146—169. [2]Hall L O.Clustering with a genetically optimized approach[J]. IEEE Trans on E ̄olutionary Computation,1 993,3(2): 103一l12. [3]YU Qianqian.Parallel fuzzy C—means algorithm based on MapReduce[J].Computer Engineering and Applications, 2013,49(14):133—137. [4]王永贵.MapReduce模型下的模糊C均值算法研究[J].计算 机工程,2014,40(10):47.51. [5]余长俊,云环境下基于Canopy聚类的FCM算法研究[J].计 算机科学,2014,41(11):316-319. [6]Mashhadi KA.Various strategies for partitioning of meme— plexes in shuflfed frog leaping algorithm[C]//Proceedings of the 14th Int CSI Computer Conf.New York:IEEE Press, 2009:576—581. [7】卞艺杰.改进混合蛙跳算法和K-Means的新型聚类算法[J]. 计算机系统应用,2014,23(7):115-119. [8]武小红.可能性模糊C--均值聚类新算法[J].电子学报,2008, 36(10):1996—2000. [9]Eusuff M M.Optimization of water distirbution network design using the shuflfed frog lea ping algorithm[J].Water Resour Plan Manage,2003,129(3):210—225. [1 0]Du Changhai.Application of improved Fuzzy C--Means clustering in automatic programming lrafifc intervals[J]. Computer Engineering and Applications,2009,45(24): 190—193. [11]杨祖元.基于SFLA.-FCM聚类的城市交通状态NI ̄,I研究[J]. 计算机应用研究,2010,27(5):1743—1745. [12]Ngazimbi M.Data clustering using MapReduee[D].Idaho: Boise State University,2009. [13]Tom W.Hadoop权威指南[M】.2版.周敏奇,王晓玲,译.北 京:清华出版社,2011:167—186. [14]俞文明.Web中文文本聚类研究[D].杭州:杭州电子科技 大学,2009. [15]李英海.一种基于阈值选择策略的改进混合蛙跳算法fJ]. 计算机工程与应用,2007,43(35):19.21. [16]Amiri B.Applicatino of shuflfed frog leaping algorithm on clustering[J].The International Journal of Advanced Manufacturing Technology,2009,45(1):199--209.