蒙特卡洛方法进阶:MCMC 与贝叶斯推断
产品经理的数学课 · 第25讲
蒙特卡洛方法进阶:MCMC 与贝叶斯推断
简单的蒙特卡洛模拟用随机数解决概率问题。但当问题太复杂无法直接采样时,MCMC(马尔可夫链蒙特卡洛)用马尔可夫链生成样本,让你能处理任何分布。
前言
你已经学过:
- 蒙特卡洛模拟(第17讲):用随机数解决概率问题
- 贝叶斯思维(第18讲):从数据中更新信念
- 马尔可夫链(第24讲):用状态转移矩阵预测行为
MCMC = 蒙特卡洛 + 马尔可夫链
它解决一个核心问题:当你无法直接从复杂的后验分布中采样时,用马尔可夫链生成样本。
核心概念
为什么需要 MCMC?
贝叶斯推断需要计算后验分布: $$ P(\theta | 数据) = \frac{P(数据 | \theta) \times P(\theta)}{P(数据)} $$
问题:分母 $P(数据)$ 通常无法直接计算(需要对所有可能的 θ 积分)。
MCMC 的解决方案:不需要计算分母,只需要从后验分布中采样。
MCMC 的核心思想
用马尔可夫链生成样本:
- 从一个简单的分布开始(比如均匀分布)
- 按照特定的规则跳转到下一个状态(转移概率)
- 重复足够多次后,样本的分布会收敛到目标分布(后验分布)
关键性质:马尔可夫链的平稳分布就是目标分布。
Metropolis-Hastings 算法
最简单的 MCMC 算法:
- 初始化 θ₀
- 对于每一步 t: a. 从提议分布中采样 θ*(比如正态分布 N(θₜ, σ²)) b. 计算接受概率: $$\alpha = \min\left(1, \frac{P(数据|\theta^) \times P(\theta^)}{P(数据|\theta_t) \times P(\theta_t)}\right)$$ c. 以概率 α 接受 θ*,否则保留 θₜ
- 丢弃前 N 个样本(burn-in),保留后续样本
Gibbs 采样
特殊情况:当可以计算条件分布时,使用 Gibbs 采样。
步骤:
- 初始化 θ₁⁰, θ₂⁰, …, θₖ⁰
- 对于每个参数 θᵢ:
- 从条件分布 P(θᵢ | 其他参数, 数据) 中采样
- 重复足够多次
优点:接受概率总是 1(不需要拒绝)。
诊断 MCMC 收敛
如何判断 MCMC 是否收敛?
1. 迹线图(Trace Plot):观察样本是否稳定
- 收敛:样本在某个值附近波动
- 未收敛:样本有明显的趋势或周期
2. 自相关图(Autocorrelation Plot):观察样本之间的相关性
- 收敛:自相关快速衰减
- 未收敛:自相关持续较高
3. Gelman-Rubin 统计量(R-hat):比较多个链的方差
- R-hat < 1.1:收敛
- R-hat > 1.1:未收敛
产品经理的应用
应用场景一:转化率的不确定性估计
你的产品有 1000 次访问,120 次转化(转化率 12%)。
传统方法:点估计 12%,置信区间 9.7%-14.3%(正态近似)。
MCMC 方法:
- 先验:Beta(1, 1)(均匀分布,无信息先验)
- 后验:Beta(121, 881)(解析解)
- 用 MCMC 采样:生成 10,000 个样本
- 分析样本:中位数 12.0%,95% 可信区间 [10.1%, 14.0%]
行动:转化率在 10%-14% 之间的概率是 95%——这是你的决策依据。
应用场景二:A/B 测试的贝叶斯分析
你测试两个版本:
- 版本 A:1000 次访问,120 次转化(12%)
- 版本 B:1000 次访问,150 次转化(15%)
MCMC 分析:
- 为 A 和 B 分别建立 Beta-Binomial 模型
- 用 MCMC 采样后验分布
- 计算 P(B > A) = 96%
行动:B 优于 A 的概率是 96%——选择 B。
应用场景三:用户流失预测模型
你的模型有多个参数:用户活跃度衰减率、流失触发阈值、召回效果系数。
MCMC 分析:
- 建立分层贝叶斯模型
- 用 MCMC 采样每个参数的后验分布
- 预测用户流失概率
输出:用户流失概率的分布(不只是点估计)。
行动:根据分布的尾部(高流失概率),提前干预。
常见误区
误区一:MCMC 总是收敛
「运行足够长时间就会收敛」
不一定。如果提议分布选择不当,MCMC 可能:
- 接受率太低(σ 太大):大部分样本被拒绝
- 接受率太高(σ 太小):样本移动太慢,自相关高
- 陷入局部最优:没有探索整个参数空间
需要诊断收敛,不只是运行足够长时间。
误区二:MCMC 样本独立
「MCMC 生成的样本是独立的」
MCMC 样本是相关的(马尔可夫链的性质)。需要:
- 丢弃 burn-in 样本
- 每隔 k 步采样一次(thinning)
- 计算有效样本量(Effective Sample Size)
误区三:先验分布不重要
「数据够多,先验就不重要了」
先验会影响后验,特别是数据量少时。选择合适的先验(信息先验 vs 无信息先验)会影响结果。
误区四:MCMC 是万能的
「任何问题都用 MCMC 解决」
MCMC 有局限:
- 高维参数空间可能难以采样
- 多峰后验可能陷入局部最优
- 计算成本高(需要大量迭代)
有些问题用变分推断(Variational Inference)更快。
PM/BA 应用
| 场景 | MCMC 工具 | 决策价值 |
|---|---|---|
| 转化率估计 | Beta-Binomial | 量化不确定性 |
| A/B 测试 | 后验比较 | 做出概率决策 |
| 流失预测 | 分层模型 | 识别风险用户 |
| 价格优化 | 贝叶斯回归 | 估计价格弹性 |
| 需求预测 | 时间序列模型 | 预测未来需求 |
课后测验
题目 1
MCMC 的核心思想是什么?
A. 用随机数解决问题
B. 用马尔可夫链生成目标分布的样本
C. 用梯度下降优化参数
D. 用交叉验证选择模型
查看答案与解析
答案:B(用马尔可夫链生成目标分布的样本)
MCMC = Markov Chain Monte Carlo
- 马尔可夫链:生成样本(从一个状态跳转到另一个状态)
- 蒙特卡洛:用样本近似分布(计算统计量)
关键性质:马尔可夫链的平稳分布就是目标分布(后验分布)。
题目 2
你的 MCMC 迹线图显示样本有明显的上升趋势。这意味着什么?
A. MCMC 已收敛
B. MCMC 未收敛,需要更多迭代
C. 提议分布太宽
D. 先验分布选择错误
查看答案与解析
答案:B(MCMC 未收敛,需要更多迭代)
迹线图应该像「毛毛虫」——在某个值附近随机波动。
上升趋势意味着:
- 马尔可夫链还在探索参数空间
- 还没有收敛到平稳分布
- 需要更多迭代(或者 burn-in 不够)
行动:增加迭代次数,直到迹线图稳定。
题目 3
你的 MCMC 接受率是 5%(大部分提议被拒绝)。这意味着什么?
A. 模型拟合很好
B. 提议分布的方差太大
C. 先验分布太弱
D. 数据量太少
查看答案与解析
答案:B(提议分布的方差太大)
接受率太低(5%)意味着:
- 提议的 θ* 经常落在后验分布的低概率区域
- 大部分提议被拒绝
- 样本移动太慢,效率低
目标接受率:23%(1维)到 44%(高维)
行动:减小提议分布的方差(σ),提高接受率。
本课要点
- MCMC = 马尔可夫链 + 蒙特卡洛:用链生成目标分布的样本
- Metropolis-Hastings:最简单的 MCMC 算法
- Gibbs 采样:当条件分布已知时使用
- 收敛诊断:迹线图、自相关图、R-hat 统计量
- 应用:贝叶斯推断、A/B 测试、不确定性量化
延伸阅读
- Gelman et al., 《Bayesian Data Analysis》 — 贝叶斯统计的经典教材
- Robert & Casella, 《Monte Carlo Statistical Methods》 — MCMC 的全面介绍
- McKinney et al., 《Python for Bayesian Statistics》 — 用 Python 实现 MCMC
下一步
下一课:层次模型:用数据分层处理不同群体 — 用层次贝叶斯模型处理不同用户群体的异质性。
工具提示:用 PyMC 或 Stan 实现简单的 MCMC 模型——从 Beta-Binomial 模型开始,理解 MCMC 的工作原理。