機器學習入門筆記系列(10) | K-means 演算法

weixin_34041003發表於2018-10-01

樣本 被分配到的簇的索引{1,2, ..., K}
第 k 簇的聚類中心

一、K-means 執行過程

K-Means 演算法是最流行和廣泛使用的無監督學習演算法,用於自動將資料分組為相干子集。K-Means 演算法屬於聚類演算法

下圖展示 K = 2 時 K-means 演算法執行過程例項。

11455432-15abf09ff2ada97e.png
K-means 聚類過程

用文字總結一下 K=2時, K-means 演算法的執行過程:

  1. 初始化初始化兩個聚類中心;
  2. 簇分配:計算每個樣本到兩個聚類中心的距離,並將樣本分配到離它最近的聚類中心所在的簇中;
  3. 更新聚類中心:計算兩個簇中所有點的平均值,並將兩個簇的聚類中心更新為該平均值;
  4. 重複(2),(3) 操作,直至迭代次數完成或者聚類中心不再改變。

二、K-means 演算法

通過上述的執行過程,K-means 演算法實現如下:

11455432-be7bbcce7037c253.png
K-means 演算法

Tips : 如果出現有一個聚點在歸類完成後,沒有一個樣本點屬於該簇。通常做法是刪除該聚點,此時變成 K-1 means;也可以沒有初始化聚類中心

2.1 代價函式

11455432-0dc59f09ca1b2fe0.png
K-means 代價函式

簡單的來解釋,代價函式 = 每個樣本與所在簇的聚類中心的距離平方的平均值

我們的優化目標就是 。如何實現這優化目標呢?

其實實現 一直貫穿於 K-means 演算法。

  1. 簇分配:我們固定了聚類中心,即固定了 ,將樣本分配到離它最近的聚類中心所在的簇中,這相當於當固定 ,通過改變 來 ;
  2. 更新聚類中心:我們固定了每個樣本所在的簇,即固定了 ,計算每個簇的所有點的平均值並更新為簇的新的聚類中心,即改變了 ,這就實現 。

總結一下,就是:

11455432-224f87b079e3a160.png
K-means 優化目標

Tips: K-means 的代價函式值不可能上升,它應該是不斷下降。

2.2 隨機初始化聚類中心

初始化聚類中心不同,最後形成的簇就會不同。如果初始化聚類中心不好,K-means 達到陷入區域性最優情況,如下圖所示。

11455432-cd6b56b84dfd2244.png

那麼,如何初始化聚類中心呢?這裡有 2 點建議:

  1. ,即劃分的簇的數量 K 應該小於樣本數量 m;
  2. 建議隨機選取樣本中 K 個樣本作為初始化的聚類中心

減小 K-means 陷入區域性最優的解決方案:構建多組初始化聚類中心,分別執行 K-means 演算法,最終選取代價函式值最小的那組。

11455432-a2c37899ca08b646.png
多次隨機初始化聚類中心

實驗證明,當 時,多次隨機初始化方法對演算法有很大的改善;而當 時,多次隨機初始化方法不會對你的演算法有很大的改善。

三、K-means 應用

11455432-0988d836f8ece9ad.png
K-means 應用

除了上述,K-means 還可以運用於市場的劃分等等實際場景中。

總結

11455432-748dd4684733e281.png
K-mean 演算法全過程

參考文獻

  1. 吳恩達機器學習 week8

相關文章