章节学习页
# 第 7 章 Bayes 方法和统计决策理论
本章在学什么
一句话:本章学习如何把先验知识和样本证据结合起来,得到后验分布,并在损失函数下做估计或决策。
在统计学习链条中的位置:
频率学派推断 -> Bayes 推断:先验 + 似然 -> 后验 -> 估计/区间/决策
课程和工作用途:当你有历史经验、专家判断、先前实验结果,或样本量较小时,Bayes 方法提供了一种把“已有知识”和“新数据”合并的统计语言。
教材目录
- 7.1 引言和若干基本概念
- 7.2 先验分布的确定
- 7.3 Bayes 统计推断
- 7.4 Bayes 统计决策理论
- 7.5 Minimax 准则
- 7.6 同变估计及可容许性
- 习题 7
必须掌握的概念
- [x] 先验分布 prior
- [x] 似然函数 likelihood
- [x] 后验分布 posterior
- [x] 共轭先验 conjugate prior
- [x] Bayes 估计
- [x] 后验均值
- [x] 后验众数 MAP
- [x] 损失函数 loss function
- [x] 决策函数 decision rule
- [x] 后验风险 posterior risk
了解即可的内容
- [ ] Minimax 准则:知道它关注最坏情况下风险最小,不追求完整证明。
- [ ] 同变估计:知道它和变换不变性有关,本阶段只掌握概念定位。
- [ ] 可容许性:知道它用于判断一个决策规则是否被其他规则全面支配。
- [ ] 完整数学决策理论证明:先不作为两个月主攻内容。
概念填充区
Bayes 方法 Bayesian method
- 一句话定义:Bayes 方法用先验分布表达已有知识,用似然函数表达样本证据,再通过 Bayes 公式得到后验分布。
- 直觉解释:先有一个初始看法,看到数据后更新这个看法。
- 专业表达:\(\pi(\theta|x)\propto L(\theta|x)\pi(\theta)\)。
- 常见符号:\(\pi(\theta)\)、\(L(\theta|x)\)、\(\pi(\theta|x)\)。
- 典型场景:小样本比例估计、A/B 测试、医学诊断、风险预测、模型参数更新。
- 容易混淆的点:Bayes 方法不是“主观随便猜”,先验需要说明来源和敏感性。
- 和后续学习的关系:现代机器学习、概率图模型、Bayesian optimization 和不确定性量化都依赖这个思想。
- 给 AI 的高质量提示词:请用 Bayes 方法分析这个参数估计问题,明确先验、似然、后验和 Bayes 估计。
先验分布 prior distribution
- 一句话定义:先验分布是在看到当前样本之前,对未知参数的概率表达。
- 直觉解释:先验是“看数据前的初始判断”。
- 专业表达:用 \(\pi(\theta)\) 表示参数 \(\theta\) 的先验分布。
- 常见类型:信息先验、无信息先验、共轭先验。
- 典型场景:根据历史转化率设定 Beta 先验;根据历史均值设定正态先验。
- 容易混淆的点:先验影响后验,尤其在样本量小的时候;需要做敏感性分析。
似然函数 likelihood
- 一句话定义:似然函数表示在不同参数取值下,当前样本出现的相对可能性。
- 直觉解释:似然是“数据对参数的支持程度”。
- 专业表达:\(L(\theta|x)=f(x|\theta)\)。
- 和 MLE 的关系:MLE 最大化似然;Bayes 方法把似然和先验相乘得到后验。
后验分布 posterior distribution
- 一句话定义:后验分布是在看到样本数据之后,对未知参数的更新后分布。
- 直觉解释:后验 = 先验观点被数据修正后的结果。
- 专业表达:
\[ \pi(\theta|x)=\frac{f(x|\theta)\pi(\theta)}{\int f(x|\theta)\pi(\theta)d\theta} \]
- 常见用途:后验均值、后验众数、可信区间、预测分布。
- 容易混淆的点:Bayes 后验可以说“参数落在某区间的后验概率”,这和频率学派置信区间含义不同。
共轭先验 conjugate prior
- 一句话定义:如果先验和后验属于同一分布族,这个先验就是共轭先验。
- 直觉解释:共轭先验让 Bayes 更新变得像“参数加法”,计算非常方便。
- 专业表达:Bernoulli/Binomial 似然配 Beta 先验,Poisson 似然配 Gamma 先验,Normal 均值配 Normal 先验。
- 典型场景:Beta-Binomial 用于成功率更新;Gamma-Poisson 用于事件率更新。
Bayes 估计 Bayes estimator
- 一句话定义:Bayes 估计是在给定损失函数下,使后验期望损失最小的估计。
- 直觉解释:不同损失函数代表不同错误代价,因此最优估计也不同。
- 专业表达:选择 \(a\) 最小化 \(E[L(\theta,a)|x]\)。
- 常见结论:平方损失下 Bayes 估计是后验均值;绝对损失下是后验中位数;0-1 损失下是后验众数或 MAP。
- 容易混淆的点:Bayes 估计不是固定一种公式,而取决于后验分布和损失函数。
损失函数 loss function
- 一句话定义:损失函数衡量采取某个估计或决策时,真实参数和行动之间的错误代价。
- 直觉解释:它把“错多少”和“错的代价多大”量化。
- 常见形式:平方损失 \((a-\theta)^2\)、绝对损失 \(|a-\theta|\)、0-1 损失。
- 典型场景:估计误差、分类错误、风险决策、模型选择。
- 容易混淆的点:损失函数不同,最优决策可能不同。
决策函数 decision rule
- 一句话定义:决策函数是把样本观测映射到行动或估计结果的规则。
- 专业表达:\(\delta(x)\) 表示看到样本 \(x\) 后采取的行动。
- 典型场景:观察数据后选择是否治疗、是否报警、选择哪个模型、给出哪个估计值。
Minimax 准则
- 一句话定义:Minimax 准则选择使最大风险最小的决策规则。
- 直觉解释:它是“最坏情况也尽量不太坏”的保守策略。
- 专业表达:选择 \(\delta\) 使 \(\sup_\theta R(\theta,\delta)\) 最小。
- 典型场景:风险规避、对先验不放心、希望保证最坏情况表现。
可容许性 admissibility
- 一句话定义:如果不存在另一个决策规则在所有参数下都不差、且至少某些参数下更好,那么该规则是可容许的。
- 直觉解释:可容许表示“没有被另一个规则全面碾压”。
- 学习要求:本阶段掌握概念,不追求证明。
公式与推导
Bayes 公式
离散形式:
\[ P(A|B)=\frac{P(B|A)P(A)}{P(B)} \]
参数推断形式:
\[ \pi(\theta|x)=\frac{f(x|\theta)\pi(\theta)}{m(x)} \]
其中:
\[ m(x)=\int f(x|\theta)\pi(\theta)d\theta \]
是边际似然,起归一化作用。
先验 x 似然 -> 后验
常写成比例形式:
\[ \pi(\theta|x)\propto L(\theta|x)\pi(\theta) \]
直觉:后验的形状由“数据支持”和“先验判断”共同决定。
Beta-Binomial 共轭更新
若:
\[ p\sim Beta(a,b) \]
样本中成功 \(x\) 次、失败 \(n-x\) 次,则:
\[ p|x\sim Beta(a+x,b+n-x) \]
直觉:Beta 先验中的 \(a,b\) 可以理解为先验成功和失败信息;看到数据后把成功次数和失败次数加进去。
Normal-Normal 共轭直觉
若总体方差已知,\(X_i\sim N(\mu,\sigma^2)\),先验 \(\mu\sim N(\mu_0,\tau^2)\),则后验均值是先验均值和样本均值的加权平均。
直觉:样本量越大、样本噪声越小,后验越靠近样本均值;先验越确定,后验越靠近先验均值。
平方损失下的 Bayes 估计
若损失函数为:
\[ L(\theta,a)=(\theta-a)^2 \]
则 Bayes 估计为:
\[ a^*=E(\theta|x) \]
即后验均值。
0-1 损失下的 MAP
在 0-1 损失或分类决策直觉下,常选择后验概率最大的参数值或类别:
\[ \hat\theta_{MAP}=\arg\max_\theta \pi(\theta|x) \]
代码任务 1:Beta-Binomial 后验更新
import numpy as np # 导入 numpy,用于数值计算
from scipy import stats # 导入 scipy.stats,用于 Beta 分布
prior_a = 2 # Beta 先验的第一个参数,可理解为先验成功信息
prior_b = 2 # Beta 先验的第二个参数,可理解为先验失败信息
n = 20 # 当前样本量,例如观察 20 个用户
success = 14 # 成功次数,例如 14 个用户转化
failure = n - success # 失败次数
posterior_a = prior_a + success # 后验成功参数 = 先验成功参数 + 观察成功次数
posterior_b = prior_b + failure # 后验失败参数 = 先验失败参数 + 观察失败次数
posterior_mean = posterior_a / (posterior_a + posterior_b) # Beta 分布后验均值
posterior_map = (posterior_a - 1) / (posterior_a + posterior_b - 2) # 当参数大于 1 时的后验众数 MAP
print("后验分布: Beta", posterior_a, posterior_b) # 输出后验分布参数
print("后验均值:", posterior_mean) # 输出平方损失下的 Bayes 估计
print("后验众数 MAP:", posterior_map) # 输出 MAP 估计
结果解释:先验 Beta(2,2) 和数据 14 次成功、6 次失败合并后得到 Beta(16,8)。后验均值是成功率的 Bayes 估计。
代码任务 2:画出先验和后验
import numpy as np # 导入 numpy
import matplotlib.pyplot as plt # 导入 matplotlib,用于画图
from scipy import stats # 导入 scipy.stats
prior_a, prior_b = 2, 2 # 设置先验 Beta 分布参数
posterior_a, posterior_b = 16, 8 # 设置上一例得到的后验参数
p_grid = np.linspace(0, 1, 500) # 在 0 到 1 之间生成 500 个点,用于画概率密度曲线
prior_density = stats.beta.pdf(p_grid, prior_a, prior_b) # 计算先验密度
posterior_density = stats.beta.pdf(p_grid, posterior_a, posterior_b) # 计算后验密度
plt.plot(p_grid, prior_density, label="Prior Beta(2,2)") # 画先验曲线
plt.plot(p_grid, posterior_density, label="Posterior Beta(16,8)") # 画后验曲线
plt.xlabel("p") # 设置横轴标签,p 表示成功概率
plt.ylabel("density") # 设置纵轴标签
plt.title("Prior and posterior distributions") # 设置图标题
plt.legend() # 显示图例
plt.show() # 显示图形
结果解释:后验分布相对于先验更集中,并且中心向样本成功率附近移动。这体现了“先验被数据更新”。
代码任务 3:比较不同先验对后验的影响
import numpy as np # 导入 numpy
from scipy import stats # 导入 scipy.stats
n = 20 # 样本量
success = 14 # 成功次数
failure = n - success # 失败次数
priors = [(1, 1), (2, 2), (20, 20)] # 三种先验:均匀、温和先验、强先验
for a, b in priors: # 遍历不同先验
post_a = a + success # 更新后验 a 参数
post_b = b + failure # 更新后验 b 参数
post_mean = post_a / (post_a + post_b) # 计算后验均值
ci = stats.beta.ppf([0.025, 0.975], post_a, post_b) # 计算 95% 后验可信区间
print("先验:", (a, b)) # 输出先验参数
print("后验:", (post_a, post_b)) # 输出后验参数
print("后验均值:", post_mean) # 输出后验均值
print("95% 后验可信区间:", ci) # 输出后验可信区间
结果解释:强先验 Beta(20,20) 会把后验往 0.5 拉回,说明样本量不大时先验影响明显。报告中应说明先验来源,并可做敏感性分析。
代码任务 4:用损失函数解释 Bayes 决策
import numpy as np # 导入 numpy
posterior_samples = np.array([0.45, 0.50, 0.55, 0.60, 0.65]) # 用几个后验样本点做最小示例
actions = np.linspace(0.4, 0.7, 7) # 候选决策,例如给出的估计值
for action in actions: # 遍历每个候选估计值
squared_loss = np.mean((posterior_samples - action) ** 2) # 计算平方损失的后验平均
absolute_loss = np.mean(np.abs(posterior_samples - action)) # 计算绝对损失的后验平均
print("行动/估计:", action) # 输出当前候选行动
print("平方损失后验平均:", squared_loss) # 输出平方损失风险
print("绝对损失后验平均:", absolute_loss) # 输出绝对损失风险
结果解释:平方损失下最优行动接近后验均值;绝对损失下最优行动接近后验中位数。不同损失函数会给出不同最优估计。
课后作业与答案
题 1:Bayes 方法的核心公式是什么?
答案:
\[ \pi(\theta|x)\propto L(\theta|x)\pi(\theta) \]
解释:后验分布由似然函数和先验分布相乘并归一化得到。
题 2:什么是先验分布和后验分布?
答案:先验分布是在看到当前数据前对参数的概率表达;后验分布是在看到数据后更新得到的参数分布。
解释:Bayes 推断的核心是从先验到后验的更新。
题 3:若 \(p\sim Beta(3,2)\),观察到 10 次试验中成功 7 次,后验分布是什么?
答案:
\[ p|x\sim Beta(3+7,2+3)=Beta(10,5) \]
解释:Beta-Binomial 共轭更新中,成功次数加到第一个参数,失败次数加到第二个参数。
题 4:平方损失下的 Bayes 估计是什么?
答案:后验均值。
解释:平方损失 \((\theta-a)^2\) 下,使后验期望损失最小的 \(a\) 是 \(E(\theta|x)\)。
题 5:后验均值和 MAP 有什么区别?
答案:后验均值是后验分布的平均值;MAP 是后验分布密度或概率最大的参数值。
解释:在对称分布中二者可能接近,在偏态分布中可能不同。
题 6:什么是共轭先验?
答案:如果先验和后验属于同一分布族,则该先验是共轭先验。
解释:例如 Binomial 似然和 Beta 先验共轭,后验仍是 Beta 分布。
题 7:代码题:用 Beta(1,1) 先验和 30 次中 18 次成功更新后验。
prior_a = 1 # 先验成功参数
prior_b = 1 # 先验失败参数
success = 18 # 观察成功次数
n = 30 # 总试验次数
failure = n - success # 失败次数
posterior_a = prior_a + success # 更新成功参数
posterior_b = prior_b + failure # 更新失败参数
posterior_mean = posterior_a / (posterior_a + posterior_b) # 后验均值
print(posterior_a, posterior_b) # 输出后验 Beta 参数
print(posterior_mean) # 输出后验均值
答案解释:后验为 Beta(19,13),后验均值为 \(19/(19+13)=0.59375\)。
题 8:报告表达题:如何解释 Bayes 推断?
答案:
本分析采用 Bayes 推断,将参数的不确定性表示为概率分布。先验分布反映观察数据前的已有信息,似然函数反映当前样本证据,二者结合得到后验分布。基于后验分布可以给出后验均值、MAP 估计和可信区间。由于先验会影响结果,尤其在样本量较小时,应说明先验来源并进行敏感性分析。
报告可写表达
- “Bayes 方法将先验信息和样本似然结合,得到参数的后验分布。”
- “在平方损失下,后验均值是 Bayes 估计。”
- “共轭先验使后验分布仍属于同一分布族,从而简化计算。”
- “与频率学派置信区间不同,Bayes 可信区间可以解释为参数落入该区间的后验概率。”
- “样本量较小时,先验选择对后验影响较大,因此需要说明先验来源或做敏感性分析。”
可以追问老师/同学的问题
- 本课程是否要求掌握 Bayes 决策理论的证明,还是只需会用常见损失函数结论?
- 可信区间和置信区间在考试中如何区分表述?
- 先验分布的选择是否需要客观依据?
- Minimax 准则和 Bayes 准则在本教材中是否会出计算题?
- 同变估计和可容许性是否只需概念理解?
给 AI 的高质量提示词
请用 Bayes 方法分析这个参数推断问题:明确先验分布、似然函数、后验分布;判断是否存在共轭更新;给出后验均值、MAP 和可信区间;说明所用损失函数和报告中如何解释先验敏感性。
反向链接
README统计推断_自测题与答案索引
统计推断