1. 程式人生 > >kmeans聚類詳解

kmeans聚類詳解

今天看了多元統計分析的聚類分析一章,終於算是對聚類分析有點理解了。
Kmeans聚類是最簡單的快速聚類方法了,目標就是按照給定的K,將所有樣本按照類內儘可能緊湊,類間儘可能鬆散的原則來組織,得到k個簇。
聚類方法:
(1)從n個數據物件中取k個物件作為初始簇中心;
(2)迴圈下述流程(3)到(4),直到每個聚類不再發生變化為止。
(3)根據每個簇中物件的均值(中心物件),計算每個物件與這些物件的距離,並根據最小距離重新對相應物件進行劃分。
(4)重新計算每個(有變化)簇的均值。
——摘自《多元統計分析及R語言建模》王斌會
但是看這個有個疑問,上述提到的每個聚類不再發生變化為什麼就恰好是目標函式最優呢?(平方誤差準則)
在閱讀了博文:

https://blog.csdn.net/taoyanqi8932/article/details/53727841
後有所理解:
kmeans演算法中有兩個關鍵的東西,一個是分配函式或者說是距離度量,也就是說每次依據什麼來劃分;第二個是目標函式,也就是最後要達到的聚類目標是什麼,比如kmeans就是類間差異大,類內相似性大。
但是這還是沒有解釋為什麼迭代完成,也就是中心不再變化,就等價於目標函式最優化的問題。
原因如下:來自上述連結的博文
通過對目標函式的分析,我們發現只要令每次迭代過程中都取均值為質心,就相當於在不斷的使目標函式優化,這樣一來就解釋了前面的問題,當聚類中心不再改變時也就是目標函式最優化了。