賈維斯的智慧工坊

  • Home
  • About
  • Note
  • Project
  • Experience
  • Service
  • Sitemap


MY | NOTES

  1. 首頁
  2. >
  3. 筆記
  4. >
  5. 演算法

[Algorithm] Compare K-means and GMM clustering

比較K-平均算法和高斯混合模型在分群上的差異
Jan, 2018
K-means和GMM都是屬於非監督式學習的分群演算法
假設大家都已經了解他們的理論
故我這邊將直接以MATLAB作為實例,進行示範
使用的函式都是內建的語法

會有此文章也是因為,我一直覺得他們很像
其實是要根據資料分布型態,決定使用哪種演算法

1、簡述 K-means
2、簡述 GMM
3、比較分群效果
4、完整程式碼

1、簡述 K-means

data: 輸入是二維資料,有三千筆 (3000x2)
後面接的數字2代表想要分幾群

[idx, mid] = kmeans(data, 2);
idx (3000x1): 這三千筆資料,分別所屬群1或群2
mid (2x2): 這兩個群的中心座標

2、簡述 GMM

GMM也就是高斯混合模型(Gaussian mixture model),建模的方法如下: data: 輸入是二維資料,有三千筆 (3000x2)
後面接的數字2代表想要分幾群
要將資料透過模型分類,要使用cluster這個函示

GMModel = fitgmdist(data, 2);
idx = cluster(GMModel, data);
GMModel: 模型資訊,最重要的是mu和Sigma
idx (3000x1): 這三千筆資料,分別所屬群1或群2

3、比較分群效果

我們都知道 K-means 是以歐式距離作為決定標準
在二維空間中只要離該群中點最近就認定為該群

GMM 則是藉由統計後,計算機率分布
得到中心點和sigma作為模型資訊
在一維空間中就是高斯分佈的鐘型
二維空間中會出現類似陀圓形的樣子

下圖是利用MATLAB模擬的情況
若是使用 K-means ,就像楚河漢界、各自畫線分地
但是 GMM 就能以機率分布的方式表現
在三群時,交錯的資料點都能代表不同群



所以根據資料真實分布情形,決定要用什麼樣的分群演算法
不一定每次都是 GMM 會比較好

4、完整程式碼



Reference

[1] MATLAB - fitgmdist
[2] Labelling new data using trained Gaussian Mixture Model
[3] Understanding concept of Gaussian Mixture Models

← Back to note