亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于分布式計(jì)算平臺(tái)改進(jìn)的k均值聚類方法與流程

文檔序號(hào):11952109閱讀:377來源:國(guó)知局
一種基于分布式計(jì)算平臺(tái)改進(jìn)的k均值聚類方法與流程
本發(fā)明涉及一種在機(jī)器學(xué)習(xí)中適用于分布式計(jì)算平臺(tái)Spark改進(jìn)的k均值聚類方法,屬于數(shù)據(jù)挖掘
技術(shù)領(lǐng)域
。
背景技術(shù)
:互聯(lián)網(wǎng)技術(shù)和信息技術(shù)的飛速發(fā)展導(dǎo)致了信息資源的急劇增長(zhǎng),從而引起嚴(yán)重的信息過載的問題。如何從海量的數(shù)據(jù)中挖掘出隱含的有用的信息引起人們?cè)絹碓蕉嗟年P(guān)心,機(jī)器學(xué)習(xí)技術(shù)由此產(chǎn)生。聚類分析就是其中相當(dāng)重要的一部分。它將抽象或者物理的對(duì)象的集合組成多個(gè)類,使得同一個(gè)類的對(duì)象之間具有較高的相似度,而不同類的對(duì)象之間相似度盡可能的低。在機(jī)器學(xué)習(xí)領(lǐng)域,國(guó)內(nèi)外提出了劃分型類聚、密度型類聚、網(wǎng)絡(luò)型類聚類聚算法。就目前的聚類算法而言還存在如下這些問題:對(duì)于初始中心選擇敏感,極易陷入局部最優(yōu)解的問題;對(duì)于海量數(shù)據(jù)和高維數(shù)據(jù)的處理能力有限的問題等。k均值算法是非常經(jīng)典的基于劃分的聚類算法,由Macqueen在1967年提出的解決聚類問題的經(jīng)典算法。k均值算法由于其快速簡(jiǎn)單而被廣泛的使用,然而在實(shí)際中發(fā)現(xiàn)了k均值存在一些問題,如對(duì)初始中心敏感,必須給出簇的數(shù)目,聚類的結(jié)果容易受到噪聲的干擾,對(duì)海量數(shù)據(jù)的處理速度,數(shù)據(jù)的迭代次數(shù)多等問題。目前,國(guó)內(nèi)外學(xué)者提出一系列對(duì)此改的方法,但是這些改進(jìn)增加了k均值算法的復(fù)雜度,增加了數(shù)據(jù)處理的迭代次數(shù)以及對(duì)海量數(shù)據(jù)的處理十分慢。所以本發(fā)明提出一種基于分布式計(jì)算平臺(tái)改進(jìn)的k均值聚類方法來解決上述問題?,F(xiàn)有技術(shù)一單機(jī)版本的通過卡洛斯卡爾算法來對(duì)初始中心進(jìn)行選擇后改進(jìn)的k均值算法?,F(xiàn)有技術(shù)一的技術(shù)方案根據(jù)克洛斯卡爾算法對(duì)隨機(jī)選取的k個(gè)點(diǎn)求出這k個(gè)點(diǎn)的最小生成樹權(quán)值和,重復(fù)n次,然后根據(jù)這n次的權(quán)值和選取出權(quán)值和最大的,最后使用k均值算法進(jìn)行聚類運(yùn)算。具體步驟如下:1)從樣本中隨機(jī)選取k個(gè)數(shù)據(jù)向量,對(duì)每個(gè)數(shù)據(jù)向量的每一特征進(jìn)行規(guī)范化,使數(shù)據(jù)向量的每一特征的取值在0~1之間,對(duì)這選取的k個(gè)數(shù)據(jù)向量,使用克洛斯卡爾算法,求出最小生成樹的權(quán)值和,重復(fù)這個(gè)過程n次,記第i次計(jì)算得到的最小生成樹權(quán)值和為di;2)求出最小生成樹權(quán)值和中的最大值MAX(d1,d2,...,dn)對(duì)應(yīng)的由k個(gè)數(shù)據(jù)向量組成的點(diǎn)集;3)根據(jù)歐式距離公式計(jì)算數(shù)據(jù)向量到k個(gè)簇心的距離,根據(jù)計(jì)算獲得k個(gè)距離值,取到簇中心距離最小的數(shù)據(jù)向量放入這個(gè)簇心對(duì)應(yīng)的蔟中,然后根據(jù)每個(gè)簇的所有數(shù)據(jù)向量求平均值來更新蔟中心,此時(shí),計(jì)算上一次k個(gè)蔟中心與更新后對(duì)應(yīng)的蔟中心之間的歐式距離,得到k個(gè)歐氏距離值,倘若k個(gè)歐氏距離值都小于規(guī)定的誤差閾值或達(dá)到迭代次數(shù)時(shí),轉(zhuǎn)步驟4),否則繼續(xù)迭代;4)輸出聚類結(jié)果?,F(xiàn)有技術(shù)一的缺點(diǎn)1)對(duì)于海量數(shù)量和數(shù)據(jù)向量維度特別的大的時(shí)候,單機(jī)版本的通過卡洛斯卡爾算法來對(duì)初始中心進(jìn)行選擇后改進(jìn)的k均值算法的處理速度十分的緩慢或者根本無(wú)法運(yùn)行。2)選擇初始中心以后進(jìn)行k均值運(yùn)算時(shí),沒有考慮每個(gè)數(shù)據(jù)向量之間的相似度,直接使用歐氏距離來計(jì)算到每個(gè)簇心的距離來判定每個(gè)數(shù)據(jù)向量所屬的簇,這樣會(huì)導(dǎo)致實(shí)際的誤差平方函數(shù)的數(shù)值增大?,F(xiàn)有技術(shù)二分布式平臺(tái)Spark自帶的k均值++算法現(xiàn)有技術(shù)二的技術(shù)方案主要目的是盡量保證初始聚類中心點(diǎn)互相之間距離盡可能的遠(yuǎn),具體步驟如下:1)從數(shù)據(jù)向量集合中隨機(jī)選一個(gè)向量作為聚類的第一個(gè)中心點(diǎn)。2)對(duì)于數(shù)據(jù)向量集合中每個(gè)向量v,然后計(jì)算它與剛選擇得到聚類的中心點(diǎn)之間的距離記為D(v)。3)從中選一個(gè)新的數(shù)據(jù)向量作為下一個(gè)聚類的中心點(diǎn),選擇準(zhǔn)則是:D(v)值越大的點(diǎn),有更大的概率被選為為聚類的中心點(diǎn)。4)重復(fù)步驟2),步驟3)直到k個(gè)聚類的中心點(diǎn)都被選出來為止。5)這k個(gè)聚類中心點(diǎn)作為聚類的初始中心點(diǎn)來運(yùn)行k均值算法?,F(xiàn)有技術(shù)二的缺點(diǎn)由于k均值++沒有很好的選擇初始中心,沒有很好的解決隨機(jī)選擇初始中心帶來的迭代次數(shù)過多的問題。技術(shù)實(shí)現(xiàn)要素:發(fā)明目的:針對(duì)現(xiàn)有技術(shù)中存在的問題與不足,本發(fā)明提供一種基于分布式計(jì)算平臺(tái)改進(jìn)的k均值聚類方法。針對(duì)現(xiàn)有技術(shù)一對(duì)海量數(shù)據(jù)和維數(shù)特別大的數(shù)據(jù)集處理速度慢或者根本無(wú)法運(yùn)算的問題,本發(fā)明使用分布式計(jì)算平臺(tái)Spark,可以通過搭建Spark集群來并行化運(yùn)算,可以大大提高處理速度。針對(duì)現(xiàn)有技術(shù)一選取最小生成樹和中的最大值而沒有保證簇心相對(duì)均勻分布的問題,本發(fā)明提出,如果所選簇心點(diǎn)集中各點(diǎn)之間距離不能保證相差不大,這里需要設(shè)置一個(gè)閾值,則移除這個(gè)簇心點(diǎn)集,從剩下的那些點(diǎn)集中選擇最小生成樹權(quán)值和最大值的對(duì)應(yīng)的點(diǎn)集作為簇心點(diǎn)集,判斷此時(shí)簇心點(diǎn)集中各點(diǎn)之間距離是否保證相差不大,重復(fù)上述過程,這樣可以有效地減少迭代次數(shù)。針對(duì)現(xiàn)有技術(shù)一沒有考慮每個(gè)數(shù)據(jù)向量之間相關(guān)性問題,本發(fā)明引入谷本距離來進(jìn)行計(jì)算每個(gè)數(shù)據(jù)向量到簇心的距離來判定每個(gè)數(shù)據(jù)向量應(yīng)該屬于哪個(gè)簇,這樣選擇的k個(gè)初始聚類中心可以減少誤差平方函數(shù)的值,從而可以提高算法的正確率。針對(duì)現(xiàn)有技術(shù)二一次選取選取沒有很好解決隨機(jī)性的問題,本發(fā)明通過克洛斯卡爾來選擇初始中心,通過重復(fù)n次來盡可能減少隨機(jī)性所帶來的問題,可以較好地減少迭代次數(shù)。技術(shù)方案:一種基于分布式計(jì)算平臺(tái)改進(jìn)的k均值聚類方法,由于k均值算法存在隨機(jī)選取初始中心導(dǎo)致最終簇心局部化最優(yōu)解,對(duì)海量數(shù)據(jù)處理速度慢,數(shù)據(jù)迭代次數(shù)過多以及沒有考慮向量之間的關(guān)聯(lián)關(guān)系等問題,所以針對(duì)海量數(shù)據(jù)處理慢的問題引入了分布式計(jì)算平臺(tái)Spark的,針對(duì)迭代次數(shù)過多的問題,引入卡洛斯卡爾算法,針對(duì)沒有考慮向量各特征間的相關(guān)性,引入谷本距離。首先,通過克洛斯卡爾算法來對(duì)隨機(jī)選取的k個(gè)點(diǎn)來構(gòu)造最小生成樹并求出對(duì)應(yīng)的權(quán)值和,重復(fù)n次,然后按照這n次得到的權(quán)值和,從中選取出最大的權(quán)值和并且確保由k個(gè)點(diǎn)組成的邊之間的距離值相差不大,這樣可以保證簇心相對(duì)均勻分布,最后使用經(jīng)谷本距離改進(jìn)后的k均值算法進(jìn)行聚類運(yùn)算。其步驟如下:1)從樣本中隨機(jī)選取k個(gè)數(shù)據(jù)向量,對(duì)每個(gè)數(shù)據(jù)向量的每一特征進(jìn)行規(guī)范化,使數(shù)據(jù)向量的每一特征的取值在0~1之間,對(duì)選取的k個(gè)數(shù)據(jù)向量,使用克洛斯卡爾算法,求出最小生成樹的權(quán)值和,重復(fù)這個(gè)過程n次,記第i次計(jì)算得到的最小生成樹權(quán)值和為di,2)求出最小生成樹權(quán)值和中的最大值MAX(d1,d2,...,dn)對(duì)應(yīng)的由k個(gè)數(shù)據(jù)向量組成的點(diǎn)集;3)倘若求出的點(diǎn)集的各邊的權(quán)值相差不大于0.1時(shí),則將該點(diǎn)集作為初始簇中心的k個(gè)初始中心,轉(zhuǎn)步驟4);否則排除該點(diǎn)集,轉(zhuǎn)步驟2);4)運(yùn)行基于分布式計(jì)算平臺(tái)Spark改進(jìn)后的k均值算法;對(duì)每個(gè)數(shù)據(jù)向量的每一特征進(jìn)行規(guī)范化,使數(shù)據(jù)向量的每一特征的取值在0~1之間,運(yùn)行過程中根據(jù)谷本距離公式計(jì)算每個(gè)數(shù)據(jù)向量到k個(gè)簇中心的距離,根據(jù)計(jì)算得到的k個(gè)距離值,將數(shù)據(jù)向量放入到距離最小的這個(gè)簇心所對(duì)應(yīng)的蔟中,然后通過每個(gè)簇中所有數(shù)據(jù)向量求平均值來更新蔟中心,此時(shí),計(jì)算上一次k個(gè)蔟中心與更新后對(duì)應(yīng)的蔟中心之間的歐式距離,得到k個(gè)歐氏距離值,倘若k個(gè)歐氏距離值都小于規(guī)定的誤差閾值或達(dá)到迭代次數(shù)時(shí),轉(zhuǎn)步驟5),否則繼續(xù)迭代;這里迭代是指迭代簇中心,通過迭代來更新蔟中心;5)輸出聚類結(jié)果。所述的分布式計(jì)算平臺(tái)Spark,介紹如下:Spark是一個(gè)圍繞易用性、速度和復(fù)雜分析構(gòu)建的大數(shù)據(jù)處理框架,在大數(shù)據(jù)環(huán)境下提高了處理數(shù)據(jù)的實(shí)時(shí)性,并且保證了高可伸縮性和高容錯(cuò)性,此外可以將Spark部署由大量廉價(jià)機(jī)器之上來形成集群。所述的克洛斯卡爾最小生成樹算法,具體描述如下:克洛斯卡爾算法的基本思想為:選擇無(wú)向加權(quán)連通圖G中權(quán)值最小,并且不和已經(jīng)選擇的邊形成的環(huán)的邊,并將其添加到邊集E中;否則就選擇下一條邊,知道邊集E中有n-1跳變?yōu)橹?圖G中有n個(gè)頂點(diǎn))。在無(wú)向加權(quán)連通圖G=(V,E)中,V={V1,V2,...,Vn}是n個(gè)頂點(diǎn)構(gòu)成的集合,E={e1,e2,...,em}是m條邊構(gòu)成的集合,W={W1,W2,...,Wm}是每條邊對(duì)應(yīng)的權(quán)值。構(gòu)造生成樹記住T=G{e1,e2,...,en-1}。算法實(shí)現(xiàn)步驟:1)初始化頂點(diǎn)集邊集所有邊的權(quán)值WT=0。2)將所有的邊的權(quán)值按照從小到大進(jìn)行排序,記為E'。3)選擇沒有在邊集E中,權(quán)值最小,不和邊集E中的邊構(gòu)成環(huán),并且WT+Weij<<Wr+We′ij的邊eij(e0是連接頂點(diǎn)i和j的邊,Wij是eij的權(quán)值,e'ij是么有選擇的邊中的其它任何一邊,W'是邊e'ij的權(quán)值),將頂點(diǎn)i,j中沒有在點(diǎn)集A中的點(diǎn)添加到A中,并將邊eij添加到邊集E中;否則不選擇這條邊。4)重復(fù)第3步直到頂點(diǎn)集有n個(gè)頂點(diǎn),邊集中有n-1條邊。所述的最小生成樹,具體描述如下:在一個(gè)無(wú)向加權(quán)連通圖所有生成樹中,各邊代價(jià)之和最小的那棵生成樹稱為該連通圖的最小生成樹。所述的k均值算法,具體描述如下:本發(fā)明所論述的k均值算法是在Spark中SparkMllib這個(gè)子工程中實(shí)現(xiàn)的,在本發(fā)明的實(shí)現(xiàn)過程中,需要修改k均值的源碼實(shí)現(xiàn),并且需要重新編譯整個(gè)Spark項(xiàng)目(25個(gè)子項(xiàng)目)。k均值算法實(shí)現(xiàn)步驟:1)隨機(jī)選取k個(gè)中心點(diǎn)。2)計(jì)算所有數(shù)據(jù)向量到k個(gè)初始聚類的中心點(diǎn)的距離,將每個(gè)數(shù)據(jù)向量劃分到距離最近的中心點(diǎn)所在的簇中。3)計(jì)算每個(gè)聚類簇中各點(diǎn)的平均值,并作為新的中心點(diǎn)。4)重復(fù)步驟2),3),直到這k個(gè)簇點(diǎn)不再變化或者收斂或者達(dá)到所設(shè)定的迭代次數(shù)。所述的誤差平方函數(shù)H定義為H=Σi=1kΣj=1ni||Xij-mi||2---(1)]]>其中Xij表示第i個(gè)類的第j個(gè)樣本,i=1,2,...,k;j=1,2,...,ni,ni表示第i個(gè)類簇中的樣本數(shù),mi表示第i個(gè)的聚類中心。所述的特征的規(guī)范化,定義為:特征的規(guī)范化可以通過將每個(gè)特征轉(zhuǎn)換為標(biāo)準(zhǔn)得分來完成,對(duì)每個(gè)特征取平均值,用每個(gè)特征減去平均值,然后除以特征的標(biāo)準(zhǔn)差,計(jì)算公式如下:normalizedij=featureij-μjσj---(2)]]>其中normalizedij表示第i個(gè)數(shù)據(jù)向量的第j個(gè)特征的規(guī)劃化后的值,featureij表示第i個(gè)數(shù)據(jù)向量的第j個(gè)特征值,μj表示所有數(shù)據(jù)向量的第j個(gè)特征的平均值,σj表示所有數(shù)據(jù)向量的第j個(gè)特征的標(biāo)準(zhǔn)差。所述的聚類簇中心更新的計(jì)算公式,定義為:ki=1miΣj=1miXij---(3)]]>其中i=1,2,...,k,Ki表示第i個(gè)聚類蔟中心,Xij為第i簇中第j個(gè)樣本。所述的歐式距離計(jì)算公式,定義為數(shù)據(jù)向量N=(n1,n2,...,np)和M=(m1,m2,...,mp)之間的距離d(m,n)為d(m,n)=(m1-n1)2+(m2-n2)2+...+(mp-np)2---(4)]]>其中m1,m2,...,mp是數(shù)據(jù)向量M的1維至p維數(shù)據(jù)集,n1,n2,...,np是數(shù)據(jù)向量N的1維至p維數(shù)據(jù)集。谷本距離,定義為:兩個(gè)n維向量(a1,a2,...,an)和(b1,b2,...,bn)之間的谷本距離d,公式為:d=1-(a1b1+a2b2+...+anbn)(a12+a22+...+an2)+(b12+b22+...+bn2)-(a1b1+a2b2+...+anbn)---(5).]]>有益效果:與現(xiàn)有技術(shù)相比,基于分布式計(jì)算平臺(tái)改進(jìn)的k均值聚類方法,通過使用KDDCup1999數(shù)據(jù)集(KDDCup是一項(xiàng)數(shù)據(jù)挖掘競(jìng)賽,這是1999年競(jìng)賽的數(shù)據(jù)集,網(wǎng)址:http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html)進(jìn)行測(cè)試,實(shí)驗(yàn)證明本發(fā)明的Spark集群TKKM算法比SKKM算法的有更短的運(yùn)算時(shí)間和更大處理海量數(shù)據(jù)的能力,比Spark集群SKKM算法在數(shù)據(jù)向量之間具有相關(guān)性方面有更高的準(zhǔn)確率,比Spark自帶的k均值++算法有更少的迭代次數(shù)。附圖說明圖1是k均值算法的迭代過程,其中(a)為隨機(jī)初始化三個(gè)簇中心,(b)為經(jīng)過一次迭代以后,(c)為經(jīng)過二次迭代以后,(d)為經(jīng)過三次迭代以后;圖2是Spark生態(tài)系統(tǒng)圖;圖3是Spark的任務(wù)執(zhí)行圖;圖4是基于分布式計(jì)算平臺(tái)改進(jìn)的k均值聚類方法流程圖;圖5是克洛斯卡爾算法構(gòu)造最小生成樹的過程圖;圖6是隨著簇的個(gè)數(shù)增加,平方誤差函數(shù)的值H的變化圖。具體實(shí)施方式下面結(jié)合具體實(shí)施例,進(jìn)一步闡明本發(fā)明,應(yīng)理解這些實(shí)施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對(duì)本發(fā)明的各種等價(jià)形式的修改均落于本申請(qǐng)所附權(quán)利要求所限定的范圍?;舅枷耄罕景l(fā)明是一種基于分布式計(jì)算平臺(tái)改進(jìn)的k均值聚類方法,由于k均值算法存在隨機(jī)選取初始中心導(dǎo)致最終簇心局部化最優(yōu)解,對(duì)海量數(shù)據(jù)處理速度慢,數(shù)據(jù)迭代次數(shù)過多以及沒有考慮向量之間的關(guān)聯(lián)關(guān)系等問題,所以針對(duì)對(duì)海量數(shù)據(jù)處理慢的問題引入了分布式計(jì)算平臺(tái)Spark的,針對(duì)迭代次數(shù)過多的問題,引入卡洛斯卡爾算法,針對(duì)沒有考慮向量各特征間的相關(guān)性,引入谷本距離。首先,根據(jù)克洛斯卡爾算法對(duì)隨機(jī)選取的k個(gè)點(diǎn)求出這k個(gè)點(diǎn)的最小生成樹權(quán)值和,重復(fù)n次,然后根據(jù)這n次的權(quán)值和選取出權(quán)值和最大并保證k個(gè)點(diǎn)的各邊的權(quán)值相差不大,這樣可以保證簇心相對(duì)均勻分布,最后使用經(jīng)谷本距離改進(jìn)后的k均值算法進(jìn)行聚類運(yùn)算。其步驟如下:1)從樣本中隨機(jī)選取k個(gè)數(shù)據(jù)向量,對(duì)每個(gè)數(shù)據(jù)向量的每一特征進(jìn)行規(guī)范化,使數(shù)據(jù)向量的每一特征的取值在0~1之間,對(duì)選取的k個(gè)數(shù)據(jù)向量,使用克洛斯卡爾算法,求出最小生成樹的權(quán)值和,重復(fù)這個(gè)過程n次,記第i次計(jì)算得到的最小生成樹權(quán)值和為di,2)求出最小生成樹權(quán)值和中的最大值MAX(d1,d2,...,dn)對(duì)應(yīng)的由k個(gè)數(shù)據(jù)向量組成的點(diǎn)集;3)倘若求出的點(diǎn)集的各邊的權(quán)值相差不大于0.1時(shí),則將該點(diǎn)集作為初始簇中心的k個(gè)初始中心,轉(zhuǎn)步驟4);否則排除該點(diǎn)集,轉(zhuǎn)步驟2);4)然后運(yùn)行基于分布式計(jì)算平臺(tái)Spark改進(jìn)后的k均值算法:對(duì)每個(gè)數(shù)據(jù)向量的每一特征進(jìn)行規(guī)范化,使數(shù)據(jù)向量的每一特征的取值在0~1之間,運(yùn)行過程中根據(jù)谷本距離公式計(jì)算每個(gè)數(shù)據(jù)向量到k個(gè)簇中心的距離,根據(jù)計(jì)算得到的k個(gè)距離值,將數(shù)據(jù)向量放入到距離最小的這個(gè)簇心所對(duì)應(yīng)的蔟中,然后通過每個(gè)簇中所有數(shù)據(jù)向量求平均值來更新蔟中心,此時(shí),計(jì)算上一次k個(gè)蔟中心與更新后對(duì)應(yīng)的蔟中心之間的歐式距離,得到k個(gè)歐氏距離值,倘若k個(gè)歐氏距離值都小于規(guī)定的誤差閾值或達(dá)到迭代次數(shù)時(shí),轉(zhuǎn)步驟5),否則繼續(xù)迭代;5)輸出聚類結(jié)果。分布式計(jì)算平臺(tái)Spark,介紹如下:Spark是一個(gè)圍繞易用性、速度和復(fù)雜分析構(gòu)建的大數(shù)據(jù)處理框架,在大數(shù)據(jù)環(huán)境下提高了處理數(shù)據(jù)的實(shí)時(shí)性,并且保證了高可伸縮性和高容錯(cuò)性,此外可以將Spark部署由大量廉價(jià)機(jī)器之上來形成集群。克洛斯卡爾最小生成樹算法,具體描述如下:克洛斯卡爾算法的基本思想為:選擇無(wú)向加權(quán)連通圖G中權(quán)值最小,并且不和已經(jīng)選擇的邊形成的環(huán)的邊,并將其添加到邊集E中;否則就選擇下一條邊,知道邊集E中有n-1跳變?yōu)橹?圖G中有n個(gè)頂點(diǎn))。在無(wú)向加權(quán)連通圖G=(V,E)中,V={V1,V2,...,Vn}是n個(gè)頂點(diǎn)構(gòu)成的集合,E={e1,e2,...,em}是m條邊構(gòu)成的集合,W={W1,W2,...,Wm}是每條邊對(duì)應(yīng)的權(quán)值。構(gòu)造生成樹記住T=G{e1,e2,...,en-1}。算法實(shí)現(xiàn)步驟:1)初始化頂點(diǎn)集邊集所有邊的權(quán)值WT=0。2)將所有的邊的權(quán)值按照從小到大進(jìn)行排序,記為E'。3)選擇沒有在邊集E中,權(quán)值最小,不和邊集E中的邊構(gòu)成環(huán),并且WT+Weij<<Wr+We′ij的邊eij(e0是連接頂點(diǎn)i和j的邊,Wij是eij的權(quán)值,e'ij是么有選擇的邊中的其它任何一邊,W'是邊e'ij的權(quán)值),將頂點(diǎn)i,j中沒有在點(diǎn)集A中的點(diǎn)添加到A中,并將邊eij添加到邊集E中;否則不選擇這條邊。4)重復(fù)第3步直到頂點(diǎn)集有n個(gè)頂點(diǎn),邊集中有n-1條邊。最小生成樹,具體描述如下:在一個(gè)無(wú)向加權(quán)連通圖所有生成樹中,各邊代價(jià)之和最小的那棵生成樹稱為該連通圖的最小生成樹。所述的k均值算法,具體描述如下:本發(fā)明的k均值算法是在Spark中SparkMllib這個(gè)子工程中實(shí)現(xiàn)的,在本發(fā)明的實(shí)現(xiàn)過程中,需要修改k均值的源碼實(shí)現(xiàn),并且需要重新編譯整個(gè)Spark項(xiàng)目(25個(gè)子項(xiàng)目)。k均值算法實(shí)現(xiàn)步驟:1)隨機(jī)選取k個(gè)中心點(diǎn)。2)計(jì)算所有數(shù)據(jù)向量到k個(gè)初始聚類的中心點(diǎn)的距離,將每個(gè)數(shù)據(jù)向量劃分到距離最近的中心點(diǎn)所在的簇中。3)計(jì)算每個(gè)聚類簇中各點(diǎn)的平均值,并作為新的中心點(diǎn)。4)重復(fù)步驟2),3),直到這k個(gè)簇點(diǎn)不再變化或者收斂或者達(dá)到所設(shè)定的迭代次數(shù)。誤差平方函數(shù)H定義為H=Σi=1kΣj=1ni||Xij-mi||2---(1)]]>其中Xij表示第i個(gè)類的第j個(gè)樣本,i=1,2,...,k;j=1,2,...,ni,ni表示第i個(gè)類簇中的樣本數(shù),mi表示第i個(gè)的聚類中心。特征的規(guī)范化,定義為:特征的規(guī)范化可以通過將每個(gè)特征轉(zhuǎn)換為標(biāo)準(zhǔn)得分來完成,對(duì)每個(gè)特征取平均值,用每個(gè)特征減去平均值,然后除以特征的標(biāo)準(zhǔn)差,計(jì)算公式如下:normalizedij=featureij-μjσj---(2)]]>其中normalizedij表示第i個(gè)數(shù)據(jù)向量的第j個(gè)特征的規(guī)劃化后的值,featureij表示第i個(gè)數(shù)據(jù)向量的第j個(gè)特征值,μj表示所有數(shù)據(jù)向量的第j個(gè)特征的平均值,σj表示所有數(shù)據(jù)向量的第j個(gè)特征的標(biāo)準(zhǔn)差。聚類簇中心更新的計(jì)算公式,定義為:ki=1miΣj=1miXij---(3)]]>其中i=1,2,...,k,Ki表示第i個(gè)聚類蔟中心,Xij為第i簇中第j個(gè)樣本。歐式距離計(jì)算公式,定義為數(shù)據(jù)向量N=(n1,n2,...,np)和M=(m1,m2,...,mp)之間的距離d(m,n)為d(m,n)=(m1-n1)2+(m2-n2)2+...+(mp-np)2---(4)]]>其中m1,m2,...,mp是數(shù)據(jù)向量M的1維至p維數(shù)據(jù)集,n1,n2,...,np是數(shù)據(jù)向量N的1維至p維數(shù)據(jù)集。谷本距離,定義為:兩個(gè)n維向量(a1,a2,...,an)和(b1,b2,...,bn)之間的谷本距離d,公式為:d=1-(a1b1+a2b2+...+anbn)(a12+a22+...+an2)+(b12+b22+...+bn2)-(a1b1+a2b2+...+anbn)---(5).]]>本發(fā)明所使用的數(shù)據(jù)集基本特征如表1所示。表1數(shù)據(jù)集基本特征本發(fā)明所使用的平臺(tái)是分布式計(jì)算平臺(tái)Spark,在實(shí)驗(yàn)中Spark是以Spark集群的方式,基本情況如下表2所示。表2Spark集群的各機(jī)器的參數(shù)配置和運(yùn)行進(jìn)程機(jī)器IP內(nèi)存cpu運(yùn)行進(jìn)程192.168.189.1506g2個(gè)酷睿i7處理器Master、Slave192.168.189.1513g2個(gè)酷睿i7處理器Slave192.168.189.1523g2個(gè)酷睿i7處理器Slave這里簡(jiǎn)記通過卡洛斯卡爾算法改進(jìn)的k均值算法為SKKM算法。這里簡(jiǎn)記能運(yùn)行在Spark集群環(huán)境的SKKM算法為Spark集群SKKM算法。這里簡(jiǎn)記通過谷本距離和克洛斯卡爾算法改進(jìn)的K均值算法為TKKM算法。這里簡(jiǎn)記能運(yùn)行在Spark集群環(huán)境的TKKM算法為Spark集群TKKM算法。這里需要說明一下,為了使SKKM算法和TKKM算法能夠運(yùn)行在Spark集群上,需要通過修改Spark機(jī)器學(xué)習(xí)中k均值的源碼,然后通過maven來實(shí)現(xiàn)對(duì)Spark整體工程重新編譯。為了能獲得更好的性能之前需要選擇合適的K值。本發(fā)明通過Spark自帶的隨機(jī)初始中心的k均值算法進(jìn)行選擇合適的k值,k從10到120進(jìn)行,步進(jìn)為10,評(píng)價(jià)指標(biāo)位誤差平方函數(shù)H,重復(fù)20次,實(shí)驗(yàn)結(jié)果圖6所示,此處需要說明一下圖6的誤差平方函數(shù)值縮小了108倍,僅僅是為了顯示方便。根據(jù)圖6所示當(dāng)k=100時(shí),平方誤差函數(shù)值H已經(jīng)趨近平穩(wěn),取大于100的k值,反而會(huì)增加計(jì)算的復(fù)雜度。針對(duì)現(xiàn)有技術(shù)一第一個(gè)技術(shù)缺點(diǎn):處理海量數(shù)據(jù)和很大維度數(shù)據(jù)向量數(shù)據(jù)集運(yùn)算速度慢或無(wú)法運(yùn)算的問題,本發(fā)明通過Spark集群的方式解決,本文中通過eclipse運(yùn)行SKKM算法來模擬單機(jī)版,Spark集群運(yùn)行SKKM算法和TKKM算法,重復(fù)20次上述運(yùn)算,記錄每一次運(yùn)算的時(shí)間,取平均值的方式來消除偶然因素的影響。記錄結(jié)果如下表3。根據(jù)表3結(jié)果可以看到,當(dāng)數(shù)據(jù)量很小的時(shí)候,單機(jī)版本SKKM算法運(yùn)行時(shí)間比Spark集群SKKM算法及Spark集群TKKM算法短,當(dāng)數(shù)據(jù)不斷增大時(shí),單機(jī)版本SKKM算法的時(shí)間開始快速增加,Spark集群SKKM算法和Spark集群TKKM算法的運(yùn)行時(shí)間增加相對(duì)緩慢,當(dāng)數(shù)據(jù)量超出單機(jī)版本運(yùn)算能力時(shí),Spark集群SKKM算法和Spark集群TKKM算法還能很快完成運(yùn)算。這邊需要說明一下,本發(fā)明的是能運(yùn)行在Spark集群上的TKKM算法,這里之所以運(yùn)算時(shí)間比Spark集群SKKM算法長(zhǎng)是因?yàn)楣缺揪嚯x的時(shí)間復(fù)雜度比歐氏距離的大。當(dāng)前信息技術(shù)快速發(fā)展,信息以爆炸式增長(zhǎng),遠(yuǎn)遠(yuǎn)超出單機(jī)的運(yùn)算能力,而Spark可以通過不斷添加廉價(jià)的機(jī)器擴(kuò)展集群大小來滿足運(yùn)算的需求,這就是本發(fā)明第一個(gè)優(yōu)勢(shì)。表3單機(jī)和分布式集群運(yùn)算時(shí)間數(shù)據(jù)樣本個(gè)數(shù)單機(jī)SKKM算法Spark集群SKKM算法Spark集群TKKM算法100041s92s92s1000059s105s107s10000070s112s118s1000000136s150s161s100000001045s189s203s20000000內(nèi)存溢出無(wú)法運(yùn)行265s284s針對(duì)現(xiàn)有技術(shù)一第二個(gè)技術(shù)缺點(diǎn):選擇初始中心以后進(jìn)行k均值運(yùn)算時(shí),沒有考慮每個(gè)數(shù)據(jù)向量之間的相似度。本發(fā)明引入谷本距離來計(jì)算每個(gè)數(shù)據(jù)向量到每個(gè)簇心的距離來決定每個(gè)數(shù)據(jù)向量屬于哪個(gè)簇,默認(rèn)使用的是歐氏距離,使用谷本距離的算法是Spark集群TKKM算法,使用歐氏距離的算法是Spark集群SKKM算法,本發(fā)明通過誤差平方函數(shù)H來評(píng)價(jià)這兩個(gè)算法在性能上的情況。通過重復(fù)20次求平均值來減少誤差,結(jié)果記錄如下表4所示。表4Spark集群SKKM算法和Spark集群TKKM算法的誤差平方函數(shù)值E算法Spark集群SKKM算法Spark集群TKKM算法誤差平方函數(shù)值H229.551758969970706164.192648887949918根據(jù)表4可以看到,Spark集群TKKM算法的誤差平方函數(shù)值H比Spark集群SKKM算法的誤差平方函數(shù)值H降低了,可以看出在數(shù)據(jù)向量之間存在相關(guān)性的數(shù)據(jù)集上引入谷本距離可以降低k均值算法的誤差平方函數(shù)值,從而得到更好的聚類結(jié)果。針對(duì)現(xiàn)有技術(shù)二Spark自帶的k均值++算法的缺點(diǎn):由于k均值++沒有很好的選擇初始中心,沒有很好的解決隨機(jī)選擇初始中心帶來的迭代次數(shù)過多的問題。本發(fā)明引入克洛斯卡爾算法,為了消除谷本距離引入帶來的影響,本發(fā)明還需Spark集群SKKM算法作一個(gè)參照。這里使用運(yùn)算的迭代次數(shù)作為指標(biāo)。重復(fù)20次,記錄每次的各個(gè)算法的迭代次數(shù)來消除偶然因素帶來的影響。實(shí)驗(yàn)結(jié)果記錄在表5中,這里需要說明一下,記錄數(shù)據(jù)采用四舍五入的方式。表5各種算法在相同環(huán)境下的迭代次數(shù)算法Spark自帶k均值Spark自帶k均值++Spark集群SKKMSpark集群TKKM迭代次數(shù)143201616根據(jù)表5可以看到,Spark自帶k均值由于隨機(jī)選擇初始中心,導(dǎo)致迭代次數(shù)特別的多,Spark集群SKKM算法與Spark集群TKKM算法的迭代次數(shù)基本相當(dāng),說明谷本距離的引入對(duì)于迭代次數(shù)而言并沒有增加,Spark集群TKKM算法的迭代次數(shù)比Spark自帶k均值迭代次數(shù)減少了4次,減少了25%,很好的說明Spark集群TKKM算法可以很好的減少運(yùn)算的迭代次數(shù)。綜合上面實(shí)驗(yàn)結(jié)果數(shù)據(jù)證明本發(fā)明的Spark集群TKKM算法比SKKM算法的有更短的運(yùn)算時(shí)間和更大處理海量數(shù)據(jù)的能力,比Spark集群SKKM算法在數(shù)據(jù)向量之間具有相關(guān)性方面有更高的準(zhǔn)確率,比Spark自帶的k均值++算法有更少的迭代次數(shù)。當(dāng)前第1頁(yè)1 2 3 
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1