【混合模型】一文搞懂混合模型、高斯混合模型(GMM)、EM算法
【混合模型】一文搞懂混合模型、高斯混合模型(GMM)、EM算法
混合模型是一种强大的统计建模工具,广泛应用于聚类分析、密度估计等领域。本文将详细介绍混合模型的基本概念、高斯混合模型(GMM)的参数估计方法,以及著名的EM算法。通过本文的学习,读者将能够理解混合模型的工作原理,并掌握使用EM算法进行参数估计的具体步骤。
1. 聚类问题(Clustering Problem)
聚类是将一组对象根据它们的相似性进行分组,使得同一组内的对象相比于其他组的对象更加相似。
聚类是一种无监督学习任务,即在没有事先给定类别标签的情况下,根据相似性对对象进行分组。这与分类(有监督学习)问题不同,分类是基于已知的类别标签进行分类的。
聚类问题分为硬聚类(hard clustering)和软聚类(soft clustering),前者将每个对象明确地进行划分,如K-means算法,而后者每个对象可以以某种概率或权重属于多个簇。现实中,研究者可能更感兴趣的是一些具有连续性的聚类分配(软聚类),因为硬聚类的离散结果可能不符合实际需求。这就需要构建一种概率模型来处理具有多个簇的复杂数据。
2. 混合模型(Mixture Model)
混合模型不止使用一个单一参数模型,而是包含K个参数模型的概率密度函数。p ( y_i | \pi, \theta ) = \sum_{j=1}^K \pi_j p ( y_i | \theta_j )。每一个样本y_i都从这样一个加权的概率分布中抽样而来,所以y的边际似然函数为:\prod_{i=1}^n p ( y_i | \pi, \theta ) = \prod_{i=1}^n { \sum_{j=1}^K \pi_j p ( y_i | \theta_j ) }。
【举个例子】:下图为一元混合高斯模型示意图:
- 模型的概率密度函数(pdf):p ( y_i | \pi, \theta )是K个独立的参数模型的加权组合。其中,{ (\pi_j, \theta_j), j=1,\cdots,K }分别是K个模型的参数
- 混合模型引入隐变量z来表示数据属于哪一个聚类。
3. 混合模型的生成过程
- Step 1:我们先生成分类隐变量z \in {1,\cdots,K},并且Pr ( z=j ) = \pi_j
- Step 2:然后我们生成y | z \sim p ( y | \theta_z )。于是我们可以得到y, z的联合分布:p ( y, z ) = p ( y | z ) Pr ( z )于是y的边际似然函数:p ( y ) = \sum_{j=1}^K p ( y, z=j ) = \sum_{j=1}^K p ( y | z=j ) Pr ( z=j )
- Pr ( z=j ) = \pi_j表示在没有观察数据点时,数据点属于簇j的先验概率
- 观察到数据点y后,我们希望通过贝叶斯定理来计算数据点属于簇j的后验概率:Pr ( z=j | y ) = \frac{p ( y | z=j ) Pr ( z=j )}{p ( y )}=\frac{p ( y | z=j ) Pr ( z=j )}{\sum_{l=1}^K p ( y | z=l ) Pr ( z=l )}=\frac{p ( y | z=j ) \pi_j}{\sum_{l=1}^K p ( y | z=l ) \pi_l}
4. 高斯混合模型(GMM)
4.1 已知参数\pi, \mu, \sigma^2更新z
- p ( y | \pi, \mu, \sigma^2 ) = \sum_{j=1}^K \pi_j \mathcal{N} ( y | \mu_j, \sigma_j^2 ):边际似然,其中\mathcal{N} ( y | \mu_j, \sigma_j^2 ) = \frac{1}{\sqrt{2\pi\sigma^2}}\exp{-\frac{(y-\mu)^2}{2\sigma^2}}
- Pr ( z=j ) = \pi_j:先验,从第j个混合组件中抽样的概率
- p ( y | z=j ) = \mathcal{N} ( y | \mu_j, \sigma_j^2 ):条件似然
- \Rightarrow p ( z=j | y ) = \frac{p ( y | z=j ) Pr ( z=j )}{p ( y )}
4.2 已知z更新参数\pi, \mu, \sigma^2
- 现在我们有观测数据y = { y_1,\cdots,y_n },似然函数L ( \pi, \mu, \sigma^2 | y ) = \prod_{i=1}^n p ( y | \pi, \mu, \sigma^2 ) = \prod_{i=1}^n { \sum_{j=1}^K \pi_j \mathcal{N} ( y | \mu_j, \sigma_j^2 ) }。注意到,似然函数是一个求和累乘的形式,我们很难通过最大似然估计推导出\hat{\pi}{MLE}, \hat{\mu}{MLE}, \hat{\sigma}_{MLE}
- 假设我们知道每一个观测变量y_i的类别z_i,( y_i, z_i )的联合分布有如下形式:p ( y_i, z_i | \pi, \mu, \sigma^2 ) = Pr ( z_i ) p ( y_i | z_i ) = \pi_{z_i} \mathcal{N} ( y_i | \mu_{z_i}, \sigma_{z_i}^2 )
- 联合对数似然:
\begin{aligned}
\log p ( y, z ) &= \sum_{i=1}^n \log p ( y_i, z_i ) \
&= \sum_{i=1}^n { \log \pi_{z_i} + \log \mathcal{N} ( y_i | \mu_{z_i}, \sigma_{z_i}^2 ) } \
&= \sum_{i=1}^n { \log \pi_{z_i} - \frac{(y_i-\mu_{z_i})^2}{2\sigma_{z_i}^2} - \frac{1}{2} \log (2\pi\sigma_{z_i}^2) }
\end{aligned} - 记T = [\tau_{ij}]{i=1,j=1}^{n,K} \in \mathbb{R}^{n \times K},\tau{ij}表示第i个观测数据属于第j个高斯组件的概率,定义指示函数:
I ( z_i = j ) = \begin{cases}
1, \quad \arg \max\limits_{l} z_{il} = j \
0, \quad \arg \max\limits_{l} z_{il} \neq j
\end{cases} - 则:
\begin{aligned}
\log p ( y, z ) &= \sum_{i=1}^n \sum_{j=1}^K I ( z_i = j ) \cdot ( \log \pi_j + \log \mathcal{N} ( y_i | \mu_j, \sigma_j^2 ) )
\end{aligned} - 通过最大联合对数似然,我们可以得到:
\begin{aligned}
\pi_j^* &= \frac{\sum_{i=1}^n I ( z_i = j )}{n} \
\mu_j^* &= \frac{\sum_{i=1}^n y_i \cdot I ( z_i = j )}{\sum_{i=1}^n I ( z_i = j )} \
\sigma_j^{2*} &= \frac{\sum_{i=1}^n ( y_i - \mu_j^* )^2 \cdot I ( z_i = j )}{\sum_{i=1}^n I ( z_i = j )}
\end{aligned} - \pi_j^*:n个观测数据中,属于第j个高斯组件的样本个数
- \mu_j^*:第j个高斯组件的样本均值
- \sigma_j^{2*}:第j个高斯组件的样本方差
4.3 EM算法
由4.1和4.2我们知道,如果我们知道混合高斯模型的参数,我们能够使用贝叶斯定理轻松地进行软聚类;如果我们提前知道每一个样本的类别标签z,我们能够轻松地估计混合高斯模型的参数\pi, \mu, \sigma^2。但问题是,我们啥也不知道!然而,我们也许可以构建一个迭代算法,来反复进行4.1和4.2中的过程知道算法收敛。这就是大名鼎鼎的Expectation-Maximization算法,简称EM算法。
- EM算法:
- 初始化参数(\pi, \mu, \sigma^2)
- E-step:计算软聚类\tau_{ij} = \Pr ( z_i = j | \pi, \mu, \sigma^2 ) = \frac{\pi_j \mathcal{N} ( y_i | \mu_j, \sigma_j^2 )}{\sum_{l=1}^K \pi_l \mathcal{N} ( y_i | \mu_l, \sigma_l^2 )}
- M-step:更新GMM参数:
- \pi_j^{(new)} = \frac{\sum_{i=1}^n \tau_{ij}}{n}
- \mu_j^{(new)} = \frac{\sum_{i=1}^n y_i \cdot \tau_{ij}}{\sum_{i=1}^n \tau_{ij}}
- (\sigma_j^2)^{(new)} = \frac{\sum_{i=1}^n \tau_{ij} ( y_i - \mu_j^{(new)} )^2}{\sum_{i=1}^n \tau_{ij}}
- 重复E-step和M-step直到收敛。
EM算法是否收敛到MLE的证明(略)。
本文原文来自CSDN