-
随着计算机和存储技术的快速发展,在商业、社会、工程和医学等各方面都会产生大规模的数据,人们开始关注如何对大规模的海量数据进行分析和科学研究,进而辅助商业决策和企业管理,高效地发现隐藏在数据中的有用知识。因此,对海量数据的挖掘得到了广泛的研究和关注。
聚类分析是数据挖掘领域最重要的研究方向之一。“物以类聚、人以群分”,聚类算法是将物理或抽象的对象分成相似对象集合的过程。簇是数据对象的集合,同一簇中的对象彼此相似,而与其他簇中的对象相异[1-2]。与其他数据挖掘方法相比,聚类不需要先验知识,就可以完成数据的分类。聚类算法可以分为基于划分的、密度的、模型的等多种类型[3]。
在基于划分的聚类算法中,K-means算法被广泛使用,它具有算法数学思想简单、收敛速度快且易于实现等多种优点[4],但存在需要事先制定聚类个数,以及由于中心点选择的随机性而易陷入局部最优解的问题。随着数据量的增大,传统的K-means算法在对海量数据集进行分析时,已经很难满足现实需要。针对传统K-means算法的缺点,已有很多学者在K-means的基础上提出了改进措施。文献[5]针对初始聚类中心选择的问题,提出了一种基于最优划分的聚类中心选择算法,该算法通过对数据集进行初始划分,确定K-means的初始中心,提高了聚类的准确度,但算法的递归次数会随数据样本维度的的增加而激增,因此导致算法实时性降低。文献[6]提出了一种通过采样和K-means预聚类,构造相交子簇的加权连通图,进而合并子簇得到最终聚类结果的改进K-means算法,该算法提高了K-means算法局部聚类的精度,但由于其缺乏对样本空间的整体把握,聚类效果仍有待提高。文献[7]提出使用Canopy算法优化K-means算法,进一步优化了初始中心的选择问题,但Canopy算法初始阈值大小的确定一般靠人工选取,因此效果并不稳定。此外,文献[8]采用AP聚类算法[9]来确定k可取的最大值;文献[3]提出采用最大最小距离法来选取初始聚类中心。基于以上算法本文以传统的K-means聚类算法为基础,探讨了如何在MapReduce分布式框架下,快速、准确、高效地进行聚类,提出了一种针对海量数据挖掘的分布式聚类算法:即通过Canopy算法初始化来选择K-means中心点,使待聚类的每个点在其所属Canopy中进行聚类,重新计算中心点,同时进行邻近Canopy的合并,反复以上过程直至收敛。并通过使用余弦相似度算法,将方法用于文本聚类中。
-
并行计算是指同时使用多种计算资源解决计算问题的过程。其目的是快速解决大型且复杂的计算问题。其首要任务是将一个应用分解成多个子任务,将其分配给不同的处理器,同时各个处理器之间相互协同,并行地执行子任务,最后将所有子任务的结果合并形成整体的计算任务结果,从而达到加速求解的目的。
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop,为用户提供了系统底层细节透明的分布式基础框架[10]。MapReduce是一种用于处理海量数据的编程模型,它将并行处理海量数据的过程抽象成为“Map(映射)”和“Reduce(化简)”两个步骤[11]。Map任务将输入的文件转换成一个key-value对序列,Reduce将Map输出的键值对序列以某种方式进行合并和汇总,同时,Reduce输出的key-value对会按照key位进行排序。MapReduce的处理流程如图 1所示。MapReduce还提供Combine函数,Combine函数在Map结束后于本地进行结果合并,相当于本地的Reduce,可以大大减少网络I/O操作的消耗。通过MapReduce提供的接口,使得开发人员大大减少了并行化开发的工作量,可以高效地利用分布式资源,而不需要分布式计算的开发经验[12],实现该框架下的应用程序可以运行在大规模集群,而且集群对应用程序是透明的,具有很好的容错机制,能够可靠地并行处理大规模数据。
-
聚类是数据挖掘中的重要算法之一,它的目的是在无先验知识的条件下,按照数据集中数据本身的特点和差异,把一个数据集分割成若干个不同的类或簇,使得在同一个类中的数据对象的差异性尽可能小,而处于不同类中的数据对象的差异性尽可能的大。即可将聚类定义为:若数据集X中有n个数据点x,其中$X=({{x}_{1}},{{x}_{2}},\cdots ,{{x}_{n}})$,聚类的最终目的就是把数据集X分为k个类Ci,使得$X={{C}_{1}}\bigcup $ ${{C}_{2}}\bigcup \cdots \bigcup {{C}_{k}}\bigcup {{C}_{n}}$(其中,Cn为噪声)且${{C}_{i}}\bigcap {{C}_{j}}=\Phi $ ($i\ne j$)。需要说明的是,在模糊聚类中,每个数据点可能会属于多个类,因此类间可能会存在交集。
K-means算法是聚类算法中使用最为广泛的算法之一,其用到的数学思想简单,但效率高,且在对“圆形-球形”性质集合进行分类时,可以达到良好的聚类结果。传统K-means算法的执行过程如下所述[13]:
1) 针对数据集$X=({{x}_{1}},{{x}_{2}},\cdots ,{{x}_{n}})$首先通过人工指定数字K作为要聚类的数目,并随机从样本点中选取相应数目的初始聚类中心$\{{{c}_{1}},{{c}_{2}},\cdots ,{{c}_{k}}\}$;
2) 计算各个样本点xi到这k个聚类中心的距离,并把样本xi归到与他距离最近的那个聚类中心ci所在的类中;
3) 根据前一步的结果,计算同一个类中所有样本点的各维平均值,作为新一轮聚类的k个中心;
4) 再重复上述过程继续聚类,直至收敛。
简单地说,K-means聚类的目的,就是使得式(1)最小化:
$$J=\sum\limits_{i=1}^{n}{\sum\limits_{j=1}^{k}{{{r}_{ij}}{{\left\| {{x}_{i}}-{{c}_{j}} \right\|}^{2}}}}$$ (1) 其中,
$${{r}_{ij}}=\left\{ \begin{align} & 1 {{x}_{i}}\in {{c}_{j}} \\ & 0 {{x}_{i}}\notin {{c}_{j}} \\ \end{align} \right.$$ (2) K-means算法简单高效,但其缺点也十分明显。首先,聚类的数目依赖于k值设定,而在实际中,k值一般是难以界定的,而k值的指定决定了聚类的结果。其次,初始聚类中心是随机选择的,使得最终的聚类结果依赖于初始中心点的选择,导致结果的不稳定性[14]。同时,在标准K-means算法中,许多距离计算是冗余的,因此当计算量很大时,算法的时间开销也非常大。
Canopy[15]算法也是一种聚类方法,主要用于海量高维数据的聚类。Canopy可以粗略地将数据划分成若干个重叠子集,即Canopy(罩盖)。每个子集作为一个类簇,其一般使用一种代价低的相似性度量方法,以加快聚类的速度[16]。因此,Canopy聚类一般用于其他聚类算法的初始化操作。Canopy算法中,Canopy(罩盖)的形成需要指定两个距离阈值,T1、T2(T1>T2)。首先,在数据集中选择一个点作为初始中心点加入到Canopy(罩盖)中心列表C中。对数据集中任意一个点xi(${{x}_{i}}\notin C$),若xi与cj(${{c}_{j}}\in C$)的距离均大于T1,则将xi作为一个新的Canopy(罩盖)中心加入到C中;若距离小于T1,则将xi加入以cj为中心的罩盖中;若xi与cj的距离小于T2,将xi与cj强关联,xi不再能作为其他罩盖的中心,因此将其从
数据集中删去;反复以上过程,直至数据集为空[17]。Canopy聚类允许有重叠子集,增加了算法的容错性和消除孤立点作用;同时,由于只需在罩盖内进行精确聚类,从而避免了对所有点精确聚类带来的计算量大的问题。
-
利用本文提出的改进Canopy-K-means算法进行文本聚类,采用文本向量空间模型VSM对文本进行预处理。即给定文本集$D=\{{{d}_{1}},{{d}_{2}},\cdots ,{{d}_{n}}\}$,di表示每个文本向量,且${{d}_{i}}=(<{{t}_{1}},{{w}_{i1}}>,<{{t}_{2}},{{w}_{i2}}>,\cdots ,$ $<{{t}_{j}},{{w}_{ij}}>)$。其中$T=\{{{t}_{1}},{{t}_{2}},\cdots ,{{t}_{j}}\}$表示从所有文本中提取的特征词集合,${{W}_{i}}=\{{{w}_{i1}},{{w}_{i2}},\cdots ,{{w}_{ij}}\}$表示文本di中包含各个特征词所对应的权重。向量权重的计算采用统计方法TF-IDF(term frequency-inverse document frequency)[3]来计算:
$${{w}_{ij}}={{f}_{ij}}\log (N/{{n}_{i}}+0.01)$$ (3) 式中,wij表示词语i在文档j中的权重值;fij为词语i在文档j中的出现次数;ni表示整个文本集中出现过词语i的文本数;N为文档总数。由式(3)可以看出,词语i在该文本中出现的次数越多,其权值越大;而整个文本集中出现过词语i的文本越多,其权值则会相应减少,也就是说,字词的权重与它在文件中出现的次数成正比,与它在资料库中出现的频率成反比[10]。具体实现中,在构建向量空间模型之前,采用中科院计算机研究所研制的汉语词法分析系统NLPIR[19],同时,利用哈工大中文停词表去除广泛使用词语和实际意义很小的词语,最后选择特征较大的词语形成VSM中的维度。
-
本文算法使用两个点之间的距离作为衡量两个点是否相似的标准。而在文本聚类中通常是使用两个文本向量间夹角的余弦值,即余弦相似度,来衡量两个文档的相似程度。而由于两个文本之间,向量夹角余弦值越大,相似度越大,说明其距离越小,也就是相似度和距离成反比,因此构造式(4)来定义两个文本di、dj之间的距离。
$$\text{dist}({{d}_{i}},{{d}_{j}})={{\log }_{a}}(\text{sim}({{d}_{i}},{{d}_{j}})))(a\in (0,1))$$ (4) 式中,
$$\text{sim}({{d}_{i}},{{d}_{j}})=\frac{{{d}_{i}}{{d}_{j}}}{|{{d}_{i}}||{{d}_{j}}|}$$ (5) 式中,$\text{dist}({{d}_{i}},{{d}_{j}})$为两个文本的距离;$\text{sim}({{d}_{i}},{{d}_{j}})$为两个文本的余弦相似度。
-
实验采用UCI Machine Learning Repository[20]机器学习数据集中的Iris和Wine数据集,其中,Iris数据集共有150个样本,每个样本4个属性,共分为3类;Wine数据集共178个样本,每个样本13个属性,分为3类。文本聚类方面,选用搜狗实验室文本分类语料库[21]中选取财经、体育、旅游、教育4个类别的中文新闻文档各1 000篇。另外,为了对算法的扩展性进行验证,将Iris数据集构造成维度60维,行数为100万行(0.25 G)、300万行(0.6G)、500万行(1.1G)、900万行(2G)的更大规模数据集。
-
实验在由4台Ubuntu14.04平台下搭建的Hadoop集群下完成,由1台作为namenode,3台作为datanode,其配置均为2 GB内存,80G硬盘,Hadoop版本为1.2.1。
1) 算法准确度
利用Iris数据集、wine数据集对算法聚类准确性进行检验,实验一共进行20次,结果为这20次的平均值。在传统K-means过程中,由于每次选择的初始中心不同,聚类效果不稳定,迭代次数较多,而本文算法由于优化了中心的选择,因此结果十分稳定。由表 1可知,本文算法的正确率高于传统K-means算法,而误差平方和以及迭代次数比K-means算法更低,说明本文算法聚类结果的类内相似度更高且收敛速度更快。
表 1 数据集测试结果
数据集 传统K-means 本文算法 正确率 误差平方和 迭代次数 正确率 误差平方和 迭代次数 Iris 0.842 92.56 10 0.903 78.95 5 Wine 0.887 48.98 8 0.921 41.94 6 在利用本文算法进行文本聚类时,采用前文中提到的通过文本间余弦相似度来计算距离的方法来衡量文本间的距离,在不同的单词提取率下比较本文算法与传统K-means算法在文本聚类上的准确率(precision)、召回率(recall)和F度量值[22],如表 2所示。
可以看到,本文算法可以很好地应用到文本聚类中。
表 2 文本聚类测试结果
单词提取率 传统K-means 本文算法 准确率 召回率 F度量 准确率 召回率 F度量 0.002 0.61 0.62 0.62 0.76 0.74 0.75 0.005 0.75 0.68 0.72 0.87 0.73 0.80 0.01 0.68 0.66 0.67 0.81 0.70 0.75 2) 算法扩展性
为了分析算法在Hadoop框架下并行执行的性能,需要计算算法执行的加速比。对同一个计算任务,并行算法的加速比等于单机执行时间除以并行执行时间的值。加速比是用来衡量程序执行并行化的重要指标[13, 15]。算法加速比曲线如图 4所示,由图 4可知,本文算法在并行化后有良好的加速比,并随着数据集的增大效果更佳明显。
The Parallel Implementation and Application of an Improved K-means Algorithm
-
摘要: 随着数据的爆炸式增长,聚类研究作为大数据的核心问题之一,正面临计算复杂度高和计算能力不足等诸多问题。提出了一种基于Hadoop的分布式改进K-means算法,该算法通过引入Canopy算法初始化K-means算法的聚类中心,克服传统K-means算法因初始中心点的不确定性,易陷入局部最优解的问题。本算法在Canopy(罩盖)中完成K-means聚类,并在Canopy间完成簇的合并,聚类效果稳定,迭代次数少。同时,结合MapReduce分布式计算模型,给出改进后算法的并行化设计方法和策略,进一步通过改进相似度度量方法,将该方法用于文本聚类中。实验结果证明该算法具有良好的准确率和扩展性。Abstract: Following with the growth of massive data, clustering research, one of the core problems of big dataisfaced with more and more problems such as high computing complexity and lack of resource. It has proposed an improved parallel K-means algorithm based on Hadoop. To overcomethe problem that the traditional K-means algorithm often has local optimal solution due to the randomness choice of initial center, we introduce Canopy algorithm to initialize clustering center andapply K-means algorithm on canopy. Meanwhile, clusters are merged among canopies. The result is stable and iteration number is less. In addition, the parallel implementation methods and strategies of the improved algorithm are presented, combining with the distributed computing model of MapReduce. And a new method of text clustering is introduced by improving the similarity of measurement. The experiment results indicate the validity and scalability of our method.
-
Key words:
- canopy algorithm /
- Hadoop /
- MapReduce /
- parallel K-means /
- text clustering
-
表 1 数据集测试结果
数据集 传统K-means 本文算法 正确率 误差平方和 迭代次数 正确率 误差平方和 迭代次数 Iris 0.842 92.56 10 0.903 78.95 5 Wine 0.887 48.98 8 0.921 41.94 6 表 2 文本聚类测试结果
单词提取率 传统K-means 本文算法 准确率 召回率 F度量 准确率 召回率 F度量 0.002 0.61 0.62 0.62 0.76 0.74 0.75 0.005 0.75 0.68 0.72 0.87 0.73 0.80 0.01 0.68 0.66 0.67 0.81 0.70 0.75 -
[1] 孙吉贵, 刘杰, 赵连宇. 聚类算法研究[J]. 软件学报, 2008, 19(1):48-61. doi: 10.3724/SP.J.1001.2008.00048 SUN Ji-gui, LIU Jie, ZHAO Lian-yu. Clustering algorithm research[J]. Journal of Software, 2008, 19(1):48-61. doi: 10.3724/SP.J.1001.2008.00048 [2] JAIN A K, MURTY M N, FLYNN P J. Data clustering:a review[J]. ACM Computing Surveys (CSUR), 1999, 31(3):264-323. doi: 10.1145/331499.331504 [3] 翟东海, 鱼江, 高飞, 等. 最大距离法选取初始聚类中心的K-means文本聚类算法的研究[J]. 计算机应用研究, 2014, 31(3):713-715, 719. http://www.cnki.com.cn/Article/CJFDTOTAL-JSYJ201403018.htm ZHAI Dong-hai, YU Jiang, GAO Fei, et al. K-means text clustering algorithm based on centers selection according to maximum distance[J]. Application Research of Computers, 2014, 31(3):713-715, 719. http://www.cnki.com.cn/Article/CJFDTOTAL-JSYJ201403018.htm [4] 赵庆. 基于Hadoop平台下的Canopy-Kmeans高效算法[J]. 电子科技, 2014, 27(2):29-31. http://www.cnki.com.cn/Article/CJFDTOTAL-DZKK201402009.htm ZHAO Qing. Efficient algorithm of canopy-kmeans based on Hadoop platform[J]. Electronic Science and Technology, 2014, 27(2):29-31. http://www.cnki.com.cn/Article/CJFDTOTAL-DZKK201402009.htm [5] 张健沛, 杨悦, 杨静, 等. 基于最优划分的K-Means初始聚类中心选取算法[J]. 系统仿真学报, 2009, 21(9):2586-2589. http://www.cnki.com.cn/Article/CJFDTOTAL-XTFZ200909033.htm ZHANG Jian-pei, YANG Yue, YANG Jing, et al. Algorithm for initialization of K-means clustering center based on optimized-division[J]. Journal of System Simulation, 2009, 21(9):2586-2589. http://www.cnki.com.cn/Article/CJFDTOTAL-XTFZ200909033.htm [6] 雷小峰, 谢昆青, 林帆, 等. 一种基于K-means局部最优性的高效聚类算法[J]. 软件学报, 2008, 19(7):1683-1692. doi: 10.3724/SP.J.1001.2008.01683 LEI Xiao-feng, XIE Kun-qing, LIN Fan, et al. An efficient clustering algorithm based on local optimality of K-means[J]. Journal of Software, 2008, 19(7):1683-1692. doi: 10.3724/SP.J.1001.2008.01683 [7] 邱荣太. 基于Canopy的K-means多核算法[J]. 微计算机信息, 2012(9):486-487. http://www.cnki.com.cn/Article/CJFDTOTAL-WJSJ201209200.htm QIU Rong-tai. Canopy for K-means on multi-core[J]. Microcomputer Information, 2012(9):486-487. http://www.cnki.com.cn/Article/CJFDTOTAL-WJSJ201209200.htm [8] 周世兵, 徐振源, 唐旭清. 新的K-均值算法最佳聚类数确定方法[J]. 计算机工程与应用, 2010, 46(16):27-31. http://www.cnki.com.cn/Article/CJFDTOTAL-JSGG201016009.htm ZHOU Shi-bing, XU Zhen-yuan, TANG Xu-qing. New method for determining optimal number of clusters in K-means clustering algorithm[J]. Computer Engineering and Applications, 2010, 46(16):27-31. http://www.cnki.com.cn/Article/CJFDTOTAL-JSGG201016009.htm [9] FREY B J, DUECK D. Clustering by passing message between data points[J]. Science, 2007, 315:972-976. doi: 10.1126/science.1136800 [10] 陆嘉恒. Hadoop实战[M]. 2版. 北京:机械工业出版社, 2012. LU Jia-heng. Hadoop in action[M]. 2nd ed. Beijing:China Machine Press, 2012. [11] DEAN J, GHEMAWAT S. MapReduce:Simplified data processing on large clusters[J]. Communications of the ACM, 2008, 51(1):107-113. doi: 10.1145/1327452 [12] 丁智, 林治. MapReduce编程模型、方法及应用综述[J]. 电脑知识与技术, 2014, 10(30):7060-7064. http://www.cnki.com.cn/Article/CJFDTOTAL-DNZS201430023.htm DING Zhi, LIN Zhi. Review on MapReduce programming model, method and application[J]. Computer Knowledge and Technology, 2014, 10(30):7060-7064. http://www.cnki.com.cn/Article/CJFDTOTAL-DNZS201430023.htm [13] 陈爱平. 基于Hadoop的聚类算法并行化分析及应用研究[D]. 成都:电子科技大学, 2012. http://cn.bing.com/academic/profile?id=3b7ec4f1e47ca0f6937a4f57860ea1c5&encoded=0&v=paper_preview&mkt=zh-cn CHEN Ai-ping. The parallel analysis and application research on clustering algorithm based on Hadoop[D]. Chengdu:University of Electronic Science and Technology of China, 2012. http://cn.bing.com/academic/profile?id=3b7ec4f1e47ca0f6937a4f57860ea1c5&encoded=0&v=paper_preview&mkt=zh-cn [14] 韩凌波, 王强, 蒋正锋, 等. 一种改进的K-Means初始聚类中心选取算法[J]. 计算机工程与应用, 2010, 46(17):150-152. http://www.cnki.com.cn/Article/CJFDTOTAL-JSGG201017044.htm HAN Ling-bo, WANG Qiang, JIANG Zheng-feng, et al. Improved K-means initial clustering center selection algorithm[J]. Computer Engineering and Applications, 2010, 46(17):150-152. http://www.cnki.com.cn/Article/CJFDTOTAL-JSGG201017044.htm [15] ESTEVES K M, RONG C. Using Mahout for clustering Wikipedia's latest articles:a comparison between K-means and fuzzy c-means in the cloud[C]//Proceedings of the 2011 Third IEEE International Conference Science, Cloud Computing Technology and IEEE Computer Society. Washington, DC, USA:IEEE, 2011:565-569. [16] 余长俊, 张燃. 云环境下基于Canopy聚类的FCM算法研究[J]. 计算机科学, 2014, 41(11A):316-319. http://www.cnki.com.cn/Article/CJFDTOTAL-JSJA2014S2077.htm YU Chang-jun, ZHANG Ran. Research of FCM algorithm based on canopy clustering algorithm under cloud environment[J]. Computer Science, 2014, 41(11A):316-319. http://www.cnki.com.cn/Article/CJFDTOTAL-JSJA2014S2077.htm [17] MCCALLUM A, NIGAM K, UNGAR I H. Efficient clustering of high-dimensional data sets with application to reference matching[C]//Proceedings of the Sixth ACM SIUKDD International Conference on Knowledge Discovery and Data Mining.[S.l.]:ACM, 2000:169-178. http://cn.bing.com/academic/profile?id=0462a7733642c44a85ce451d779c150b&encoded=0&v=paper_preview&mkt=zh-cn [18] 樊宁. K均值聚类算法在银行客户细分中的研究[J]. 计算机仿真, 2011, 28(3):369-372. http://www.cnki.com.cn/Article/CJFDTOTAL-JSJZ201103090.htm FAN Ning. Simulation study on commercial bank custermer segmentation on K-means clustering algorithm[J]. Computer Simulation, 2011, 28(3):369-372. http://www.cnki.com.cn/Article/CJFDTOTAL-JSJZ201103090.htm [19] 张华平. 自然语言处理与信息检索共享平台[EB/OL].[2015-03-30]. http://www.nlpir.org/. ZHANG Hua-ping. Natural language processing and information retrieval sharing platform[EB/OL].[2015-03-30]. http://www.nlpir.org/. [20] UCI. UCI Machine learning repository[DB/OL].[2015-03-30]. http://archive.ics.uci.edu/ml/. [21] 搜狗.文本分类语料库[DB/OL].[2015-03-30]. http://www.sogou.com/labs/dl/c.html. Sougou. Text classify lab data[DB/OL].[2015-03-30]. http://www.sogou.com/labs/dl/c.html. [22] YANG Y. An evaluation of statistical approaches to text categorization[J]. Information Retrieval, 1999, 1(1-2):69-90.