基于泊松混合模型的EM算法参数估计过程
题目描述
我们考虑一个泊松混合模型(Mixture of Poisson Models),其中观测数据 \(x_1, x_2, ..., x_N\) 由 \(K\) 个不同的泊松分布混合生成。每个泊松分布有自己的强度参数 \(\lambda_k\)(\(k=1,...,K\)),混合权重为 \(\pi_k\)(满足 \(\sum_{k=1}^K \pi_k = 1\) 且 \(\pi_k \ge 0\))。目标是:给定观测数据,估计所有 \(\lambda_k\) 和 \(\pi_k\)。
1. 模型形式化
设隐变量 \(z_i \in \{1,...,K\}\) 表示第 \(i\) 个样本来自的混合成分。
每个成分的概率分布为:
\[P(x_i | z_i = k) = \frac{\lambda_k^{x_i} e^{-\lambda_k}}{x_i!} \]
混合权重为:
\[P(z_i = k) = \pi_k \]
观测数据的完全似然(加入隐变量)为:
\[P(x_i, z_i | \lambda, \pi) = \pi_{z_i} \cdot \frac{\lambda_{z_i}^{x_i} e^{-\lambda_{z_i}}}{x_i!} \]
观测似然(边际化隐变量)为:
\[P(x_i | \lambda, \pi) = \sum_{k=1}^K \pi_k \cdot \frac{\lambda_k^{x_i} e^{-\lambda_k}}{x_i!} \]
目标:最大化对数观测似然
\[\mathcal{L}(\lambda, \pi) = \sum_{i=1}^N \log \left( \sum_{k=1}^K \pi_k \cdot \frac{\lambda_k^{x_i} e^{-\lambda_k}}{x_i!} \right) \]
由于对数内部有求和,直接优化困难,故采用EM算法。
2. EM算法框架回顾
EM算法通过引入隐变量分布,迭代执行:
- E步:计算隐变量的后验分布 \(Q(z_i) = P(z_i | x_i, \lambda^{old}, \pi^{old})\)。
- M步:基于 \(Q(z_i)\) 更新参数 \(\lambda, \pi\) 以最大化期望完全对数似然。
3. E步:计算后验概率
定义响应度(responsibility)为:
\[\gamma_{ik} = P(z_i = k | x_i, \lambda, \pi) = \frac{\pi_k \cdot \frac{\lambda_k^{x_i} e^{-\lambda_k}}{x_i!}}{\sum_{j=1}^K \pi_j \cdot \frac{\lambda_j^{x_i} e^{-\lambda_j}}{x_i!}} \]
由于 \(x_i!\) 在分母和分子中都出现,可以约去,简化为:
\[\gamma_{ik} = \frac{\pi_k \cdot \lambda_k^{x_i} e^{-\lambda_k}}{\sum_{j=1}^K \pi_j \cdot \lambda_j^{x_i} e^{-\lambda_j}} \]
E步即用当前参数 \(\lambda_k^{old}, \pi_k^{old}\) 计算所有 \(\gamma_{ik}\)。
4. M步:更新参数
我们需要最大化期望完全对数似然:
\[\mathbb{E}_{z \sim Q}[\log P(X, Z | \lambda, \pi)] = \sum_{i=1}^N \sum_{k=1}^K \gamma_{ik} \left[ \log \pi_k + x_i \log \lambda_k - \lambda_k - \log(x_i!) \right] \]
其中 \(\log(x_i!)\) 是常数,对优化无影响。
更新参数时,分别对 \(\pi_k\) 和 \(\lambda_k\) 优化:
(1) 更新混合权重 \(\pi_k\)
约束:\(\sum_{k=1}^K \pi_k = 1\)。引入拉格朗日乘子 \(\beta\):
\[\mathcal{L}_\pi = \sum_{i=1}^N \sum_{k=1}^K \gamma_{ik} \log \pi_k + \beta \left( 1 - \sum_{k=1}^K \pi_k \right) \]
对 \(\pi_k\) 求偏导并令为零:
\[\frac{\partial \mathcal{L}_\pi}{\partial \pi_k} = \frac{\sum_{i=1}^N \gamma_{ik}}{\pi_k} - \beta = 0 \quad \Rightarrow \quad \pi_k = \frac{\sum_{i=1}^N \gamma_{ik}}{\beta} \]
代入约束 \(\sum_k \pi_k = 1\):
\[\sum_{k=1}^K \frac{\sum_{i=1}^N \gamma_{ik}}{\beta} = 1 \quad \Rightarrow \quad \beta = \sum_{k=1}^K \sum_{i=1}^N \gamma_{ik} = N \]
因此:
\[\pi_k^{new} = \frac{1}{N} \sum_{i=1}^N \gamma_{ik} \]
(2) 更新强度参数 \(\lambda_k\)
从期望完全对数似然中提取与 \(\lambda_k\) 相关的项:
\[\sum_{i=1}^N \gamma_{ik} \left( x_i \log \lambda_k - \lambda_k \right) \]
对 \(\lambda_k\) 求导并令为零:
\[\frac{\partial}{\partial \lambda_k} = \sum_{i=1}^N \gamma_{ik} \left( \frac{x_i}{\lambda_k} - 1 \right) = 0 \]
\[ \Rightarrow \frac{\sum_{i=1}^N \gamma_{ik} x_i}{\lambda_k} = \sum_{i=1}^N \gamma_{ik} \]
\[ \Rightarrow \lambda_k^{new} = \frac{\sum_{i=1}^N \gamma_{ik} x_i}{\sum_{i=1}^N \gamma_{ik}} \]
5. 算法迭代步骤总结
- 初始化:随机或启发式设置 \(\lambda_k^{(0)} > 0\) 和 \(\pi_k^{(0)} > 0\)(满足和为1)。
- E步:用当前参数计算响应度:
\[ \gamma_{ik} = \frac{\pi_k \lambda_k^{x_i} e^{-\lambda_k}}{\sum_{j=1}^K \pi_j \lambda_j^{x_i} e^{-\lambda_j}} \]
- M步:更新参数:
\[ \pi_k^{new} = \frac{1}{N} \sum_{i=1}^N \gamma_{ik} \]
\[ \lambda_k^{new} = \frac{\sum_{i=1}^N \gamma_{ik} x_i}{\sum_{i=1}^N \gamma_{ik}} \]
- 收敛判断:检查参数变化或对数似然变化是否小于阈值,若未收敛则返回E步。
6. 实例说明
假设观测数据为:\(x = [2, 0, 3, 5, 1, 4]\),设 \(K=2\):
- 初始化:\(\pi_1=0.6, \pi_2=0.4, \lambda_1=1.0, \lambda_2=3.0\)。
- E步:对 \(x_i=2\):
\[ \gamma_{11} = \frac{0.6 \cdot 1^2 e^{-1}}{0.6 \cdot 1^2 e^{-1} + 0.4 \cdot 3^2 e^{-3}} \approx 0.79 \]
\(\gamma_{12} = 1 - \gamma_{11} \approx 0.21\)。
类似计算所有样本的 \(\gamma_{ik}\)。
- M步:更新参数:
\[ \pi_1^{new} = (\gamma_{11} + \gamma_{21} + ...)/6 \]
\[ \lambda_1^{new} = \frac{\gamma_{11} \cdot 2 + \gamma_{21} \cdot 0 + ...}{\gamma_{11} + \gamma_{21} + ...} \]
循环直到收敛。
7. 关键注意事项
- 初始化敏感:EM算法可能收敛到局部最优,可尝试多次随机初始化。
- 泊松特性:适用于计数型数据(非负整数)。
- 过拟合:当 \(K\) 过大时可能过拟合,可用交叉验证或信息准则(如BIC)选择 \(K\)。
- 扩展:可推广到零膨胀泊松混合等复杂模型。
通过以上步骤,EM算法能够有效估计泊松混合模型的参数,为计数数据的聚类或密度估计提供工具。