1. 程式人生 > >k-均值聚類

k-均值聚類

str 數據集 clas 由於 body src lsp idt center

K-均值聚類

  k-均值(k-means Clustering)算法是著名的劃分聚類算法。由於他的簡潔和效率使得它成為所有聚類算法中最為廣泛使用的。

  給定一個數據點集合和需要的聚類數目K(K是有用戶指定的),K-均值算法根據某個距離函數反復的把數據分入K個聚類中。

   聚類屬於無監督學習,以往的回歸、樸素貝葉斯、SVM等都是有類別標簽y的,也就是說樣例中已經給出了樣例的分類。而聚類的樣本中卻沒有給定y,只有特征x,比如假設宇宙中的星星可以表示成三維空間中的點集(x,y,z)。聚類的目的是找到每個樣本x潛在的類別y,並將同類別y的樣本x放在一起。比如上面的星星,聚類後結果是一個個星團,星團裏面的點相互距離比較近,星團間的星星距離就比較遠了。

K-均值算法

k均值算法的計算過程非常直觀:

1、從D中隨機取k個元素,作為k個簇的各自的中心。

2、分別計算剩下的元素到k個簇中心的相異度,將這些元素分別劃歸到相異度最低的簇。

3、根據聚類結果,重新計算k個簇各自的中心,計算方法是取簇中所有元素各自維度的算術平均數。

4、將D中全部元素按照新的中心重新聚類。

5、重復第4步,直到聚類結果不再變化。

6、將結果輸出。

在算法的開始,先從隨機選取k個數據點作為初始的種子(seed)聚類中心,然後計算每個數據的點與各個種子聚類中心之間的距離,把每個數據點分配給距離它最近的聚類中心。聚類中心以及分配給它的數據點就代表一個聚類,一旦全部的數據點都被分配完,每個聚類的聚類中心以及分配煩人中心會根據給聚類中現有的數據點重新計算。計算的過程將被不斷重復知道滿足某個終止條件。

終止(收斂)條件可以是一下任何一個:

(1) 沒有(或最小數目)數據點被重新分配到不同的聚類。

(2) 沒有(或最小數目)聚類中心沒有發生變化。

(3) 誤差平方和(SSE)局部最小

技術分享圖片

其中k表示需要的聚類數目,Cj表示第j個聚類,Mj是聚類的聚類中心(中所有數據點的均值向量),dist(X,Mj)表示數據點和聚類中心的距離。

在那些均值能被定義和計算的數據集上的均能使用K-均值算法。在歐式空間中聚類的均值可以用下式計算:

技術分享圖片

其中|Cj|表示Cj中的數據點的個數。數據點和聚類均值(中心)之間的距離可以被計算如下:

技術分享圖片

k-均值聚類