K-meas 算法概述
隨機生成K個點,稱爲聚類中心。K-means算法實際上是一個迭代算法,他有兩步動作。在算法的最開始,隨機初始化K個聚類中心,座標位置分別爲。第一步是簇分配,第二步是移動聚類中心。遍歷圖中的每一個點,判斷點跟哪個聚類中心的距離更近,進而劃分到這個聚類中心名下,並將聚類中心的下標賦給對應樣本點的,這個步驟其實也是代價函數的最小化過程。然後對所有的樣本點向量求平均值(忽略)將聚類中心移動到同類點的均值處。重複以上過程,直到各個聚類中心已經不再移動了。如果有一個沒有點的聚類中心,則一般做法是移除之。如果仍需保留K個簇,則可以重新隨機初始化這一沒有點的聚類中心。
K平均算法可以將一堆數據分類爲K組,這類似於市場劃分,可以應用到產品型號生產中去。
K-meas 算法代價函數
注意,是代表的簇的聚類中心所在的座標位置。K平均算法是根據代價函數找到使得其最小的c和u。這個代價函數的每次變動也叫失真。J也稱爲失真函數。第一步是u不變,找到使得失真函數最小的c。第二部c不變,找到使得失真函數最小的u。
避免局部最優
在算法的一開始,我們需要隨機初始化聚類中心的位置。
最好的辦法是從訓練樣本中隨機挑選K個點,作爲u1...uk。
然而,K平均算法可能收斂到不同的結果,這取決於初始化時聚類狀態。我們可以嘗試多次隨機初始化,運行K算法,計算畸變函數。最後我們選取畸變值最小,也就是代價最小的。
當K較小,即約爲2-10時,多次隨機初始化效果較好。否則可能雖然有改善,但第一次的值已經相對不錯,後面的改善較小。
K值的選擇
- “肘部”原則。
- 通過使用價值人工指定。