k-means, 聚類(clustering) 屬於非監督學習 (unsupervised learning),無類別標記。clustering 中的經典演算法,資料探勘十大經典演算法之一,其運算速度比較快,而且簡單。但是最終的結果和初始點的選擇有關,容易陷入區域性最優,且需要知道k的值。
1. 演算法接受引數 k ;然後將事先輸入的n個資料物件劃分為 k個聚類以便使得所獲得的聚類滿足:同一
聚類中的物件相似度較高;而不同聚類中的物件相似度較小。
2.演算法思想:
以空間中k個點為中心進行聚類,對最靠近他們的物件歸類。通過迭代的方法,逐次更新各聚類中心
的值,直至得到最好的聚類結果
3.演算法描述:
(1)適當選擇c個類的初始中心;
(2)在第k次迭代中,對任意乙個樣本,求其到c各中心的距離,將該樣本歸到距離最短的中心所在
的類;(3)利用均值等方法更新該類的中心值;
(4)對於所有的c個聚類中心,如果利用(2)(3)的迭代法更新後,值保持不變,則迭代結束,否則繼續迭代。
輸入:k, data[n];
(1) 選擇k個初始中心點,例如c[0]=data[0],…c[k-1]=data[k-1];
(2) 對於data[0]….data[n], 分別與c[0]…c[k-1]比較,假定與c[i]差值最少,就標記為i;
(3) 對於所有標記為i點,重新計算c[i]=/標記為i的個數;
(4) 重複(2)(3),直到所有c[i]值的變化小於給定閾值。
假設我們現在總共有四個點,和兩個初始中心點(以紅星標記)
四個點座標:a(1,1);b(2,1);c(4,3);d(5,4)
中心點座標:c1(1,1) ;c2(2,1)
d°表示中心點到各個點的距離。
由於a點到中心點c1最近,而bcd三點到中心點c2比到c1進,所以:
a點歸為第一類,bcd歸為第二類。
根據歸類重新計算中心點。只有a點屬於第一類,bcd屬於第二類,我們對每一類所有的點求均值
所以:
c1=a=(1,1)
下圖是更新過後的
c1不變,c2的位置已經發生了變化。然後我們重複上面的步驟
此時由於a點b點到c1點的距離小於到c2的距離,所以ab點歸為一類;c點d點到c2點的距離小於到c1點的距離,所以cd點歸為一類
重新計算中心點c1和c2。
更新後的圖如下:
再次重複上面的步驟
此時a點和b點到c1的距離還是小於到c2的距離,c點和d點到c2的距離還是小於到c1的距離歸類沒有任何的變化,所以演算法終止,聚類結束。
K Means聚類演算法原理
k means演算法是無監督的聚類演算法,它實現起來比較簡單,聚類效果也不錯,因此應用很廣泛。k means演算法有大量的變體,本文就從最傳統的k means演算法講起,在其基礎上講述k means的優化變體方法。包括初始化優化k means 距離計算優化elkan k means演算法和大資料情況...
K Means聚類演算法原理
k means演算法是無監督的聚類演算法,它實現起來比較簡單,聚類效果也不錯,因此應用很廣泛。k means演算法有大量的變體,本文就從最傳統的k means演算法講起,在其基礎上講述k means的優化變體方法。包括初始化優化k means 距離計算優化elkan k means演算法和大資料情況...
K means演算法原理以及其缺點
k means是一種經典unsupervised的聚類演算法。其演算法描述如下 輸入 聚類個數 k,n個資料物件 輸出 每個資料物件所屬的聚類label 滿足方差最小 從n個資料物件中挑選出k個質心。計算n個資料物件距離不同質心的距離,並將n個資料物件劃分到與之距離最小的質心,形成新的k個聚類。重新...