贝叶斯思维入门¶
从"确定性思考"到"概率性思考"——用先验 + 数据不断更新信念
💡 核心思想¶
贝叶斯公式可能是人类知识更新最重要的一条公式:
用大白话说:
事后信念 = 事前信念 × 新证据的力度
即:你看到新数据之后,对某个假设的相信程度,等于你之前的相信程度,乘上新数据对该假设的支持力度。
🏥 经典案例:疾病检测¶
频率学派直觉:检测准确率 99%,那我 99% 患病了。
贝叶斯计算:
# 先验
p_disease = 0.01 # 1% 的人患病
p_no_disease = 0.99 # 99% 的人健康
# 似然
p_pos_given_disease = 0.99 # 患者检出阳性的概率
p_pos_given_no_disease = 0.01 # 健康人假阳性的概率
# 证据(全概率)
p_positive = (p_pos_given_disease * p_disease +
p_pos_given_no_disease * p_no_disease)
# 后验:阳性时真正患病的概率
p_disease_given_pos = (p_pos_given_disease * p_disease) / p_positive
print(f"""
阳性时真正患病概率: {p_disease_given_pos:.1%}
——只有约 50%!因为疾病本身太罕见了。
每 100 个阳性结果中:
- {p_disease_given_pos*100:.0f} 人真正患病(真阳性)
- {(1-p_disease_given_pos)*100:.0f} 人是假阳性
""")
直觉纠正:罕见病检测中,"99% 准确"不意味着"99% 患病"——因为先验概率(1%)压倒性地低。
🎲 贝叶斯更新:一边看数据一边改信念¶
案例:硬币是否公平?¶
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
# 问题:一枚硬币,抛了 10 次,8 次正面。它公平吗?
# 频率学派:p = 0.012 (二项检验),拒绝"公平"假设
# 贝叶斯学派:用 Beta 分布表示对"正面概率"的信念
# 先验:Beta(1, 1) = 均匀分布(我什么都不知道)
alpha_prior, beta_prior = 1, 1
# 数据:10 次抛掷,8 次正面
n_heads, n_tails = 8, 2
# 后验:Beta(先验α + 正面次数, 先验β + 反面次数)
alpha_post = alpha_prior + n_heads
beta_post = beta_prior + n_tails
x = np.linspace(0, 1, 200)
fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(x, stats.beta.pdf(x, alpha_prior, beta_prior),
label=f'先验 Beta({alpha_prior},{beta_prior})')
ax.plot(x, stats.beta.pdf(x, alpha_post, beta_post),
label=f'后验 Beta({alpha_post},{beta_post})', linewidth=2)
ax.axvline(0.5, color='gray', linestyle='--', label='公平硬币 (p=0.5)')
ax.set_xlabel('正面概率 p')
ax.set_ylabel('信念密度')
ax.set_title('贝叶斯更新:10 次抛掷 8 次正面后')
ax.legend()
plt.tight_layout()
解读:后验分布峰值在 0.73 左右,说明我们对"硬币不太公平"有了更强的信念——但不是 100% 确定,只是一定程度的倾向。
继续更新:又抛了 100 次¶
# 在已有后验基础上继续更新
# 第二轮数据:100 次,48 次正面(几乎公平)
n_heads2, n_tails2 = 48, 52
alpha_post2 = alpha_post + n_heads2
beta_post2 = beta_post + n_tails2
print(f"""
第一轮后验: Beta({alpha_post}, {beta_post}) → 均值={alpha_post/(alpha_post+beta_post):.2f}
第二轮后验: Beta({alpha_post2}, {beta_post2}) → 均值={alpha_post2/(alpha_post2+beta_post2):.2f}
结论:更多数据把我们拉回了"接近公平"的信念。
""")
关键洞察:贝叶斯更新是连续的、自然的——你不需要"拒绝"或"接受"某个假设,只需不断更新信念。
📐 Beta 分布:比例建模的神器¶
Beta 分布是 [0,1] 区间上的万能分布,用于建模概率的概率。
fig, axes = plt.subplots(2, 2, figsize=(10, 8))
params = [(1, 1), (2, 8), (8, 2), (10, 10)]
titles = ['均匀: 完全无知', '倾向低值', '倾向高值', '高置信度: 中心']
x = np.linspace(0, 1, 200)
for (a, b), title, ax in zip(params, titles, axes.flat):
ax.plot(x, stats.beta.pdf(x, a, b), linewidth=2, color='#2196F3')
ax.fill_between(x, stats.beta.pdf(x, a, b), alpha=0.2, color='#2196F3')
ax.set_title(f'Beta({a},{b}): {title}')
ax.set_xlabel('θ')
ax.set_ylabel('密度')
plt.suptitle('Beta 分布:信念的形状', fontsize=14, fontweight='bold')
plt.tight_layout()
业务应用: - 新广告的点击率估计(先 Beta(1,1) → 展示 100 次点了 5 次 → Beta(6, 96)) - A/B 测试的贝叶斯分析(哪个版本更可能是真正更好的?) - CLV 建模(客户的活跃概率分布)
🔬 贝叶斯 vs 频率学派¶
| 维度 | 频率学派 | 贝叶斯学派 |
|---|---|---|
| 概率是什么? | 长期频率 | 信念程度 |
| 参数是什么? | 固定的未知常数 | 随机变量(有分布) |
| 回答的问题 | "如果 H₀ 为真,P(数据) 是多少?" | "给定数据,P(H) 是多少?" |
| p 值 | 核心工具 | 不需要(用后验概率) |
| 先验信息 | 忽略("让数据说话") | 显式纳入 |
| 小样本 | 困难(power 不足) | 可以用先验补充 |
什么时候用贝叶斯: - 有小样本但有强先验(如:新产品的转化率估计) - 需要概率性决策(如:P(版本B更好) = 0.87) - 需要持续更新(如:每来一个新用户就更新预测)
什么时候用频率学派: - 需要严格的假阳性控制(如:药品审批) - 需要客观性(如:学术发表)
🐍 PyMC 入门:贝叶斯建模框架¶
# pip install pymc arviz
import pymc as pm
import arviz as az
# 问题:估计网站的转化率
# 数据:1000 个访客,120 人转化
n_visitors = 1000
n_conversions = 120
with pm.Model() as model:
# 先验:Beta(1, 1) — 我们什么都不知道
p = pm.Beta('p', alpha=1, beta=1)
# 似然:二项分布
observations = pm.Binomial(
'observations',
n=n_visitors,
p=p,
observed=n_conversions
)
# 采样
trace = pm.sample(2000, tune=1000, random_seed=42)
# 后验分析
summary = az.summary(trace, hdi_prob=0.95)
print(summary)
# 转化率估计:约 12% [10.1%, 14.0%](95% HDI)
# 回答业务问题:转化率 > 10% 的概率?
prob_above_10 = (trace.posterior['p'] > 0.10).mean().item()
print(f"P(转化率 > 10%) = {prob_above_10:.1%}")
⚠️ 常见误解¶
误解 1:"先验是主观的,所以贝叶斯不客观"¶
回应:频率学派的 α=0.05 也是一个主观选择。贝叶斯只是把假设显式化了。而且大数据下,先验的影响会被稀释。
误解 2:"贝叶斯计算太慢了"¶
回应:MCMC 确实慢于闭式解,但现代概率编程(PyMC、Stan、NumPyro)已经极快。而且——一个慢但正确的结果 > 一个快但错误的结果。
误解 3:"频贝之争,必须选一边"¶
回应:两者互补。探索阶段用贝叶斯(灵活、直观),验证阶段用频率学派(严格、标准化)。两条腿走路。
🔗 进阶阅读¶
- 概率分布基础 — Beta、二项、正态分布详解
- 推断统计 — 频率学派的假设检验框架
- 贝叶斯统计概念(中英对照)
- Probabilistic Programming & Bayesian Methods for Hackers — 贝叶斯入门神作
- 相关案例:营销组合 MMM · CLV 建模