mahout之聚類演算法——KMeans分析

來源:互聯網
上載者:User

    一,K-Means聚類演算法原理

        k-means 演算法接受參數 k ;然後將事先輸入的n個資料對象劃分為 k個聚類以便使得所獲得的聚類滿足:同一聚類中的對象相似性較高;而不同聚類中的對象相似性較小。聚類相似性是利用各聚類中對象的均值所獲得一個“中心對象”(引力中心)來進行計算的。

  K-means演算法是最為經典的基於劃分的聚類方法,是十大經典資料採礦演算法之一。K-means演算法的基本思想是:以空間中k個點為中心進行聚類,對最靠近他們的對象歸類。通過迭代的方法,逐次更新各聚類中心的值,直至得到最好的聚類結果。

  假設要把樣本集分為c個類別,演算法描述如下:

  (1)適當選擇c個類的初始中心;

  (2)在第k次迭代中,對任意一個樣本,求其到c個中心的距離,將該樣本歸到距離最短的中心所在的類;

  (3)利用均值等方法更新該類的中心值;

  (4)對於所有的c個聚類中心,如果利用(2)(3)的迭代法更新後,值保持不變,則迭代結束,否則繼續迭代。

  該演算法的最大優勢在於簡潔和快速。演算法的關鍵在於初始中心的選擇和距離公式。

   二,mahout Kmeans聚類實現 :
(1)參數input指定待聚類的所有資料點,clusters指定初始聚類中心
如果指定參數k,由org.apache.mahout.clustering.kmeans.RandomSeedGenerator.buildRandom
通過org.apache.hadoop.fs直接從input指定檔案中隨機讀取k個點放入clusters中

(2)根據原資料點和上一次迭代(或初始聚類)的聚類中心計算本次迭代
的聚類中心,輸出到clusters-N目錄下。
該過程由org.apache.mahout.clustering.kmeans下的
KMeansMapper\KMeansCombiner\KMeansReducer\KMeansDriver實現

KMeansMapper:在configure中初始化mapper時讀入上一次迭代產生或初始聚類中心
(每個mapper都讀入所有的聚類中心);
map方法對輸入的每個點,計算距離其最近的類,並加入其中
輸出key為該點所屬聚類ID,value為KMeansInfo執行個體,包含點的個數和各分量的累加和

KMeansCombiner:本地累加KMeansMapper輸出的同一聚類ID下的點個數和各分量的和

KMeansReducer:累加同一聚類ID下的點個數和各分量的和,求本次迭代的聚類中心;
並根據輸入Delta判斷該聚類是否已收斂:上一次迭代聚類中心與本次迭代聚類中心距離<Delta;
輸出各聚類中心和其是否收斂標記

KMeansDriver:控制迭代過程直至超過最大迭代次數或所有聚類都已收斂
每輪迭代後,KMeansDriver讀取其clusters-N目錄下的所有聚類,若所有聚類已收斂
則整個Kmeans聚類過程收斂了。

參數調整 :

manhout Kmeans聚類有兩個重要參數:收斂Delta和最大迭代次數

個人覺得Delta值越小,表示收斂條件越高,因此最終收斂的聚類數可能會降低,

而最大迭代次數可通過觀察每次迭代後收斂聚類數決定,當收斂聚類數幾乎不再變化或震蕩時可停止迭代了

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.