问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

【混合模型】一文搞懂混合模型、高斯混合模型(GMM)、EM算法

创作时间:
作者:
@小白创作中心

【混合模型】一文搞懂混合模型、高斯混合模型(GMM)、EM算法

引用
CSDN
1.
https://blog.csdn.net/m0_54713489/article/details/143271365

混合模型是一种强大的统计建模工具,广泛应用于聚类分析、密度估计等领域。本文将详细介绍混合模型的基本概念、高斯混合模型(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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号