一種基于云計(jì)算平臺的大數(shù)據(jù)聚類算法
【專利摘要】本發(fā)明公開了一種基于云計(jì)算平臺的大數(shù)據(jù)聚類算法,對原始數(shù)據(jù)進(jìn)行預(yù)處理;將數(shù)據(jù)分割為M個(gè)子數(shù)據(jù),并分配給M個(gè)Map函數(shù);對子數(shù)據(jù)進(jìn)行局部聚類;對相同key的類進(jìn)行合并;如果實(shí)際聚類個(gè)數(shù)R小于聚類個(gè)數(shù)k,則調(diào)整代表點(diǎn)個(gè)數(shù)c與收縮因子a,重新進(jìn)行聚類,直到達(dá)到結(jié)束條件為止。如果有新的數(shù)據(jù)集產(chǎn)生,則依據(jù)判斷條件:如果新數(shù)據(jù)源中心個(gè)數(shù)K大于沒有更新前獲得的聚類數(shù)K或者新數(shù)據(jù)源的點(diǎn)數(shù)大于更新前數(shù)據(jù)源的點(diǎn)數(shù),進(jìn)行局部聚類。該方法利用云計(jì)算的高性能集群系統(tǒng)的并行計(jì)算能力來解決聚類面臨的海量數(shù)據(jù)處理問題,以便能夠快速,有效的挖掘出數(shù)據(jù)的關(guān)系。
【專利說明】一種基于云計(jì)算平臺的大數(shù)據(jù)聚類算法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)據(jù)挖掘【技術(shù)領(lǐng)域】,涉及一種基于云計(jì)算平臺的大數(shù)據(jù)聚類算法。
【背景技術(shù)】
[0002]聚類分析作為統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘等領(lǐng)域的交叉學(xué)科,吸引了眾多研究者投身其中,使之成為數(shù)據(jù)挖掘研究領(lǐng)域的一個(gè)非?;钴S的研究課題。迄今為止國內(nèi)外的研究者們提出了很多聚類算法,主要的聚類方法可以分為:基于劃分的方法、基于層次的方法、基于密度的方法、基于網(wǎng)格的方法和基于模型的方法等。
[0003]在2012年8月21日舉辦的“第六屆移動互聯(lián)網(wǎng)國際研討會”上,美國卡內(nèi)基梅隆計(jì)算機(jī)機(jī)器人專業(yè)博士鄧侃表示,發(fā)現(xiàn)大數(shù)據(jù)中的價(jià)值,要依靠數(shù)據(jù)挖掘的算法,并且要有數(shù)據(jù)挖掘的算法加上云計(jì)算的并行計(jì)算。分布式的云存儲平臺則提供更加廉潔的成本和高處理性能,加上高效的數(shù)據(jù)挖掘算法,成為了解決大數(shù)據(jù)問題的良藥。
[0004]英國南安普頓大學(xué)《云計(jì)算下的海量數(shù)據(jù)挖掘研究》中提到云計(jì)算的出現(xiàn)為愈來愈多的中小企業(yè)分析海量數(shù)據(jù)提供廉價(jià)的解決方案。介紹基于云計(jì)算Hadoop集群框架和數(shù)據(jù)挖掘技術(shù)中的 SPRINT (Scalable Parallelizable Induction of Decision of Trees,一種具有可伸縮性的決策樹分類算法)分類算法的基礎(chǔ)上,詳細(xì)描述SPRINT并行算法在Hadoop ( 一種分布式編程框架)中的MapReduce ( 一個(gè)數(shù)據(jù)處理模型)編程模型上的執(zhí)行流程,并利用分析出的決策樹模型對輸入數(shù)據(jù)進(jìn)行分類。
[0005]目前,基于云計(jì)算平臺的數(shù)據(jù)挖掘工作已取得眾多成果。Apache Mahout (ApacheSoftffare Foudation旗下的一個(gè)開源項(xiàng)目)項(xiàng)目開發(fā)出多種面向商業(yè)角度的并行數(shù)據(jù)挖掘算法;中國科學(xué)院計(jì)算技術(shù)研究所推出的并行分布式數(shù)據(jù)挖掘平臺(PDMiner, ParallelDistributed Miner)已可實(shí)現(xiàn)TB級別的海量數(shù)據(jù)處理;中國移動通信的并行數(shù)據(jù)挖掘工具(BC-PDM, Blue Carrier based Parallel Data Mining)更是提供了基于 Web 的服務(wù)模式。這些標(biāo)志性成果,大力推動了該領(lǐng)域的發(fā)展。在云計(jì)算編程模型MapReduce的基礎(chǔ)上,已有多種數(shù)據(jù)挖掘算法被實(shí)現(xiàn)。2007年CHU等學(xué)者提出了基于MapReduce的樸素貝葉斯分類算法。該算法采用分布處理的思想,通過采用對樣本進(jìn)行分散統(tǒng)計(jì)與集中整合的方式來構(gòu)造分類器,但它能處理離散型數(shù)據(jù),不能對連續(xù)型數(shù)據(jù)提供有效的支持。另外,數(shù)據(jù)挖掘工作中常用聚類算法的MapReduce實(shí)現(xiàn),就我們所知道的范圍內(nèi),尚未見到相關(guān)權(quán)威報(bào)道。
[0006]當(dāng)前,國內(nèi)外在對聚類方法的研究上還多停留在串行法的優(yōu)化上。串行聚類算法在統(tǒng)計(jì)和數(shù)據(jù)庫領(lǐng)域得到了大量的研究和應(yīng)用,如K-Means (K平均方法)算法、面向大規(guī)模數(shù)據(jù)庫系統(tǒng)的綜合層次聚類(BIRCH, Balanced Reducing and Clustering UsingHierarchies)算法、處理空間數(shù)據(jù)的統(tǒng)計(jì)信息網(wǎng)格(STING, Statistical InformationGrid)算法等。面對日益增長的海量數(shù)據(jù)庫和高維數(shù)據(jù)類型,為了獲得更好的計(jì)算能力,研究并行模型下的聚類算法,利用集群的高速計(jì)算能力來解決大數(shù)據(jù)的聚類運(yùn)算,具有非常重要的意義。
[0007]隨著互聯(lián)網(wǎng)、實(shí)時(shí)數(shù)據(jù)流、連接設(shè)備多樣化的發(fā)展,以及搜索服務(wù)、社會網(wǎng)絡(luò)、移動商務(wù)和開放協(xié)作等需求的推動,云計(jì)算迅速發(fā)展起來。不同于以往的并行分布式計(jì)算,云計(jì)算的產(chǎn)生從理念上將推動整個(gè)互聯(lián)網(wǎng)模式、企業(yè)管理模式發(fā)生革命性的變革。因此,各大IT廠商均在大力投資云計(jì)算的研究,推廣各自的云計(jì)算服務(wù)和產(chǎn)品的谷歌、亞馬遜、IBM、微軟和雅虎(Google、Amazon、IBM、Microsoft和Yahoo !)等大公司是云計(jì)算的先行者。
[0008]Google當(dāng)數(shù)最大的云計(jì)算的使用者。目前,Google已經(jīng)允許第三方在Google的云計(jì)算中通過GoogleApp Engine (谷歌應(yīng)用搜索引擎)運(yùn)行大型并行應(yīng)用程序。MapReduce是由Google在2004年最先提出的分布式計(jì)算編程框架,它可以支持大數(shù)據(jù)量的分布式處理。
[0009]Hadoop是Apache開源組織的一個(gè)分布式計(jì)算開源架構(gòu),在很多大型網(wǎng)站上都已得到了應(yīng)用,Hadoop框架中最核心的設(shè)計(jì)是MapReduce和Hadoop分布式文件系統(tǒng)(HDFS,Hadoop Distributed File System)。Amazon 使用彈性計(jì)算云(EC2, Elastic ComputeCloud)和簡單存儲服務(wù)(S3, Simple Storage Service)為企業(yè)提供計(jì)算和存儲服務(wù)。IBM在2007年11月推出了“改變游戲規(guī)則”的“藍(lán)云”計(jì)算平臺,為客戶帶來即買即用的云計(jì)算平臺。微軟緊跟云計(jì)算步伐,于2008年10月推出Windows Azure操作系統(tǒng)。Azure(譯為“藍(lán)天”)是繼Windows取代DOS之后,微軟的又一次顛覆性轉(zhuǎn)型,通過在互聯(lián)網(wǎng)架構(gòu)上打造新云計(jì)算平臺,讓W(xué)indows真正由PC延伸到“藍(lán)天”。
[0010]在我國,云計(jì)算發(fā)展也非常迅猛。2008年IBM先后在中國無錫和北京建立了兩個(gè)云計(jì)算中心;世紀(jì)互聯(lián)推出了 CloudEx(云快線彈性云計(jì)算平臺)產(chǎn)品線,提供互聯(lián)網(wǎng)主機(jī)服務(wù)、在線存儲虛擬化服務(wù)等;中國移動研究院已經(jīng)建立起1024個(gè)CPU的云計(jì)算實(shí)驗(yàn)中心;解放軍理工大學(xué)研制了云存儲系統(tǒng)MassCloud (海量云存儲平臺),并以它支撐基于3G的大規(guī)模視頻監(jiān)控應(yīng)用和數(shù)字地球系統(tǒng)。
[0011]基于數(shù)據(jù)挖掘聚類研究的現(xiàn)狀,現(xiàn)有的對于大數(shù)據(jù)聚類的挖掘,采用的方法多是采用對數(shù)據(jù)的抽樣,選取具有代表性的數(shù)`據(jù),實(shí)現(xiàn)以點(diǎn)代面的聚類分析。在面對大數(shù)據(jù)處理時(shí),一般采用的是基于樣本抽取概率的方法實(shí)現(xiàn),但抽樣方法沒有考慮數(shù)據(jù)點(diǎn)之間或區(qū)間之間全局的相對距離以及數(shù)據(jù)分布不均勻,出現(xiàn)劃分區(qū)間過硬的問題。雖然后來,又引入聚類、模糊概念以及云模型等對區(qū)間劃分過硬問題進(jìn)行了改善,也取得了很好的效果,但這些方法均沒有考慮大數(shù)據(jù)數(shù)據(jù)點(diǎn)對知識發(fā)現(xiàn)任務(wù)的不同作用。因此,為使挖掘得到的聚類規(guī)則更有效,更快速,必須從充分考慮數(shù)據(jù)點(diǎn)的不同作用入手,對聚類分析進(jìn)行更深入的研究。而云計(jì)算正是基于現(xiàn)實(shí)中的大數(shù)據(jù)數(shù)據(jù)點(diǎn)之間的處理而提出的,這為挖掘更有效聚類規(guī)則提供了強(qiáng)大的理論基礎(chǔ)。
【發(fā)明內(nèi)容】
[0012]本發(fā)明的目的在于克服上述技術(shù)存在的缺陷,提供一種基于云計(jì)算平臺的大數(shù)據(jù)聚類算法,該方法利用云計(jì)算的高性能集群系統(tǒng)的并行計(jì)算能力來解決聚類面臨的大數(shù)據(jù)處理問題,以便能夠快速,有效的挖掘出數(shù)據(jù)的關(guān)系。其具體技術(shù)方案為:
[0013]一種基于云計(jì)算平臺的大數(shù)據(jù)聚類算法,包括以下步驟:
[0014](I)對原始數(shù)據(jù)進(jìn)行預(yù)處理;
[0015]其基本思想為:首先,掃描整個(gè)數(shù)據(jù)源,查看是否存在空值,補(bǔ)充遺漏值;遺漏值的選取根據(jù)空值所在的那一維的平均值進(jìn)行補(bǔ)充;其次,對數(shù)據(jù)集進(jìn)行向量化并進(jìn)行分割,分割后將數(shù)據(jù)塊分布到節(jié)點(diǎn)上,各個(gè)節(jié)點(diǎn)把數(shù)據(jù)塊分配給M個(gè)Map函數(shù),在函數(shù)中設(shè)置一個(gè)閾值T (點(diǎn)與點(diǎn)之間的距離)、M(簇內(nèi)所允許最少的個(gè)數(shù)),選取c個(gè)距離相距最遠(yuǎn)的點(diǎn)作為代表點(diǎn)進(jìn)行聚類,將符合T要求的點(diǎn)聚為一類,放到一個(gè)簇中,如此循環(huán)直到?jīng)]有符合的點(diǎn)為止,然后把剩余的點(diǎn)劃分為一類,形成一個(gè)簇,并且在每個(gè)簇用(N(簇內(nèi)所有點(diǎn)的數(shù)目),SUM(所有點(diǎn)每維向量之和),SUMSQ(所有點(diǎn)在每一維的分量平方和))表不一個(gè)簇的中心;最后,查看最終形成的簇中點(diǎn)的個(gè)數(shù),如果簇內(nèi)個(gè)數(shù)少于M,則把該簇內(nèi)所有點(diǎn)刪除,否則形成一個(gè)數(shù)據(jù)集合U,得到一個(gè)聚類個(gè)數(shù)K。具體步驟如下:
[0016]1:掃描整個(gè)數(shù)據(jù)集查看在各維中是否存有空值,補(bǔ)充遺漏值;
[0017]2:對數(shù)據(jù)集進(jìn)行向量化;
[0018]3:將數(shù)據(jù)集分割為M個(gè)子數(shù)據(jù),分配到各個(gè)子節(jié)點(diǎn);
[0019]4:將M個(gè)子數(shù)據(jù)分配給M個(gè)Map函數(shù),每一個(gè)Map任務(wù)處理一個(gè)數(shù)據(jù)分片;
[0020]5:在Map階段,對子數(shù)據(jù)進(jìn)行局部聚類,選取c個(gè)間距為最遠(yuǎn)距離的代表點(diǎn);
[0021]6:如果點(diǎn)與點(diǎn)之間的間距小于T,則聚為一類;否則,將剩下的點(diǎn)劃分為一個(gè)簇;
[0022]7:計(jì)算各個(gè)簇內(nèi)點(diǎn)的個(gè)數(shù),如果簇內(nèi)點(diǎn)的個(gè)數(shù)小于M,那么把該簇刪除;
[0023]8:在Reduce階段,把所有簇形成一個(gè)新的數(shù)據(jù)集U,計(jì)算簇的個(gè)數(shù)K,并且每個(gè)簇的中心點(diǎn)用(N,SUM, SUMSQ)表示。
[0024](2)將數(shù)據(jù)集U分割為M個(gè)子數(shù)據(jù),并分配M個(gè)Map函數(shù);
[0025](3)在Map階段,對子數(shù)據(jù)進(jìn)行局部聚類,選取c個(gè)間距為最遠(yuǎn)距離的代表點(diǎn);
[0026](4)計(jì)算各個(gè)簇的中心點(diǎn)(N,SUM, SUMSQ);
[0027](5)在Reduce階段,對相同key的類進(jìn)行合并;形成的簇中心為(N1+N2+Ni,SUM1+SUM2——+SUMi, SUMSQ1+SUMSQ2——+SUMSQi);
[0028](6)如果實(shí)際聚類個(gè)數(shù)R小于聚類個(gè)數(shù)K,則調(diào)整代表點(diǎn)個(gè)數(shù)c與收縮因子a,重新進(jìn)行聚類,直到達(dá)到結(jié)束條件為止。
[0029](7)由于大數(shù)據(jù)不僅具有高維與海量數(shù)據(jù)的特征,而且還具有數(shù)據(jù)產(chǎn)生和數(shù)據(jù)更新快的特點(diǎn);因此,基于此特點(diǎn)本算法采用以下方法進(jìn)行解決;
[0030]其基本思想為:首先,將新數(shù)據(jù)源進(jìn)行預(yù)處理(同上),獲得新數(shù)據(jù)源的數(shù)據(jù)集U和聚類的中心點(diǎn)的個(gè)數(shù)K以及所有數(shù)據(jù)點(diǎn)數(shù)N ;其次,如果新數(shù)據(jù)源中心個(gè)數(shù)K大于沒有更新前獲得的聚類數(shù)K或者新數(shù)據(jù)源的點(diǎn)數(shù)大于更新前數(shù)據(jù)源的點(diǎn)數(shù),那么,把新數(shù)據(jù)源與沒更新的數(shù)據(jù)源重新進(jìn)行數(shù)據(jù)集分割;反之,沒更新的數(shù)據(jù)集得到的K個(gè)簇的中心點(diǎn)作為K個(gè)點(diǎn)與新數(shù)據(jù)源組成新的數(shù)據(jù)集進(jìn)行分割;然后把子集分配到各個(gè)子節(jié)點(diǎn)上,分配給若干個(gè)Map函數(shù),進(jìn)行局部聚類;如果是第一種情況,那么K選取為[(K # +K ls) /2],反之,K選取為沒有更新前K的值;然后重復(fù)3、4、5、6階段(預(yù)處理階段);具體步驟如下:
[0031]1:對新數(shù)據(jù)源進(jìn)行預(yù)處理(同上);
[0032]2:向量化數(shù)據(jù)集;
[0033]3:判斷新數(shù)據(jù)源點(diǎn)數(shù)N與中心點(diǎn)個(gè)數(shù)K和沒有更新前數(shù)據(jù)源點(diǎn)數(shù)N與中心點(diǎn)個(gè)數(shù)K的大?。?br>
[0034]4:如果N新> Nl日I |K新> K舊,那么兩個(gè)數(shù)據(jù)集重新進(jìn)行分割,K= [(K#+Kl0)/2];反之,沒更新的數(shù)據(jù)集得到的K個(gè)簇的中心點(diǎn)作為K個(gè)點(diǎn)與新數(shù)據(jù)源組成新的數(shù)據(jù)集進(jìn)行分害I],K = K舊;[0035]5:將數(shù)據(jù)集U分割為M個(gè)子數(shù)據(jù),并分配M個(gè)Map函數(shù);
[0036]6:在Map階段,對子數(shù)據(jù)進(jìn)行局部聚類,選取c個(gè)間距為最遠(yuǎn)距離的代表點(diǎn);
[0037]7:計(jì)算各個(gè)簇的中心點(diǎn)(N,SUM, SUMSQ);
[0038]8:在Reduce階段,對相同key的類進(jìn)行合并;形成的簇中心為(N1+N2+Ni,SUM1+SUM2——+SUMi, SUMSQ1+SUMSQ2——+SUMSQi);
[0039]9:如果實(shí)際聚類個(gè)數(shù)R小于聚類個(gè)數(shù)K,則調(diào)整代表點(diǎn)個(gè)數(shù)c與收縮因子a,重新進(jìn)行聚類,直到達(dá)到結(jié)束條件為止。
[0040]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果為:本發(fā)明利用云計(jì)算的高性能集群系統(tǒng)的并行計(jì)算能力來解決聚類面臨的大數(shù)據(jù)處理問題;以并行聚類為目標(biāo),提出了新的聚類思路和改進(jìn)方法;企業(yè)的數(shù)據(jù)處理成本大大的降低,同時(shí)也不再依存于高性能的機(jī)器;基于云計(jì)算的大數(shù)據(jù)挖掘開發(fā)方便,屏蔽了底層。在并行化條件下,云計(jì)算能夠利用原有設(shè)備提高對大規(guī)模數(shù)據(jù)的處理能力和速度,既保證了容錯性,也增加結(jié)點(diǎn);實(shí)現(xiàn)了云計(jì)算對數(shù)據(jù)挖掘中聚類分析的作用,實(shí)現(xiàn)一個(gè)新的抽象模型,而將并行化、容錯、數(shù)據(jù)分布、負(fù)載均衡的等雜亂細(xì)節(jié)進(jìn)行屏蔽,就能夠快速的對數(shù)據(jù)進(jìn)行處理,從而挖掘出數(shù)據(jù)之間的關(guān)聯(lián)性,得到大數(shù)據(jù)對于現(xiàn)代生活巨大影響性,解決數(shù)據(jù)挖掘面對大數(shù)據(jù)的處理問題。
【專利附圖】
【附圖說明】
[0041]圖1為本發(fā)明基于云計(jì)算平臺的大數(shù)據(jù)聚類算法中大數(shù)據(jù)的預(yù)處理流程圖;
[0042]圖2為本發(fā)明在云計(jì)算平臺的大數(shù)據(jù)聚類算法中大數(shù)據(jù)聚類算法流程圖;
[0043]圖3為本發(fā)明基于云計(jì)算平臺的大數(shù)據(jù)更新后聚類算法流程圖。
【具體實(shí)施方式】
[0044]下面結(jié)合具體實(shí)施例對本發(fā)明的技術(shù)方案作進(jìn)一步詳細(xì)地說明。
[0045]參照圖1、2、3,圖1中,T:點(diǎn)與點(diǎn)之間的距離;M:簇內(nèi)包括點(diǎn)的個(gè)數(shù);N:簇內(nèi)點(diǎn)的個(gè)數(shù);SUM:所有點(diǎn)每一維向量和;SUMSQ:所有點(diǎn)每一維分量平方和。圖3中,N1:初始數(shù)據(jù)源的點(diǎn)的數(shù)目;N2:新數(shù)據(jù)源的數(shù)目;K1:初始聚類數(shù)目;K2:新預(yù)處理的聚類數(shù)目;P1:初始簇的中心點(diǎn);K = [(Kl+K2)/2]。
[0046]—種基于云計(jì)算平臺的大數(shù)據(jù)聚類算法,包括以下步驟:
[0047](I)對原始數(shù)據(jù)進(jìn)行預(yù)處理;
[0048]其基本思想為:首先,掃描整個(gè)數(shù)據(jù)源,查看是否存在空值,補(bǔ)充遺漏值;遺漏值的選取根據(jù)空值所在的那一維的平均值進(jìn)行補(bǔ)充;其次,對數(shù)據(jù)集進(jìn)行向量化并進(jìn)行分割,分割后將數(shù)據(jù)塊分布到節(jié)點(diǎn)上,各個(gè)節(jié)點(diǎn)把數(shù)據(jù)塊分配給M個(gè)Map函數(shù),在函數(shù)中設(shè)置一個(gè)閾值T (點(diǎn)與點(diǎn)之間的距離)、Μ(簇內(nèi)所允許最少的個(gè)數(shù)),選取c個(gè)距離相距最遠(yuǎn)的點(diǎn)作為代表點(diǎn)進(jìn)行聚類,將符合T要求的點(diǎn)聚為一類,放到一個(gè)簇中,如此循環(huán)直到?jīng)]有符合的點(diǎn)為止,然后把剩余的點(diǎn)劃分為一類,形成一個(gè)簇,并且在每個(gè)簇用(N(簇內(nèi)所有點(diǎn)的數(shù)目),SUM(所有點(diǎn)每維向量之和),SUMSQ(所有點(diǎn)在每一維的分量平方和))表不一個(gè)簇的中心;最后,查看最終形成的簇中點(diǎn)的個(gè)數(shù),如果簇內(nèi)個(gè)數(shù)少于M,則把該簇內(nèi)所有點(diǎn)刪除,否則形成一個(gè)數(shù)據(jù)集合U,得到一個(gè)聚類個(gè)數(shù)K。具體步驟如下:
[0049]1:掃描整個(gè)數(shù)據(jù)集查看在各維中是否存有空值,補(bǔ)充遺漏值;[0050]2:對數(shù)據(jù)集進(jìn)行向量化;
[0051]3:將數(shù)據(jù)集分割為M個(gè)子數(shù)據(jù),分配到各個(gè)子節(jié)點(diǎn);
[0052]4:將M個(gè)子數(shù)據(jù)分配給M個(gè)Map函數(shù),每一個(gè)Map任務(wù)處理一個(gè)數(shù)據(jù)分片;
[0053]5:在Map階段,對子數(shù)據(jù)進(jìn)行局部聚類,選取c個(gè)間距為最遠(yuǎn)距離的代表點(diǎn);
[0054]6:如果點(diǎn)與點(diǎn)之間的間距小于T,則聚為一類;否則,將剩下的點(diǎn)劃分為一個(gè)簇;
[0055]7:計(jì)算各個(gè)簇內(nèi)點(diǎn)的個(gè)數(shù),如果簇內(nèi)點(diǎn)的個(gè)數(shù)小于M,那么把該簇刪除;
[0056]8:在Reduce階段,把所有簇形成一個(gè)新的數(shù)據(jù)集U,計(jì)算簇的個(gè)數(shù)K,并且每個(gè)簇的中心點(diǎn)用(N,SUM, SUMSQ)表示。
[0057](2)將數(shù)據(jù)集U分割為M個(gè)子數(shù)據(jù),并分配M個(gè)Map函數(shù);
[0058](3)在Map階段,對子數(shù)據(jù)進(jìn)行局部聚類,選取c個(gè)間距為最遠(yuǎn)距離的代表點(diǎn);
[0059](4)計(jì)算各個(gè)簇的中心點(diǎn)(N,SUM, SUMSQ);
[0060](5)在Reduce階段,對相同key的類進(jìn)行合并;形成的簇中心為(N1+N2---+Ni,
SUM1+SUM2——+SUMi, SUMSQ1+SUMSQ2——+SUMSQi);
[0061 ] (6)如果實(shí)際聚類個(gè)數(shù)R小于聚類個(gè)數(shù)K,則調(diào)整代表點(diǎn)個(gè)數(shù)c與收縮因子a,重新進(jìn)行聚類,直到達(dá)到結(jié)束條件為止。
`[0062](7)由于大數(shù)據(jù)不僅具有高維與海量數(shù)據(jù)的特征,而且還具有數(shù)據(jù)產(chǎn)生和數(shù)據(jù)更新快的特點(diǎn);因此,基于此特點(diǎn)本算法采用以下方法進(jìn)行解決;
[0063]其基本思想為:首先,將新數(shù)據(jù)源進(jìn)行預(yù)處理(同上),獲得新數(shù)據(jù)源的數(shù)據(jù)集U和聚類的中心點(diǎn)的個(gè)數(shù)K以及所有數(shù)據(jù)點(diǎn)數(shù)N ;其次,如果新數(shù)據(jù)源中心個(gè)數(shù)K大于沒有更新前獲得的聚類數(shù)K或者新數(shù)據(jù)源的點(diǎn)數(shù)大于更新前數(shù)據(jù)源的點(diǎn)數(shù),那么,把新數(shù)據(jù)源與沒更新的數(shù)據(jù)源重新進(jìn)行數(shù)據(jù)集分割;反之,沒更新的數(shù)據(jù)集得到的K個(gè)簇的中心點(diǎn)作為K個(gè)點(diǎn)與新數(shù)據(jù)源組成新的數(shù)據(jù)集進(jìn)行分割;然后把子集分配到各個(gè)子節(jié)點(diǎn)上,分配給若干個(gè)Map函數(shù),進(jìn)行局部聚類;如果是第一種情況,那么K選取為[(? +Kls) /2],反之,K選取為沒有更新前K的值;然后重復(fù)3、4、5、6階段(預(yù)處理階段);具體步驟如下:
[0064]1:對新數(shù)據(jù)源進(jìn)行預(yù)處理(同上);
[0065]2:向量化數(shù)據(jù)集;
[0066]3:判斷新數(shù)據(jù)源點(diǎn)數(shù)N與中心點(diǎn)個(gè)數(shù)K和沒有更新前數(shù)據(jù)源點(diǎn)數(shù)N與中心點(diǎn)個(gè)數(shù)K的大?。?br>
[0067]4:如果N新> Nl日I |K新> Kl日,那么兩個(gè)數(shù)據(jù)集重新進(jìn)行分割,K= [(K#+Kl0)/2];反之,沒更新的數(shù)據(jù)集得到的K個(gè)簇的中心點(diǎn)作為K個(gè)點(diǎn)與新數(shù)據(jù)源組成新的數(shù)據(jù)集進(jìn)行分害I],K = K舊;
[0068]5:將數(shù)據(jù)集U分割為M個(gè)子數(shù)據(jù),并分配M個(gè)Map函數(shù);
[0069]6:在Map階段,對子數(shù)據(jù)進(jìn)行局部聚類,選取c個(gè)間距為最遠(yuǎn)距離的代表點(diǎn);
[0070]7:計(jì)算各個(gè)簇的中心點(diǎn)(N,SUM, SUMSQ);
[0071]8:在Reduce階段,對相同key的類進(jìn)行合并;形成的簇中心為(N1+N2+Ni,SUM1+SUM2——+SUMi, SUMSQ1+SUMSQ2——+SUMSQi);
[0072]9:如果實(shí)際聚類個(gè)數(shù)R小于聚類個(gè)數(shù)K,則調(diào)整代表點(diǎn)個(gè)數(shù)c與收縮因子a,重新進(jìn)行聚類,直到達(dá)到結(jié)束條件為止。
[0073]確定算法的有效性與時(shí)效性[0074]為了驗(yàn)證基于Hadoop平臺下大數(shù)據(jù)聚類算法的有效性和時(shí)效性,本算法采用幾組測試數(shù)據(jù)集進(jìn)行驗(yàn)證。利用經(jīng)典UCI數(shù)據(jù)集以及Public Data Sets (亞馬遜從2008年開始為開發(fā)者提供幾十TB的開發(fā)數(shù)據(jù)集),測試基于云計(jì)算平臺下的大數(shù)據(jù)聚類結(jié)果的有效性和時(shí)效性。
[0075]以上所述,僅為本發(fā)明較佳的【具體實(shí)施方式】,本發(fā)明的保護(hù)范圍不限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明披露的技術(shù)范圍內(nèi),可顯而易見地得到的技術(shù)方案的簡單變化或等效替換均落入本發(fā)明的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種基于云計(jì)算平臺的大數(shù)據(jù)聚類算法,其特征在于,包括以下步驟: 1)對原始數(shù)據(jù)集進(jìn)行預(yù)處理; 2)將數(shù)據(jù)U分割為M個(gè)子數(shù)據(jù),并分配給M個(gè)Map函數(shù); 3)在Map階段,對子數(shù)據(jù)進(jìn)行局部聚類; 4)在Reduce階段,對相同key的類進(jìn)行合并; 5)如果實(shí)際聚類個(gè)數(shù)R小于聚類個(gè)數(shù)k,則調(diào)整代表點(diǎn)個(gè)數(shù)c與收縮因子,重新進(jìn)行聚類,直到達(dá)到結(jié)束條件為止; 6)如果N新〉N舊I|K#> K舊,那么兩個(gè)數(shù)據(jù)集重新進(jìn)行分割,K= [(K新+K舊)/2];反之,沒更新的數(shù)據(jù)集得到的K個(gè)簇的中心點(diǎn)作為K個(gè)點(diǎn)與新數(shù)據(jù)源組成新的數(shù)據(jù)集進(jìn)行分害 I], K = K 舊; 7)重復(fù)3)、4)、5)階段直結(jié)束條件為止。
【文檔編號】G06F17/30GK103838863SQ201410104227
【公開日】2014年6月4日 申請日期:2014年3月14日 優(yōu)先權(quán)日:2014年3月14日
【發(fā)明者】孟海東, 任敬佩, 宋宇辰 申請人:內(nèi)蒙古科技大學(xué)