本發(fā)明屬于數(shù)據(jù)挖掘技術(shù)領(lǐng)域,涉及一種基于Hadoop的自適應(yīng)RK-means算法。
背景技術(shù):
K-means算法是數(shù)據(jù)挖掘中應(yīng)用最經(jīng)典的聚類算法,具有實(shí)現(xiàn)過程簡單,并且收斂速度快等優(yōu)點(diǎn),但是由于初始聚類中心選擇對聚類結(jié)果影響較大,K-means算法具有很強(qiáng)敏感性,針對PB集數(shù)據(jù)串行化處理方式的效率也很低。為此,許多學(xué)者采用了自適應(yīng)選取聚類中心的K-means算法,實(shí)現(xiàn)了聚類數(shù)目的自適應(yīng)選取,但是聚類中心點(diǎn)并不是全局最優(yōu),有的采用了面向全局優(yōu)化的K-means算法,只能實(shí)現(xiàn)聚類數(shù)目的隨機(jī)性選取,不能保證聚類數(shù)目的準(zhǔn)確性。傳統(tǒng)算法采取的串行化程序思想限制了對大數(shù)據(jù)的處理效率。
由于K-means算法能夠?qū)崿F(xiàn)基于MapReduce的并行K-means處理方式,本發(fā)明提出了將自適應(yīng)初始聚類中心選取算法與RK-means算法相結(jié)合起來,并且在Hadoop平臺下實(shí)現(xiàn)了自適應(yīng)RK-means算法,不但保證了聚類中心數(shù)目的準(zhǔn)確獲取,而且保證了聚類中心的全局最優(yōu),在提高聚類結(jié)果的準(zhǔn)確性的同時(shí),也提升了算法的運(yùn)行效率。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種基于Hadoop的自適應(yīng)RK-means算法,該方法針對傳統(tǒng)K-means算法對初始聚類中心選擇的敏感、不具備全局優(yōu)化能力,并且運(yùn)行效率低下的問題,將自適應(yīng)初始聚類中心選取算法與RK-means算法相結(jié)合,并且在Hadoop平臺下實(shí)現(xiàn)了自適應(yīng)RK-means算法,不但保證了聚類中心數(shù)目的準(zhǔn)確獲取,而且保證了聚類中心的全局最優(yōu)。
為達(dá)到上述目的,本發(fā)明提供如下技術(shù)方案:
一種基于Hadoop的自適應(yīng)RK-means算法,包括以下步驟:
S1:根據(jù)業(yè)務(wù)需求,輸入待聚類的數(shù)據(jù)集;
S2:運(yùn)用基于Hadoop的自適應(yīng)聚類中心算法獲取聚類中心點(diǎn)及數(shù)目;
S3:將上一步的結(jié)果作為算法的初始聚類中心,輸入到基于Hadoop的RK-means算法中,獲取全局最優(yōu)的聚類簇;
S4:輸出聚類結(jié)果。
進(jìn)一步,所述步驟S1具體包括:
S11:確定業(yè)務(wù)需求;
S12:根據(jù)業(yè)務(wù)需求準(zhǔn)備數(shù)據(jù);
S13:數(shù)據(jù)預(yù)處理;
S14:得到待聚類的數(shù)據(jù)集。
進(jìn)一步,所述步驟S13中的數(shù)據(jù)預(yù)處理通過分析數(shù)據(jù)、異常值處理、數(shù)據(jù)的抽取及數(shù)據(jù)的轉(zhuǎn)換,直接作為算法的輸入數(shù)據(jù)。
進(jìn)一步,所述步驟S2具體包括:
S21:將數(shù)據(jù)集X讀入,估計(jì)數(shù)據(jù)集內(nèi)隨機(jī)觀測值的空間距離,按照升序排列,隨機(jī)選取一觀測點(diǎn)作為初始中心點(diǎn),聚類數(shù)目設(shè)置為1,設(shè)定兩觀測值相似性閾值;
S22:估計(jì)其余觀測點(diǎn)與初始聚類中心間的空間距離,將觀測點(diǎn)的id作為map函數(shù)的key,觀測點(diǎn)與初始聚類中心點(diǎn)的空間距離設(shè)為value輸出到Combine函數(shù)中;
S23:Combine函數(shù)選取所有觀測點(diǎn)中最小的空間距離,取該距離與兩觀測值相似性閾值進(jìn)行比較:若偏大,則聚類數(shù)量進(jìn)1,將該觀測值的id作為key,該觀測值的屬性記為value輸出到Reduce中;若偏小,則將初始中心點(diǎn)的id作為key,該觀測值的屬性記為value輸出到Reduce;
S24:通過Reduce函數(shù)更新兩觀測值相似性閾值;
S25:判斷數(shù)據(jù)集中所有數(shù)據(jù)是否都已分類完畢:若是,則輸出聚類中心;反之,則重復(fù)執(zhí)行S22至S24。
進(jìn)一步,所述步驟S3具體包括:
S31:根據(jù)每個(gè)對象到初始聚類中心的距離,將對象分配給最近的聚類中心;
S32:Map函數(shù)中,key表示該類簇所屬聚類中心類別,value表示類別及其對象的屬性;
S33:Reduce函數(shù)讀取Map函數(shù)寫入的中間結(jié)果,即context.write(key,value);
S34:獲取每個(gè)簇的平均值;
S35:根據(jù)各對象到每個(gè)簇中心的距離,采用增加隨機(jī)項(xiàng)的更新算法更新聚類中心,將它們重新分配給距離最近的簇;
S36:輸出不同的簇,其中key為各個(gè)簇的編號,value為各個(gè)簇中每個(gè)對象對應(yīng)的屬性,最后的輸出就是RK-means聚類的結(jié)果
本發(fā)明的有益效果在于:本發(fā)明將自適應(yīng)初始聚類中心選取算法與RK-means算法相結(jié)合起來,并且在Hadoop平臺下實(shí)現(xiàn)了自適應(yīng)RK-means算法,不但保證了聚類中心數(shù)目的準(zhǔn)確獲取,而且保證了聚類中心的全局最優(yōu),在提高聚類結(jié)果的準(zhǔn)確性的同時(shí),也提升了算法的運(yùn)行效率。
附圖說明
為了使本發(fā)明的目的、技術(shù)方案和有益效果更加清楚,本發(fā)明提供如下附圖進(jìn)行說明:
圖1為本發(fā)明實(shí)施流程圖;
圖2為本發(fā)明算法框架圖。
具體實(shí)施方式
下面將結(jié)合附圖,對本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)的描述。
圖1為本發(fā)明實(shí)施流程圖,如圖所示,該算法包括以下步驟:S1:根據(jù)業(yè)務(wù)需求,輸入待聚類的數(shù)據(jù)集;S2:運(yùn)用基于Hadoop的自適應(yīng)聚類中心算法獲取聚類中心點(diǎn)及數(shù)目;S3:將上一步的結(jié)果作為算法的初始聚類中心,輸入到基于Hadoop的RK-means算法中,獲取全局最優(yōu)的聚類簇;S4:輸出聚類結(jié)果。
圖2為本發(fā)明算法框架圖,實(shí)施例如下:
1、自適應(yīng)選取初始中心選取算法實(shí)現(xiàn)
算法思想:假設(shè)用戶群數(shù)目為Ns,樣本數(shù)據(jù)集X={xi|i=1,2,...,n},Cj(j=1,2,...,k)表示k個(gè)聚類簇,聚類中心為cj(j=1,2,...,k),兩個(gè)不同對象間不相似的閾值設(shè)為ε,自適應(yīng)初始中心選取的準(zhǔn)則為:若d(xi,ci)>ε,其中那么xi不屬于Cj類。
算法步驟:
Step 1:輸入X={xi|i=1,2,...,n}的用戶數(shù)據(jù)集;
Step 2:計(jì)算數(shù)據(jù)集內(nèi)隨機(jī)對象xi,xj間的空間距離D(xi,xj),按照升序排列后放入數(shù)據(jù)集D;
Step 3:從數(shù)據(jù)集中隨機(jī)選取一個(gè)對象作為初始聚類中心,設(shè)聚類數(shù)目為k=1,兩觀測值相似性閾值取為
Step 4:估計(jì)數(shù)據(jù)集內(nèi)其余對象與初始聚類中心間的空間距離,選出極小值與進(jìn)行比較,若大于則聚類數(shù)量增加1,從而獲得更新的聚類中心;若小于則將此點(diǎn)與對應(yīng)的聚類中心歸為一類,同時(shí)更新相似性閾值
Step 5:重復(fù)執(zhí)行Step 4,直到數(shù)據(jù)集中所有對象分類完畢;
Step 6:輸出聚類中心。
2、RK-means算法實(shí)現(xiàn)
聚類中心處于該類簇所有對象的中心位置,如果更新后的聚類中心距離其余對象很遠(yuǎn),那么該聚類中心是一個(gè)沒有實(shí)際意義的聚類中心,聚類質(zhì)量很差。為此,RK-means算法在對聚類中心進(jìn)行更新時(shí),增加了一個(gè)與數(shù)據(jù)集的幾何中心距離、以及初始聚類中心距離相關(guān)的隨機(jī)項(xiàng),保證每次更新的聚類中心距離簇中對象相對較近,偏差較少,從而提升算法的探索能力,以下給出RK-meanns算法的聚類中心更新方程。
假設(shè)算法到t-1步時(shí),k個(gè)簇依次表示為C1(t-1),C2(t-1),C3(t-1),…,Ck(t-1),則RK-means算法更新聚類中心的方程表示為:
其中,r是D維的隨機(jī)變量,服從D維的超立方體[0,1]D上均勻分布,a(t)是增加隨機(jī)項(xiàng)的系數(shù)因子;隨機(jī)變量r與(m-mj(t-1))之間的乘積為兩向量之間的點(diǎn)積;m是x1,x2,x3,...,xn的算術(shù)平均,代表數(shù)據(jù)集的幾何中心。
可以看出,隨機(jī)變量r增加了算法在迭代過程中的隨機(jī)性,能夠跳出傳統(tǒng)K-means算法容易陷入局部最優(yōu)的缺陷,使得算法具有全局探索的能力。因此,式(m-mj(t-1))提高了算法迭代更新解的質(zhì)量,若由mj得到的當(dāng)前聚類中心m1(t),m2(t),...,mn(t)沒有t-1步驟的聚類中心好,則不修正t-1步驟的聚類中心,往后執(zhí)行t+1步,這樣就可以保證算法在迭代過程具有較好的探索方向。
此外,RK-means算法中設(shè)置了隨著迭代次數(shù)t的增加線性地減小的因子a(t)。在迭代初期a(t)較大,對聚類中心點(diǎn)更新的變化范圍較大,算法的全局探索能力較強(qiáng);在迭代后期a(t)較小,算法的局部搜索能力很強(qiáng)。假設(shè)最大迭代次數(shù)為GN,設(shè)a(t)最小值為a0,最大值為a1,則
RK-means算法步驟:
Step 1:將自適應(yīng)選取初始中心選取算法中獲取的k個(gè)聚類中心m1(0),m2(0),...,mk(0),作為RK-means算法的初始聚類中心;
Step 2:根據(jù)每個(gè)對象到初始聚類中心的距離,將其分配到離它最近的聚類中心所在的類中,k個(gè)聚類分別表示為C1(t-1),C2(t-1),C3(t-1),…,Ck(t-1);
Step 3:按RK-means算法的聚類中心更新方程mj更新聚類中心,得到新的聚類中心表示為m1(t),m2(t),…,mk(t);
Step 4:首先,計(jì)算出總類間離散度F(t)=F(m1(t),m2(t),...,mk(t)),若該值大于t-1步中得到的總類間離散度,則不更新聚類中心,令t=t+1,轉(zhuǎn)到Step 2繼續(xù)進(jìn)行迭代。若F(t-1)與F(t)的差別小于正數(shù)ε,或者算法達(dá)到了迭代次數(shù)上限的t=GN,迭代結(jié)束;否則令t=t+1,轉(zhuǎn)到Step 2繼續(xù)迭代。
最后說明的是,以上優(yōu)選實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管通過上述優(yōu)選實(shí)施例已經(jīng)對本發(fā)明進(jìn)行了詳細(xì)的描述,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以在形式上和細(xì)節(jié)上對其作出各種各樣的改變,而不偏離本發(fā)明權(quán)利要求書所限定的范圍。