<center>
<img src = "https://i.imgur.com/NDecO6v.jpg">
</center>
## Prerequisite
高斯混合模型(Gaussian Mixture Model,GMM)是一種統計模型,用來對數據進行建模,特別是多模態(多個分佈)數據。
在理解高斯混合模型之前,先為機率分佈和機率密度函數做簡介:
### Probability Distribution
機率分布(Probability Distribution)是一個統計概念,用來描述一個隨機變數(Random Variable)可能取得每個可能值的機率。機率分布通常用一個函數來表示,該函數將每個可能的隨機變數值映射到其對應的機率。
機率分布可以分為兩種主要類型:**離散機率分布**和**連續機率分布**。
1. 離散機率分布(Discrete Probability Distribution):
用於描述隨機變數取離散值(有限或可數無限)的情況。一個離散機率分布通常由機率質量函數(Probability Mass Function,PMF)表示,PMF給出每個可能值的機率。
例如,一個典型的離散機率分布是二項分布(Binomial Distribution),其PMF可以表示為:
$$
P(X = x) = \binom{n}{x} p^x (1-p)^{n-x}
$$
其中,$X$ 是隨機變數,$x$ 是可能的取值,$n$ 是試驗的次數,$p$ 是每次試驗成功的機率。
2. 連續機率分布(Continuous Probability Distribution):
用於描述隨機變數取連續值的情況。一個連續機率分布通常由機率密度函數(Probability Density Function,PDF)表示,PDF表示在某一區間內取值的機率密度。
例如,正態分布(Normal Distribution)是一個典型的連續機率分布,其PDF可以表示為:
$$
f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x - \mu)^2}{2\sigma^2}}
$$
其中,$x$ 是隨機變數的值,$\mu$ 是平均值,$\sigma$ 是標準差。
### Probability Density Function (PDF)
機率密度函數(Probability Density Function,PDF)是在統計和機率論中用來描述連續型隨機變數的機率分佈的函數。它表示了隨機變數落在某個特定區間內的機率密度,而不是確定的機率值。PDF通常用 $f(x)$ 表示,其中 $x$ 是隨機變數的值。PDF滿足以下兩個性質:
1. 非負性:對於所有的 $x$,PDF值都必須是非負的,即$f(x) >= 0$。
2. 正規化:PDF在整個隨機變數的範圍內的積分等於$1$,即$\int f(x) dx = 1$,這表示了機率的總和為$1$。
$$
f(x) \geq 0 \quad \text{for all } x
$$
$$
\int_{-\infty}^{\infty} f(x) \, dx = 1
$$
PDF的具體形式取決於特定的機率分佈。一些常見的連續機率分佈,如正態分佈、均勻分佈和指數分佈,都有各自的PDF表達式。以正態分佈為例,其PDF表達式如下:
$$
f(x) = \frac{1}{\sigma \sqrt{2\pi}} e^{-\frac{(x - \mu)^2}{2\sigma^2}}
$$
其中,$\mu$是平均值,$\sigma$是標準差,它們是正態分佈的兩個參數。
PDF的主要作用是描述連續型隨機變數在不同值之間的機率密度,這對於許多統計分析和模型建構的工作非常重要。通過對PDF進行積分,可以計算出在某個區間內的機率,進而進行各種統計推斷和預測。
### K-means
1. 隨機初始化參數 $\theta = \{ \mu_1, \dots, \mu_c \}$ 代表 cluster 中心得初始位置
2. 重複以下步驟直到收斂
- 使每一個點 $x_i$ 尋找歸屬的 $c_i$,例如:$c_i = \arg \max_c \| x_i - \mu_c \|^2$
- 更新 cluster 中心:$\mu_c = \frac{\sum_{i:c_i=c}x_i}{\# \ of \{ i:c_i = c \}}$
## Goal
Gaussian Mixture Model 的目標是通過估計每個高斯分佈的平均值和標準差以及它們的權重,來擬合數據,用於聚類和密度估計等應用。
## Background
以下是 Gaussian Mixture Model 的演算法
1. 隨機初始化各高斯分佈的函數 $\theta = \{ \mu_1, \dots, \mu_c, \sigma_1, \sigma_c, \pi_1, \dots, \pi_c \}$
2. 重複以下步驟直到收斂
- 為每一個點 $x_i$ 計算每個類別 $t_i$ 的後驗機率 $p(t_i \mid x_i, \theta)$
- 更新各個高斯分佈參數
$$
\mu_c = \frac{\sum_i p(t_i = c \mid x_i, \theta)x_i}{\sum_i p (t_i = c \mid x_i, \theta)}
$$
$$
\sigma_c = \frac{\sum_i p(t_i = c \mid x_i, \theta)(x_i - \mu_c)^2}{\sum_i p (t_i = c \mid x_i, \theta)}
$$
$$
\pi_c = \frac{\sum_i p(t_i = c \mid x_i, \theta)}{\# \ of \ datapoints}
$$
透過比較 K-means 和 GMM,我們可以發現兩者演算法皆是依照 EM Algorithm 去規劃實做的
### Expectation-Maximization (EM) Algorithm
Expectation-Maximization (EM) Algorithm 被用於尋找,依賴於不可觀察的隱性變量的機率模型中,參數的最大似然估計。
最大期望算法經過兩個步驟交替進行計算。
第一步是**計算期望(E)**,利用對隱藏變量的現有估計值,計算其最大似然估計值
第二步是**最大化(M**),最大化在E步上求得的最大似然值來計算參數的值
M步上找到的參數估計值被用於下一個E步計算中,這個過程不斷交替進行
### Clustering
在這裡,我們可以知道 Gaussian Mixture Model 屬於**聚類分析**的一員。
因為 GMM 是一種生成模型,它假設數據是由多個高斯分佈組成的混合體,每個高斯分佈代表一個聚類。
因此,GMM 可以用來對數據進行聚類分析,將數據點分為不同的組或簇。
### Density Estimation
GMM 也是一種 Density Estimation,它可以用來生成與原始數據分佈相似的新數據樣本。
如下圖所示,藍色為原始數據分佈,而線條部份就是模擬原始數據的 Density Estimation
![](https://hackmd.io/_uploads/BJBNUvhCn.png)
## Implementation
[GMM From Scratch](https://github.com/jacksonchen1998/2022-NYCU-ML/blob/main/hw3_311511052/hw3_311511052.ipynb)
## From Scratch
## More example
[Mall Customer Segmentation Data](https://www.kaggle.com/datasets/vjchoudhary7/customer-segmentation-tutorial-in-python)
## Reference
歡迎更仔細閱讀以下相關內容以了解本篇知識
- [高斯混合模型(Gaussian Mixture Model)和 K-Means 之间有什么区别?](https://www.zhihu.com/question/57808356)
- [最大期望算法](https://zh.wikipedia.org/zh-tw/%E6%9C%80%E5%A4%A7%E6%9C%9F%E6%9C%9B%E7%AE%97%E6%B3%95)
- [A Gentle Introduction to Probability Density Estimation](https://machinelearningmastery.com/probability-density-estimation/)