《電子技術(shù)應用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應用 > 云環(huán)境下K-means算法的并行化
云環(huán)境下K-means算法的并行化
2015年微型機與應用第24期
何佩佩1,2,謝穎華1,2
(1.數(shù)字化紡織服裝技術(shù)教育部工程研究中心,上海 201620; 2.東華大學 信息科學與技術(shù)學院,上海 201620)
摘要: 隨著大數(shù)據(jù)時代的到來,傳統(tǒng)的聚類算法很難高效地處理海量數(shù)據(jù),而云計算平臺憑借負載均衡、網(wǎng)絡(luò)存儲、虛擬化等技術(shù),有效地突破了耗時耗能的瓶頸,為海量數(shù)據(jù)的處理提供了良好的解決方案。主要研究了Hadoop平臺下的MapReduce編程模型及傳統(tǒng)K-means算法,提出了一種基于MapReduce的并行化K-means算法的設(shè)計方案,包括Map函數(shù)和Reduce函數(shù)的設(shè)計。通過實驗,驗證了并行化K-means算法適用于較大規(guī)模數(shù)據(jù)集的分析和挖掘。
Abstract:
Key words :

  摘  要: 隨著大數(shù)據(jù)時代的到來,傳統(tǒng)的聚類算法很難高效地處理海量數(shù)據(jù),而云計算平臺憑借負載均衡、網(wǎng)絡(luò)存儲、虛擬化等技術(shù),有效地突破了耗時耗能的瓶頸,為海量數(shù)據(jù)的處理提供了良好的解決方案。主要研究了Hadoop平臺下的MapReduce編程模型及傳統(tǒng)K-means算法,提出了一種基于MapReduce的并行化K-means算法的設(shè)計方案,包括Map函數(shù)和Reduce函數(shù)的設(shè)計。通過實驗,驗證了并行化K-means算法適用于較大規(guī)模數(shù)據(jù)集的分析和挖掘。

  關(guān)鍵詞: 云計算;數(shù)據(jù)挖掘;MapReduce編程模型;K-means聚類算法;并行化

0 引言

  隨著信息化社會的發(fā)展,各個行業(yè)中產(chǎn)生的數(shù)據(jù)都在以爆炸式的速度增長。典型的聚類算法——K-means算法是基于劃分的聚類算法,因其快速、簡單的特性而被廣泛應用。但在面對海量數(shù)據(jù)時,傳統(tǒng)的K-means算法無論是在時間復雜度還是空間復雜度上都遇到了瓶頸[1],而云計算技術(shù)的出現(xiàn)為海量數(shù)據(jù)的處理提供了良好的解決方案。

  云計算是一種基于互聯(lián)網(wǎng)的計算方式。Hadoop則是云計算技術(shù)的開源實現(xiàn),具有高容錯、跨平臺等優(yōu)勢。它主要包含兩個部分:分布式文件系統(tǒng)(HDFS)和MapReduce編程模型。本文在基于Hadoop云計算平臺,利用MapReduce編程模型實現(xiàn)了傳統(tǒng)K-means聚類算法的并行化設(shè)計,并進行了相關(guān)實驗的驗證。

1 MapReduce編程模型

  MapReduce編程模型,顧名思義,由Map(映射)階段和Reduce(規(guī)約)階段組成,分別用兩個函數(shù)表示,即Map函數(shù)和Reduce函數(shù)[2]。MapReduce作業(yè)流程如圖1所示。

001.jpg

  Map階段:Map任務(wù)運行在集群的從節(jié)點上,多個Map任務(wù)相互間是獨立運行的。原始數(shù)據(jù)在進入Map函數(shù)前,會將原始大數(shù)據(jù)集劃分并格式化為<key1,value1>鍵值對的形式。經(jīng)過Map函數(shù)的運算處理后產(chǎn)生一個或多個中間鍵值對<key2,value2>。

  Shuffle階段:它由Partition(數(shù)據(jù)分割)和Combine(數(shù)據(jù)合并)組成。Combine就是將Map任務(wù)輸出的中間結(jié)果中有相同key2的<key2,value2>對合并成一對。Partition則是采用默認hash函數(shù)將中間結(jié)果按照key2值的范圍分成R份,發(fā)送并保證某一范圍內(nèi)的key2由同一個Reduce任務(wù)來處理。

  Reduce階段:每個Reduce任務(wù)需要從多個Map任務(wù)節(jié)點取得其負責的key2區(qū)間內(nèi)的中間結(jié)果。Reduce函數(shù)接收到形如<key2,(list of value2)>形式的輸入,進行處理后產(chǎn)生鍵值對<key3,value3>作為結(jié)果,并將結(jié)果輸出到HDFS上。

  為了方便理解,上述過程中數(shù)據(jù)格式的變化如圖2所示。

002.jpg

2 基于MapReduce的并行K-means算法的設(shè)計

  2.1 K-means聚類算法的基本思路

  K-means算法是聚類算法中使用最廣泛的基于劃分的算法,其基本思想是:將空間中的n個對象集合以K個點為中心進行簇的劃分,歸類到與其距離最近的中點[3]。通過迭代的方式,逐次更新聚類中心的值并重新劃分簇,直至目標函數(shù)收斂。K-means算法采用距離作為相似性的評價指標,其目標函數(shù)可表示為:

  @XYO3O9JPH@WOLTZ{Z~_C_5.png

  其中,xi表示數(shù)據(jù)集X={x1,x2,…,xN}中第i個樣本,N為樣本總數(shù);Cj表示第j個簇,K為簇的總個數(shù),zj則表示第j個簇的中心。

  假設(shè)共有n個數(shù)據(jù)對象,計劃劃分為K個簇,t為迭代次數(shù),O為一次迭代中計算某一對象到各個類的中心距離的時間復雜度,那么串行實現(xiàn)K-means算法的時間復雜度為n×K×t×O[4]。由此可見,當面對大數(shù)據(jù)時,算法的時間復雜度將成倍地增加。

  2.2 K-means聚類算法的MapReduce化的設(shè)計

003.jpg


  K-means算法中,計算數(shù)據(jù)對象與聚類中心距離是該算法中反復進行的操作,并且每個數(shù)據(jù)對象到聚類中心距離的計算過程都是相互獨立的。圖3描述了基于MapReduce的并行K-means算法的設(shè)計方法,其中數(shù)據(jù)的分片由MapReduce環(huán)境自行完成,只需要編寫Map函數(shù)和Reduce函數(shù)的實現(xiàn)代碼即可。

  2.2.1 Map函數(shù)的設(shè)計

  首先,Map函數(shù)逐行掃描數(shù)據(jù)段,按行作為數(shù)據(jù)對象,記錄為<行號,數(shù)據(jù)內(nèi)容>鍵值對;接著,與保存在全局變量中聚類中心進行運算,得出數(shù)據(jù)對象與各個聚類中心的距離;最后,將數(shù)據(jù)對象分配給距離最近的類中,產(chǎn)生<聚類ID,數(shù)據(jù)內(nèi)容>鍵值對作為函數(shù)輸出。Map函數(shù)的偽代碼如下:

  void map(LongWritable key,Text point,Context context){

  centerIndex=0;//初始化數(shù)據(jù)對象所在的類

  minDis=MAXDISTANCE;

  //初始化數(shù)據(jù)對象與聚類中心的最小距離

  for(int i=0;i<k;i++){//遍歷各個聚類中心

  tempDis=Dis(point,cluster[i]);

  //計算數(shù)據(jù)對象與聚類中心的距離

  if(tempDis<minDis){

  //將數(shù)據(jù)對象分配至距離最近的類

  minDis=tempDis;

  centerIndex=i;

  }

  }

  context.write(centerIndex+1,point);

  //輸出<類ID,數(shù)據(jù)對象>鍵值對

  }

  2.2.2 Reduce函數(shù)的設(shè)計

  首先,將擁有相同聚類ID的數(shù)據(jù)對象分配給同一個Reduce任務(wù);接著,Reduce函數(shù)將記錄所接收到的樣本個數(shù)并將數(shù)據(jù)對象各個維坐標分別累加;最后,將各維坐標之和除以樣本個數(shù)得到各個維坐標的均值,計算結(jié)果就是該類新的聚類中心。Reduce函數(shù)的偽代碼如下:

  void reduce(IntWritable key,Iterable<Text>value,Context context){

  int colnum=value.get(0).size();//數(shù)據(jù)對象的屬性個數(shù)

  for(int i=0;i<colnum;i++){

  double sum=0;

  int rownum=value.size();//獲取數(shù)據(jù)對象的個數(shù)

  for(int j=0;j<rownum;j++){//計算每列的平均值

  sum+=value.get(j).get(i);

  }

  avg[i] = sum/rownum;

  }

  context.write(key,avg);

  //輸出<聚類ID,聚類中心>鍵值對

  }

  將本輪reduce函數(shù)輸出的聚類中心與上一輪的聚類中心比較,若目標函數(shù)收斂,則算法結(jié)束;否則,本輪的聚類中心將寫入中心文件,作為新的聚類中心。

3 實驗與分析

  實驗目的是比較在相同的硬件配置下,Hadoop集群中1個運算節(jié)點和普通計算機分別使用并行K-means算法和傳統(tǒng)串行K-means處理相同規(guī)模數(shù)據(jù)的能力。考慮到K-means算法對初始聚類中心有較強的依賴性,在相同數(shù)據(jù)集的條件下重復進行實驗10次,取平均值作為最終的實驗數(shù)據(jù),實驗結(jié)果如表1所示。

004.jpg

  表1中,t1表示使用傳統(tǒng)串行K-means算法處理數(shù)據(jù)集所花的時間;t2表示使用并行化K-means算法處理數(shù)據(jù)集所花的時間。通過實驗數(shù)據(jù)可以發(fā)現(xiàn),當數(shù)據(jù)集的規(guī)模較小時,串行K-means算法的執(zhí)行效率優(yōu)于并行化K-means算法的執(zhí)行效率,這是由于數(shù)據(jù)量小時,其計算任務(wù)所消耗的資源較少,但是在Hadoop平臺上啟動、分配任務(wù)以及進行作業(yè)間的交互卻需要耗費固定的資源。但隨著數(shù)據(jù)集規(guī)模的增大,計算任務(wù)所占用的資源的比例將不斷增大,使并行化算法的優(yōu)勢得以體現(xiàn),其運行時間的增長速度遠小于串行算法。另外,由于串行算法所消耗的資源快速地增長,系統(tǒng)將會報告內(nèi)存不足。

4 結(jié)論

  本文對Hadoop的MapReduce編程模型以及聚類算法K-means進行了研究,給出了基于MapReduce的并行化K-means算法的設(shè)計方案并進行了實驗驗證。實驗結(jié)果表明,基于MapReduce的并行化K-means算法適用于處理較大規(guī)模的數(shù)據(jù)挖掘任務(wù),并且具有較好的計算效率。

  參考文獻

  [1] 謝雪蓮,李蘭友.基于云計算的并行K-means聚類算法研究[J].計算機測量與控制,2014,22(5):1510-1512.

  [2] 冀素琴,石洪波.基于MapReduce的K-means聚類集成[J].計算機工程,2013,39(9):84-87.

  [3] 周婷,張君瑛,羅成.基于Hadoop的K-means聚類算法的實現(xiàn)[J].計算機技術(shù)與發(fā)展,2013,23(7):18-21.

  [4] 趙衛(wèi)中,馬慧芳,傅燕翔,等.基于云計算平臺Hadoop的并行K-means聚類算法設(shè)計研究[J].計算機科學與探索,2011,38(10):166-168,176.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产精品久久久久婷婷| 亚洲丰满在线| 欧美激情视频一区二区三区在线播放| 久久国产精彩视频| 午夜精品久久久久久99热| 亚洲无限av看| 亚洲视频在线看| 亚洲深夜福利视频| 一区二区三区波多野结衣在线观看| 亚洲另类一区二区| 亚洲精品乱码久久久久久久久| 久久成人免费网| 欧美在线资源| 欧美一二三区精品| 午夜精品久久久久久久久久久| 亚洲一区二区三区精品在线观看 | 亚洲国产欧美不卡在线观看| 韩日欧美一区二区| 伊人男人综合视频网| 狠狠综合久久| 亚洲电影第三页| 亚洲国产精品精华液2区45| 亚洲激情成人| 亚洲伦理在线免费看| 99精品视频免费全部在线| 一区二区成人精品| 亚洲午夜精品久久久久久浪潮| 亚洲网址在线| 性欧美超级视频| 亚洲国产福利在线| 日韩视频免费观看高清在线视频 | 最新国产精品拍自在线播放| 亚洲黄色片网站| 日韩午夜黄色| 亚洲男人av电影| 久久久国产91| 国产一区二区毛片| 亚洲国产一二三| 亚洲精品欧美日韩专区| 一区二区久久久久久| 亚洲欧美成人| 久久久精品一区二区三区| 美女精品在线观看| 欧美日韩成人激情| 国产精品一区二区久久久| 国产资源精品在线观看| 亚洲激情六月丁香| 一本色道久久综合精品竹菊| 午夜国产精品视频免费体验区| 久久国产精品久久久| 亚洲免费激情| 欧美一区2区三区4区公司二百 | 在线视频欧美一区| 午夜视频久久久| 久久夜色精品国产| 欧美日韩一级片在线观看| 国产精品亚洲综合一区在线观看 | 在线观看日韩国产| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲免费在线| 亚洲精品中文字| 欧美一区二区视频在线| 另类图片综合电影| 国产精品va| 在线观看国产欧美| 一区二区三区日韩| 亚洲国产欧美不卡在线观看| 亚洲在线视频免费观看| 久久亚洲欧美国产精品乐播| 欧美午夜精品久久久久久久| 国产在线精品成人一区二区三区 | 亚洲欧美一区二区三区在线 | 亚洲第一精品在线| 亚洲一区二区三区国产| 久久人人超碰| 国产精品嫩草久久久久| 亚洲国产精品99久久久久久久久| 亚洲午夜电影在线观看| 亚洲激情综合| 欧美在线视频一区二区| 欧美日本亚洲韩国国产| 国一区二区在线观看| 日韩视频精品在线| 亚洲国产精品成人综合色在线婷婷| 亚洲无人区一区| 欧美不卡视频一区发布| 国产毛片一区二区| 一区二区高清| 亚洲精品日韩精品| 久久久一二三| 国产精品久久久久高潮| 亚洲国产小视频在线观看| 欧美伊人精品成人久久综合97| 亚洲一区二区三区午夜| 欧美成人a∨高清免费观看| 国产日韩欧美一二三区| 一本色道**综合亚洲精品蜜桃冫 | 一本到高清视频免费精品| 免费成人黄色片| 国产日韩欧美视频| 亚洲视频一区二区在线观看 | 亚洲一区二区三区高清不卡| 欧美va天堂在线| 国外成人免费视频| 西西裸体人体做爰大胆久久久| 亚洲一区二区三区四区五区黄| 欧美精品一区在线发布| 在线观看日韩国产| 亚洲国产成人在线| 久久亚洲精品一区| 国产在线麻豆精品观看| 亚洲欧美日韩系列| 性色av香蕉一区二区| 欧美午夜精品久久久久免费视 | 99在线精品视频在线观看| 美女主播视频一区| 激情综合网址| 久久精品30| 玖玖综合伊人| 永久555www成人免费| 亚洲国产精品久久久久秋霞不卡| 久久久激情视频| 精品999网站| 亚洲激情小视频| 美女视频黄 久久| 亚洲电影在线播放| 亚洲美女精品久久| 欧美日韩免费一区| 中日韩美女免费视频网址在线观看| 一区二区三区四区国产精品| 欧美日韩亚洲高清| 亚洲午夜久久久| 久久av红桃一区二区小说| 国产一区二区三区的电影| 久久成人免费网| 乱中年女人伦av一区二区| 伊人成人在线视频| 亚洲精品一区中文| 欧美日韩另类视频| 一区二区三区高清不卡| 香蕉久久精品日日躁夜夜躁| 国产精品九九| 小黄鸭精品aⅴ导航网站入口| 久久久91精品国产一区二区精品| 韩日视频一区| 亚洲裸体视频| 欧美偷拍一区二区| 新片速递亚洲合集欧美合集| 久久精品国产第一区二区三区最新章节 | 久久婷婷亚洲| 亚洲国产婷婷| 亚洲一区二区三区免费视频| 国产精品欧美在线| 欧美在线观看网站| 欧美国产日韩视频| 一区二区三区久久久| 欧美在线视频观看| 永久免费视频成人| 一区二区三区毛片| 国产精品美女久久久免费| 欧美一区影院| 欧美高清日韩| 亚洲一区二区三区久久| 久久久久久久久久久成人| 亚洲国产天堂久久综合| 亚洲欧美高清| 激情久久久久久久| 一本色道久久| 国产视频在线观看一区二区| 亚洲精品日产精品乱码不卡| 欧美性事免费在线观看| 欧美一区二区三区视频在线观看 | 一二三区精品| 久久久久久亚洲精品杨幂换脸| 在线视频成人| 亚洲女人天堂成人av在线| 黄色亚洲免费| 亚洲午夜激情网站| 激情成人亚洲| 亚洲午夜精品17c| 一区二区在线视频观看| 亚洲免费网址| 亚洲高清中文字幕| 性欧美超级视频| 亚洲精品你懂的| 久久久亚洲午夜电影| 99热精品在线| 欧美69视频| 欧美一区二区三区在线观看| 欧美久久久久免费| 久久国产99| 国产精品美女久久福利网站| 亚洲精品一区二区三区在线观看| 国产日韩欧美一区在线| 一区二区三区四区五区在线| 一区在线观看视频| 久久av一区二区| 亚洲素人一区二区| 欧美精品网站| 亚洲区国产区|