分群演算法 — K-means、Hierarchical Clustering

王昱淮
SWF Lab
Published in
8 min readJan 29, 2023

看完這篇文章,你可以知道⋯⋯

✔️監督式學習與非監督式學習的差異

✔️非監督式學習中的分群演算法 — K-means & Hierarchical Clustering

前言

本文將會介紹機器學習的其中一種方法 — — 分群演算法,並且將會簡單說明監督式學習與非監督式學習的差異,以及分群演算法當中其中兩個演算法。

希望這篇文章讓大家對機器學習的方法能有初淺認識,我目前在這領域也還在學習當中,若未來有學習到更多希望能夠再寫成文章分享給大家,也歡迎大家不吝指教!

Contents

  • 監督式學習與非監督式學習
  • 分群演算法 — K-means Clustering
  • 分群演算法 — Hierarchical Clustering

監督式學習與非監督式學習

機器學習的種類簡單可以分成兩種 — — 監督式學習、非監督式學習,兩者的差異主要在於處理的資料是否已被標籤化,以下將會詳細介紹兩者的差異。(其實還有半監督學習和增強學習,但本文目前暫時不討論)

監督式學習(Supervised Learning)

在監督式學習中,會將經過標籤化的資料集丟入模型訓練。例如一堆未分類的照片,經過人工分成證件照、人像生活照和風景照三類,當把這些分類好的照片丟入模型中時,將會根據原有的標籤和三類照片的特徵(如證件照可能會是純色背景、單一人像;人像生活照可能會是雜亂的背景、多個人像;風景照可能會是只有背景、沒有人像、以物體為主體),來學習要如何分類這三種照片,往後當丟入一張新的照片時,機器便能經過前個資料集的學習來分辨新的照片要如何分類。因此,簡單來說,在監督式學習當中,能透過過去的資料集來為新的資料做準確的預測。

監督式學習

其中,監督式學習又可以再細分成幾種類別, 如分類(Classification)及迴歸(Regression)。常見的模型有 FFNNs(Feed Forward Neural Networks)、CNNs(Convolutional Neural Networks)、RNNs(Recurrent Neural Networks)、Encoder Decoder 等,不過本文介紹的重點在於非監督式學習中的分群,關於更多監督式學習的介紹可參考此文

非監督式學習(Unsupervised Learning)

相對於監督式學習,非監督式學習的模型中,將會給予未經過標籤化的資料,以找到資料間的特徵、相似度等。以上方的照片群為例,所有原始的照片將不會被貼上人像生活照、證件照和風景照的標籤,而是直接丟入模型訓練,模型將透過每張照片的特徵,將這一群照片分組,以讓我們能得知這一些照片有什麼特徵。

非監督ㄕˋ學習

非監督式學習也能再細分成— 分群(Clustering)、關聯(Association)、降維(Dimension Deducting),其中分群的方法包括 K-means Clustering 及 Hierarchical Clustering,將下來也將會聚焦於這兩個演算法,除此之外,非監督式學習常見的模型也還有 AutoEncoderGAN(Generative Adversarial Network)等。

分群演算法 — K-means Clustering

K-means 中的 K,可以想像成我們擁有一個完整的資料集,目標是要將這個資料群分成 K 個 Cluster。其中這幾個 Cluster 內的元素互不重複,且每一個元素都有多個 Features。以上述的照片例子為例,單一照片的 Features 則可能是純色 / 雜亂背景、有無人像等。另外,在 K-means 中所有 Cluster 的聯集就是原本完整的資料集。

其演算法的運作規則如下:

Step1 — 決定要分成的群數(K 群),並將資料隨機分群。

Step2 — 計算每一群的重心(Centroid)*。

Step3 — 將每一個點重新分配到距離自己較近的重心的 Cluster。

Step4 — 重新計算每一群的重心。

接著重新上述的步驟,直到各群及各群的重心不再改變,表示已收斂。

K-means Clustering

不過要注意的是,K-means Clustering 最終收斂的 Cluster,不一定是最佳的分群方式(使各群到其重心的距離平方總和最小*),這與一開始隨機分群的群集有很大的關聯。

  • 重心計算方式:以第 k 群為例。
重心計算方式

其中左式代表第 k 群之重心;右式 Num of Cluster k代表第 k 群內的元素數;右式總和 Sigma 代表第 k 群內的所有元素相加。

  • 最佳化分群 :使各群內元素到其重心的距離平方總和(從第 1 群至第 K 群之總和)最小,其中這邊的距離指的是 N 維空間中的距離,N 代表單一元素內的 Feature 數量。
最佳化分群問題

另外,K-means Clustering 有個經典的例子 — Iris Dataset,Iris 是一類開花植物,而其又有上百種品種。在這個 Dataset 中,有包含三種不同種類 Iris 的資料,每個資料都含有四個 Features:花萼長度、寬度及花瓣長度、寬度,可透過 K-means Clustering 將依這些 Features 進行分成三群。

分群演算法 — Hierarchical Clustering

另一種演算法 Hierarchical Clustering 則會一直將鄰近的兩筆資料分在同一個 Cluster,分群到最後只會剩下一個包含所有資料的 Cluster。

其演算法的運作規則如下:

Step1 — 將每一筆資料當作一個 Cluster,選擇最鄰近的兩個 Cluster 再組成一個新的 Cluster。

Step2 — 計算兩個 Cluster 間的距離,可使用 Average Linkage 或 Complete Linkage 的方式計算距離*,較鄰近的兩個 Cluster 再組成一個 Cluster。

接著重新上述的步驟,直到最後會剩下一個包含所有資料的 Cluster。

Hierarchical Clustering

Cluster 間距離計算方式

  • Average Linkage:計算兩個 Cluster 間每一筆資料之間的平均距離,為 N 維空間中的距離,N 代表單一資料中的 Features 數量。
Average Linkage 距離計算公式

其中右式第一項的分母為兩個 Cluster 之元素數相乘;右式總和 Sigma 代表 Cluster 1 和 Cluster 2 內每一筆資料之間之距離平方和。

  • Complete Linkage:以兩個 Cluster 間最遠之距離作為兩個 Cluster 之距,為 N 維空間中的距離,N 代表單一資料中的 Features 數量。
Complete Linkage 距離計算公式

結語

以上的內容就是關於機器學習中分群的演算法介紹!分群演算法其實是我在台大 111–1 修經濟系的「資料科學與社會研究」課程才接觸到的,在課堂中還有教主成分分析、決策樹等,如果未來還有機會的話再寫成文章分享!

感謝你的觀看,希望有得到你預期的收穫!對於文章內容有任何疑問也歡迎留言告訴我!

最後,也非常感謝 QQAIExcitedMailUN SWEET 幫我 Review 這篇文章!

Reference

--

--