數據挖掘十大經典算法(2) The k-means algorithm

k-means algorithm算法是一個聚類算法,把n的對象根據他們的屬性分爲k個分割,k < n。它與處理混合正態分佈的最大期望算法很相似,因爲他們都試圖找到數據中自然聚類的中心。它假設對象屬性來自於空間向量,並且目標是使各個羣組內部的均 方誤差總和最小。

  假設有k個羣組Si, i=1,2,...,k。μi是羣組Si內所有元素xj的重心,或叫中心點。
  k平均聚類發明於1956年, 該算法最常見的形式是採用被稱爲勞埃德算法(Lloyd algorithm)的迭代式改進探索法。勞埃德算法首先把輸入點分成k個初始化分組,可以是隨機的或者使用一些啓發式數據。然後計算每組的中心點,根據 中心點的位置把對象分到離它最近的中心,重新確定分組。繼續重複不斷地計算中心並重新分組,直到收斂,即對象不再改變分組(中心點位置不再改變)。
  勞埃德算法和k平均通常是緊密聯繫的,但是在實際應用中,勞埃德算法是解決k平均問題的啓發式法則,對於某些起始點和重心的組合,勞埃德算法可能實際上收斂於錯誤的結果。(上面函數中存在的不同的最優解)
  雖然存在變異,但是勞埃德算法仍舊保持流行,因爲它在實際中收斂非常快。實際上,觀察發現迭代次數遠遠少於點的數量。然而最近,David Arthur和Sergei Vassilvitskii提出存在特定的點集使得k平均算法花費超多項式時間達到收斂。
  近似的k平均算法已經被設計用於原始數據子集的計算。
  從算法的表現上來說,它並不保證一定得到全局最優解,最終解的質量很大程度上取決於初始化的分組。由於該算法的速度很快,因此常用的一種方法是多次運行k平均算法,選擇最優解。
  k平均算法的一個缺點是,分組的數目k是一個輸入參數,不合適的k可能返回較差的結果。另外,算法還假設均方誤差是計算羣組分散度的最佳參數。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章