K-Means演算法(思想)
K-Means演算法的思想:
第一步:尋找最近的中心點
在給定的資料集上隨機選取K(K已知)個點(向量)作為資料集上的K箇中心(也就代表K個類別),然後依次遍歷每一條資料,分別計算其與K箇中心的距離,選擇與之距離最近的點作為該資料所屬的類別。這樣一次遍歷完之後,資料集中的所有點都被劃入了其應該所屬的類別裡面(儘管有劃錯的)。
注意:初始中心點的選擇,會影響到最終的分類結果,即可能不會收斂
第二步:重新計算中心
對於每一個類別來說,裡面都有若干個點。由於之前的中心點事隨機選取的,所以可定有不合理的中心點,於是我們就要重新計算中心點。然後再重複進行第一步的操作。
經過多次迭代前面兩個步驟之後,最終的總代價將會收斂到一個最小值。此時的得到的聚類結果通常也就是最好的。
詳細步驟:
現有如下資料集,欲將其分為3類,即K=3:
1.尋找最近的中心點
先隨機取3個點
比如現在有一個點
這樣依次遍歷完所有的點,將其劃入對應的類別中。
2.重新計算中心點
上面也說到,初始化的中心點(如下圖中的3個叉)肯定不會是最佳的點,所以要對其重新多次計算,直到代價值收斂。
如上圖所示,資料集對應的被聚類成了三個部分(三種顏色標註的),但顯然很不好。所以就要在這基礎上重新計算中心點。
比如現在
3.迭代
反覆迭代以上兩步,使代價函式收斂。
從上圖可以看出,大概迭代到底6次後,中心點也就沒有再發生變化了。也就是說此時代價函式已經收斂了。代價值為所有點,到其對應中心點的距離之和。
其中:
例項,戳此處