Unsupervised Clustering: K-Means

監督式、非監督式學習,最大的不同在於非監督式學習沒有做資料標籤化,也可以說沒有明確給它 target。

概觀

K-Means 算是分群(Clustering)中,相對簡單的一種方法,先決定總共要分出幾群(K),再決定初始的各分群中心(Means),然後依照資料點離分群中心的遠近進行數輪的分群,直到分群結果不再變動為止。

那為什麼要做多輪分群呢? 因為在 K-Means 的分群方法中,Means 其實是會不斷變動的,除了給定的初始分群中心點外,每次分群結束後,各群中心都會被重新計算,其計算方式是取該群所有資料點的平均值作為新的分群中心,當分群中心變化,但該輪分類的各群資料點與上輪保持一致,則停止往下繼續做並完成分群。

計算資料點與分群中心點的距離時,一般常用的方法是歐基里德距離(Euclidean distance)。

下圖範例中,我們決定要分2群(K=2),隨即決定出兩個起始的分群中心點。
在經過第一輪的分群後,Cluster 1 包含 instance1,2、Cluster 2 包含 instance 3,4,5,6,後以此(各點總和平均)計算出 Cluster1、2 的新群心並以此反覆進行數輪的分群直到分群內的點不再更動為止。

(圖片來源: 中央大學資管系 林熙禎教授 電子商務技術課程教材)

經過3輪分群仍無法讓分群內的點不再變動,需要再做更多輪!

(圖片來源: 中央大學資管系 林熙禎教授 電子商務技術課程教材)

分群結果的好壞視各分群的 squared error 總和而定,數值越小代表分群分得越好。


決定 K 值

K 值決定我們最終要分出幾群,也同時影響到各群內的資料相似程度,以及之後計算出的各群 squared error,那要如何決定要分幾群呢?

常見的方法有二 :

  • Elbow method 手肘法

    用程式先預跑出分 K 群時的各群 squared error 之總和,然後繪製出圖表如下,可以發現分4群時,前後的斜率差異是最大的,所以該資料集可以考慮分成4群,會被稱作 Elbow method 主要是因為繪出的圖形跟手肘很類似。

    (圖片來源: 中央大學資管系 林熙禎教授 電子商務技術課程教材)
  • Silhouette 輪廓法

    a(i) 是同群內的點之間距離的平均
    b(i) 是不同群的點平均距離
    s(i) 的值越大越好,表示分得越好

    (圖片來源: 中央大學資管系 林熙禎教授 電子商務技術課程教材)

    Silhouette 跑出來的圖長這樣 :

分享到