k-means算法詳解

k-means算法詳解

  • 主要內容
    • k-means算法簡介
    • k-means算法詳解
    • k-means算法優缺點分析
    • k-means算法改進算法k-means++

1、k-means算法簡介
  k-means算法是一種聚類算法,所謂聚類,即根據相似性原則,將具有較高相似度的數據對象劃分至同一類簇,將具有較高相異度的數據對象劃分至不同類簇。聚類與分類最大的區別在於,聚類過程爲無監督過程,即待處理數據對象沒有任何先驗知識,而分類過程爲有監督過程,即存在有先驗知識的訓練數據集。
  k-means算法中的k代表類簇個數,means代表類簇內數據對象的均值(這種均值是一種對類簇中心的描述),因此,k-means算法又稱爲k-均值算法。k-means算法是一種基於劃分的聚類算法,以距離作爲數據對象間相似性度量的標準,即數據對象間的距離越小,則它們的相似性越高,則它們越有可能在同一個類簇。數據對象間距離的計算有很多種,k-means算法通常採用歐氏距離來計算數據對象間的距離。

2、k-means算法詳解
  k-means算法以距離作爲數據對象間相似性度量的標準,通常採用歐氏距離來計算數據對象間的距離。下面給出歐式距離的計算公式:

dist(xi,xj)=d=1D(xi,dxj,d)2     (1)
其中,D 表示數據對象的屬性個數。
  k-means算法聚類過程中,每次迭代,對應的類簇中心需要重新計算(更新):對應類簇中所有數據對象的均值,即爲更新後該類簇的類簇中心。定義第k 個類簇的類簇中心爲Centerk ,則類簇中心更新方式如下:
Centerk=1|Ck|xiCkxi     (2)
其中,Ck 表示第k 個類簇,|Ck| 表示第k 個類簇中數據對象的個數,這裏的求和是指類簇Ck 中所有元素在每列屬性上的和,因此Centerk 也是一個含有D 個屬性的向量,表示爲Centerk=(Centerk,1,Centerk,2,...,Centerk,D)
  k-means算法需要不斷地迭代來重新劃分類簇,並更新類簇中心,那麼迭代終止的條件是什麼呢?一般情況,有兩種方法來終止迭代:一種方法是設定迭代次數T ,當到達第T 次迭代,則終止迭代,此時所得類簇即爲最終聚類結果;另一種方法是採用誤差平方和準則函數,函數模型如下:
J=k=1KxiCkdist(xi,Centerk)     (3)
其中,K 表示類簇個數。當兩次迭代J 的差值小於某一閾值時,即ΔJ<δ 時,則終止迭代,此時所得類簇即爲最終聚類結果。
  k-means算法思想可描述爲:首先初始化K 個類簇中心;然後計算各個數據對象到聚類中心的距離,把數據對象劃分至距離其最近的聚類中心所在類簇中;接着根據所得類簇,更新類簇中心;然後繼續計算各個數據對象到聚類中心的距離,把數據對象劃分至距離其最近的聚類中心所在類簇中;接着根據所得類簇,繼續更新類簇中心;……一直迭代,直到達到最大迭代次數T ,或者兩次迭代J 的差值小於某一閾值時,迭代終止,得到最終聚類結果。算法詳細流程描述如下:
這裏寫圖片描述

  k-means算法聚類過程示意圖,如下:
這裏寫圖片描述
其中,黑色圓點代表類簇中心,白色圓點代表待聚類數據對象。

3、k-means算法優缺點分析
- 優點:
  算法簡單易實現;
- 缺點:
  需要用戶事先指定類簇個數K
  聚類結果對初始類簇中心的選取較爲敏感;
  容易陷入局部最優;
  只能發現球型類簇;

4、k-means算法改進方法
  初始類簇中心的選取,可以通過k-means++算法進行改進。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章