Learning
VOL. VI · NO. 25 · Mathematics · 01 JAN 1970

蒙特卡洛方法进阶:MCMC 与贝叶斯推断

数学 · 01 JAN 1970 · 8 min read · 1,993 words
· · ·

产品经理的数学课 · 第25讲

蒙特卡洛方法进阶:MCMC 与贝叶斯推断

简单的蒙特卡洛模拟用随机数解决概率问题。但当问题太复杂无法直接采样时,MCMC(马尔可夫链蒙特卡洛)用马尔可夫链生成样本,让你能处理任何分布。


前言

你已经学过:

  • 蒙特卡洛模拟(第17讲):用随机数解决概率问题
  • 贝叶斯思维(第18讲):从数据中更新信念
  • 马尔可夫链(第24讲):用状态转移矩阵预测行为

MCMC = 蒙特卡洛 + 马尔可夫链

它解决一个核心问题:当你无法直接从复杂的后验分布中采样时,用马尔可夫链生成样本


核心概念

为什么需要 MCMC?

贝叶斯推断需要计算后验分布: $$ P(\theta | 数据) = \frac{P(数据 | \theta) \times P(\theta)}{P(数据)} $$

问题:分母 $P(数据)$ 通常无法直接计算(需要对所有可能的 θ 积分)。

MCMC 的解决方案:不需要计算分母,只需要从后验分布中采样。

MCMC 的核心思想

用马尔可夫链生成样本

  1. 从一个简单的分布开始(比如均匀分布)
  2. 按照特定的规则跳转到下一个状态(转移概率)
  3. 重复足够多次后,样本的分布会收敛到目标分布(后验分布)

关键性质:马尔可夫链的平稳分布就是目标分布。

Metropolis-Hastings 算法

最简单的 MCMC 算法

  1. 初始化 θ₀
  2. 对于每一步 t: a. 从提议分布中采样 θ*(比如正态分布 N(θₜ, σ²)) b. 计算接受概率: $$\alpha = \min\left(1, \frac{P(数据|\theta^) \times P(\theta^)}{P(数据|\theta_t) \times P(\theta_t)}\right)$$ c. 以概率 α 接受 θ*,否则保留 θₜ
  3. 丢弃前 N 个样本(burn-in),保留后续样本

Gibbs 采样

特殊情况:当可以计算条件分布时,使用 Gibbs 采样。

步骤

  1. 初始化 θ₁⁰, θ₂⁰, …, θₖ⁰
  2. 对于每个参数 θᵢ:
    • 从条件分布 P(θᵢ | 其他参数, 数据) 中采样
  3. 重复足够多次

优点:接受概率总是 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 方法

  1. 先验:Beta(1, 1)(均匀分布,无信息先验)
  2. 后验:Beta(121, 881)(解析解)
  3. 用 MCMC 采样:生成 10,000 个样本
  4. 分析样本:中位数 12.0%,95% 可信区间 [10.1%, 14.0%]

行动:转化率在 10%-14% 之间的概率是 95%——这是你的决策依据。

应用场景二:A/B 测试的贝叶斯分析

你测试两个版本:

  • 版本 A:1000 次访问,120 次转化(12%)
  • 版本 B:1000 次访问,150 次转化(15%)

MCMC 分析

  1. 为 A 和 B 分别建立 Beta-Binomial 模型
  2. 用 MCMC 采样后验分布
  3. 计算 P(B > A) = 96%

行动:B 优于 A 的概率是 96%——选择 B。

应用场景三:用户流失预测模型

你的模型有多个参数:用户活跃度衰减率、流失触发阈值、召回效果系数。

MCMC 分析

  1. 建立分层贝叶斯模型
  2. 用 MCMC 采样每个参数的后验分布
  3. 预测用户流失概率

输出:用户流失概率的分布(不只是点估计)。

行动:根据分布的尾部(高流失概率),提前干预。


常见误区

误区一: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%(高维)

行动:减小提议分布的方差(σ),提高接受率。


本课要点

  1. MCMC = 马尔可夫链 + 蒙特卡洛:用链生成目标分布的样本
  2. Metropolis-Hastings:最简单的 MCMC 算法
  3. Gibbs 采样:当条件分布已知时使用
  4. 收敛诊断:迹线图、自相关图、R-hat 统计量
  5. 应用:贝叶斯推断、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 的工作原理。