mahout之聚類演算法——KMeans分析
一,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值越小,表示收斂條件越高,因此最終收斂的聚類數可能會降低,
而最大迭代次數可通過觀察每次迭代後收斂聚類數決定,當收斂聚類數幾乎不再變化或震盪時可停止迭代了
相關文章
- Mahout學習之聚類演算法Kmeans聚類演算法
- Mahout聚類演算法學習之Canopy演算法的分析與實現聚類演算法
- 102、聚類Kmeans演算法聚類演算法
- KMeans演算法與GMM混合高斯聚類演算法聚類
- kmeans聚類演算法matlab實現聚類演算法Matlab
- kmeans實現文字聚類聚類
- 《機器學習實戰》kMeans演算法(K均值聚類演算法)機器學習演算法聚類
- Kmeans如何初始化聚類中心聚類
- 聚類kmeans演算法在yolov3中的應用聚類演算法YOLO
- ML.NET技術研究系列-2聚類演算法KMeans聚類演算法
- 聚類之K均值聚類和EM演算法聚類演算法
- 呼叫WEKA包進行kmeans聚類(java)聚類Java
- 利用python的KMeans和PCA包實現聚類演算法PythonPCA聚類演算法
- 機器學習-聚類分析之DBSCAN機器學習聚類
- 聚類之dbscan演算法聚類演算法
- 第十篇:K均值聚類(KMeans)聚類
- 【機器學習】:Kmeans均值聚類演算法原理(附帶Python程式碼實現)機器學習聚類演算法Python
- 《機器學習實戰》二分-kMeans演算法(二分K均值聚類)機器學習演算法聚類
- 聚類分析--k中心點演算法聚類演算法
- Mahout分類演算法學習之實現Naive Bayes分類示例演算法AI
- 聚類分析聚類
- 聚類演算法聚類演算法
- 機器學習演算法筆記之8:聚類演算法機器學習演算法筆記聚類
- 聚類(part3)--高階聚類演算法聚類演算法
- 機器學習筆記之Kmeans演算法機器學習筆記演算法
- 聚類分析-案例:客戶特徵的聚類與探索性分析聚類特徵
- Mahout學習系列之推薦演算法演算法
- 部分聚類演算法簡介及優缺點分析聚類演算法
- OPTICS聚類演算法原理聚類演算法
- 初探DBSCAN聚類演算法聚類演算法
- 聚類演算法綜述聚類演算法
- DBSCAN密度聚類演算法聚類演算法
- BIRCH聚類演算法原理聚類演算法
- Meanshift,聚類演算法聚類演算法
- K-均值聚類分析聚類
- 【python資料探勘課程】二十四.KMeans文字聚類分析互動百科語料Python聚類
- 14聚類演算法-程式碼案例六-譜聚類(SC)演算法案例聚類演算法
- 09聚類演算法-層次聚類-CF-Tree、BIRCH、CURE聚類演算法