<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/)