高斯混合模型的EM算法数学原理
时间: 2025-04-18 08:50:02 AIGC 浏览: 33 评论: 6
### 高斯混合模型中EM算法的数学原理
#### 定义与背景
高斯混合模型(Gaussian Mixture Model, GMM)是一种概率模型,用于表示通常由多个子群体组成的总体数据分布。每个子群可以用一个单独的多维高斯分布来描述[^1]。
对于给定的数据集 \( \{x_1,x_2,\ldots,x_N\} \),假设这些观测来自于K个不同的高斯分布之一,则可以定义如下:
\[ p(x|\theta)=\sum_{k=1}^{K}\pi_kN(x|\mu_k,\Sigma_k)\]
其中 \( N(x|\mu_k,\Sigma_k) \) 表示第 k 个成分的概率密度函数;\( \pi_k \) 是该成分的比例系数满足 \( \sum_{k=1}^K{\pi_k}=1 \); 而参数集合 \( \theta=\{\pi_k,\mu_k,\Sigma_k|k=1,...,K\} \).
#### EM算法概述
当面对含有隐变量的问题时,直接最大化似然变得困难。此时可采用期望最大值(Expectation-Maximization, EM)迭代方法寻找局部最优解。此过程分为两个阶段:E步(E-step)计算当前估计下隐藏状态的条件期望;M步(M-step),基于上一步得到的结果更新模型参数直至收敛[^2].
##### E 步骤 (Expectation)
在E步骤中,目标是在固定其他所有未知参数的情况下找到关于潜在类别归属 z 的后验概率 q(z|x):
\[ Q(\Theta ,\Theta ^{(t)})=\int _{{Z}}q(Z)p(X,Z|\Theta )dZ-\int _{{Z}}q(Z)\log(q(Z))dZ \]
这里 X={xi|i∈[n]}代表观察到的数据点集而 Z={zi|i∈[n]}对应于未被观测到的指示向量 zi=(z_i1,…,zik)^T ,它表明 xi 属于哪个簇 ci 。为了简化表达式并使后续优化更容易处理,在实际操作过程中往往会选择让 q 成为完全因子化的形式即 qi(zi)=P(ci|xi ;Θ(t))[^3].
具体来说就是计算每个样本归属于各个组件的可能性:
\[ r_{nk}=\frac {\pi _{k}{\mathcal {N}}({\textbf{x}}_{n};{\boldsymbol {\mu }}_{k},{\boldsymbol {\Sigma }}_{k})}{\sum _{j=1}^{K}\pi _{j}{\mathcal {N}}({\textbf{x}}_{n};{\boldsymbol {\mu }}_{j},{\boldsymbol {\Sigma }}_{j})},\quad n=1,\dots,N;\ k=1,\dots,K.\]
这实际上是对数似然函数 L 对应于当前猜测 Θ^(t) 下的一个下界 B(Θ | Θ^(t)), 并且通过调整新参数使得这个界限尽可能大从而逼近真实的对数似然值 l(Θ ).
##### M 步骤 (Maximization)
一旦有了上述的责任分配 ri,k 后就可以重新评估新的参数设置了。这一部分涉及到求解下列最优化问题:
\[ (\hat {{\boldsymbol {\mu }}}_{k},\hat {{\boldsymbol {\Sigma }}}_{k},\hat {\pi }_{k})=\arg \max _{{{\boldsymbol {\mu }}_{k},{\boldsymbol {\Sigma }}_{k},\pi _{k}}}Q(\Theta |\Theta ^{(t)}).\]
最终获得更新后的公式分别为:
\[ \begin{aligned}
&\hat {\pi}_{k}=\frac {1}{N}\sum _{i=1}^{N}r_{ik}\\
&\hat {{\boldsymbol {\mu }}}_{k}=\frac {\sum _{i=1}^{N}r_{ik}{\textbf{x}}_{i}}{\sum _{i=1}^{N}r_{ik}}\\
&\hat {{\boldsymbol {\Sigma }}}_{k}=\frac {\sum _{i=1}^{N}r_{ik}({\textbf{x}}_{i}-\hat {{\boldsymbol {\mu }}}_{k})({\textbf{x}}_{i}-\hat {{\boldsymbol {\mu }}}_{k})^{T}}{\sum _{i=1}^{N}r_{ik}}
\end{aligned}\][^3].
```python
import numpy as np
from scipy.stats import multivariate_normal
def em_algorithm(data, K, max_iter=100):
"""
实现简单的二维空间内的高斯混合模型EM算法
参数:
data : array-like, shape(N_samples, D_features)
输入数据矩阵
K : int
组件数量
max_iter : int
迭代次数上限,默认为100次
返回:
pi : list of float
每个组分权重列表
mu : ndarray, shape(K,D)
中心位置数组
sigma : ndarray, shape(K,D,D)
协方差矩阵三维张量
"""
# 初始化参数...
for iteration in range(max_iter):
# Expectation Step ...
# Maximization Step ...
return pi,mu,sigma
```
阅读全文
相关推荐




















评论

Crazyanti
2025.06.29
该文档不仅对高斯混合模型进行了理论阐述,还提供了Python实现的代码示例,实用性较强。

茶啊冲的小男孩
2025.06.13
文档结合定义和背景,通过严谨的数学表达式,清晰地展示了高斯混合模型的参数推导过程。

是因为太久
2025.05.19
对于已经熟悉EM算法的读者来说,文档中对每个步骤的数学细节提供了充足的解释,有助于深化理解。

陈后主
2025.05.13
文档在介绍高斯混合模型时,给出了具体的数学表达式和算法描述,适合初学者学习和理解。🌋

首席程序IT
2025.04.23
EM算法部分内容涉及较为复杂的数学运算,但作者通过实例代码和注释,使得理解变得相对容易。

有只风车子
2025.04.05
该文档详细解释了高斯混合模型的EM算法数学原理,对EM算法的两个步骤E步和M步进行了深入解析。