共轭先验完整推导
概述
共轭先验(Conjugate Prior)是贝叶斯统计中的核心概念12。当先验分布与似然函数共轭时,后验分布与先验分布属于同一分布族,这极大地简化了贝叶斯推断的计算。
核心思想:选择先验分布使得后验分布与先验分布具有相同的函数形式。
1. 共轭性的定义
1.1 数学定义
设似然函数为 ,先验分布为 。如果后验分布
与先验 属于同一分布族,则称 为 的共轭先验。
1.2 指数族视角
指数族分布具有自然的共轭结构3:
其中 是自然参数, 是充分统计量。
共轭先验的形式为:
2. 伯努利/二项模型
2.1 问题设置
设 ,即:
似然函数:
其中 是成功次数。
2.2 Beta先验
Beta分布定义:
其中 。
2.3 后验推导
先验:
似然:
后验:
因此:
2.4 更新公式
| 参数 | 更新公式 |
|---|---|
| 先验 | |
| 后验 |
超参数的物理意义:
- :先验成功次数的”伪计数”
- :先验失败次数的”伪计数”
2.5 后验预测分布
新观测的后验预测分布:
这称为后验均值估计。
3. 多项/Dirichlet模型
3.1 问题设置
设 ,即:
约束:。
3.2 Dirichlet先验
Dirichlet分布定义:
其中 。
3.3 后验推导
先验:
似然:,其中 是类别 的计数
后验:
因此:
3.4 均匀Dirichlet的特殊性质
当 (均匀先验)时:
后验仍为Dirichlet,其参数为 。
与拉普拉斯平滑的关系:
当 时,这就是拉普拉斯平滑。
4. 泊松模型
4.1 问题设置
设 ,即:
似然函数:
4.2 Gamma先验
Gamma分布定义:
其中 是形状参数, 是率参数(或 是尺度参数)。
4.3 后验推导
先验:
似然:
后验:
因此:
4.4 更新公式
| 参数 | 更新公式 |
|---|---|
| 先验 | |
| 后验 |
4.5 后验均值
这是先验均值和样本均值的加权平均。
5. 指数模型
5.1 问题设置
设 ,即:
似然函数:
5.2 共轭先验
指数分布的共轭先验也是Gamma分布:
5.3 后验
6. 正态模型
6.1 已知方差,估计均值
设 ,其中 已知。
似然函数:
正态先验:
后验推导:
其中:
6.2 已知均值,估计方差
设 ,其中 已知。
逆Gamma先验:
后验:
6.3 均值和方差都未知
Normal-Inverse-Gamma先验:
后验:
其中:
7. 共轭先验完整表
7.1 离散分布
| 似然 | 先验 | 后验参数 | 后验 |
|---|---|---|---|
| Bernoulli() | Beta() | Beta | |
| Binomial() | Beta() | Beta | |
| Poisson() | Gamma() | Gamma | |
| Multinomial() | Dir() | Dir | |
| Geometric() | Beta() | Beta |
7.2 连续分布
| 似然 | 先验 | 后验参数 | 后验 |
|---|---|---|---|
| Normal(), 已知 | Normal | ||
| Normal(), 已知 | Inv-Gamma() | Inv-Gamma | |
| Normal(), 都未知 | N-IG() | 见正文 | N-IG |
| Exponential() | Gamma() | Gamma |
8. 共轭先验的Python实现
import numpy as np
from scipy import stats
from scipy.special import gammaln, betaln
class ConjugateUpdate:
"""共轭先验更新实现"""
@staticmethod
def beta_binomial_update(alpha, beta, successes, trials):
"""
Beta-Binomial共轭更新
参数:
alpha, beta: 先验参数
successes: 成功次数 k
trials: 试验次数 n
返回:
后验参数 (alpha', beta')
"""
return alpha + successes, beta + trials - successes
@staticmethod
def dirichlet_multinomial_update(alpha, counts):
"""
Dirichlet-Multinomial共轭更新
参数:
alpha: 先验参数向量
counts: 各类别计数
返回:
后验参数向量
"""
return alpha + counts
@staticmethod
def gamma_poisson_update(alpha, beta, observations):
"""
Gamma-Poisson共轭更新
参数:
alpha, beta: 先验参数
observations: 观测数据
返回:
后验参数 (alpha', beta')
"""
return alpha + np.sum(observations), beta + len(observations)
@staticmethod
def normal_known_var_update(mu0, sigma0_sq, sigma_sq, observations):
"""
已知方差的正态均值估计的共轭更新
参数:
mu0, sigma0_sq: 先验均值和方差
sigma_sq: 已知方差
observations: 观测数据
返回:
后验均值和方差
"""
n = len(observations)
x_bar = np.mean(observations)
sigma_n_sq = 1 / (1/sigma0_sq + n/sigma_sq)
mu_n = sigma_n_sq * (mu0/sigma0_sq + n*x_bar/sigma_sq)
return mu_n, sigma_n_sq
@staticmethod
def normal_unknown_var_update(mu0, kappa0, alpha0, beta0, observations):
"""
均值和方差都未知的正态模型的共轭更新
参数:
mu0, kappa0, alpha0, beta0: N-IG先验参数
observations: 观测数据
返回:
后验N-IG参数
"""
n = len(observations)
x = np.array(observations)
x_bar = np.mean(x)
kappa_n = kappa0 + n
mu_n = (kappa0 * mu0 + n * x_bar) / kappa_n
alpha_n = alpha0 + n / 2
# 分解为两部分
ss_between = kappa0 * n * (x_bar - mu0)**2 / (2 * kappa_n)
ss_within = np.sum((x - x_bar)**2) / 2
beta_n = beta0 + ss_between + ss_within
return mu_n, kappa_n, alpha_n, beta_n
class PosteriorPredictive:
"""后验预测分布"""
@staticmethod
def beta_binomial_predictive(alpha, beta, n, x):
"""
Beta-Binomial后验预测分布
P(X=x | D) = C(n,x) * B(alpha+x, beta+n-x) / B(alpha, beta)
"""
return (betaln(alpha + x, beta + n - x) - betaln(alpha, beta) +
np.log(np.math.comb(n, x)))
@staticmethod
def dirichlet_multinomial_predictive(alpha, n, x):
"""
Dirichlet-Multinomial后验预测分布
"""
return (np.sum([betaln(alpha_j + x_j, alpha_sum + n - alpha_sum_j)
for alpha_j, x_j in zip(alpha, x)]) -
betaln(alpha, alpha).sum() +
gammaln(alpha.sum() + n) - gammaln(alpha.sum()))9. 先验选择的实践指南
9.1 无信息先验
| 模型 | Jeffreys先验 |
|---|---|
| Bernoulli | |
| Poisson | |
| Normal() |
9.2 经验贝叶斯
通过数据估计超参数:
9.3 共轭先验的局限性
| 问题 | 解决方案 |
|---|---|
| 表达力有限 | 使用混合先验 |
| 不适用于复杂模型 | 变分推断、MCMC |
| 可能过于主观 | 敏感性分析 |
10. 总结
共轭先验的优势
- 计算简便:后验分布有解析形式
- 在线学习:新数据可逐步更新
- 可解释性:超参数有直观意义
- 计算效率:适合大规模应用
何时使用
- 需要快速贝叶斯推断
- 在线学习场景
- 作为更复杂方法的近似
- 先验信息明确时
何时不使用
- 需要非共轭先验表达复杂信念
- 模型高度非线性
- 后验分布非标准形式
参考资料
相关主题
- bayesian-inference — 贝叶斯推断基础
- bayesian-estimation-theory — 贝叶斯估计理论
- exponential-family — 指数族分布
- hierarchical-bayesian-models — 层次贝叶斯模型
- empirical-bayes-prior-selection — 经验贝叶斯与先验选择