统计基础

第06课:贝叶斯定理

贝叶斯推断、先验与后验、共轭先验、MCMC、贝叶斯vs频率学派

1. 贝叶斯定理

P(θ|D) = P(D|θ)·P(θ) / P(D)

术语含义
P(θ)先验——看数据前的信念
P(Dθ)似然——数据对θ的支持
P(θD)后验——看数据后的更新信念

核心思想: 用数据更新信念,而非从零开始。

经典例子: 疾病发病率0.1%,检测准确率99%。阳性时真实患病≈9%!(基础概率忽视)

2. 先验分布

无信息先验: 均匀/Jeffreys先验 p(θ)∝√I(θ)

共轭先验:

似然共轭先验后验
伯努利Beta(α,β)Beta(α+Σx,β+n-Σx)
泊松Gamma(α,β)Gamma(α+Σx,β+n)
正态(已知σ²)正态正态

3. MCMC采样

Metropolis-Hastings: 提出候选θ'→计算接受率α→以概率α接受

Gibbs采样: 每个维度从条件后验采样。优点:无需调参。缺点:条件后验需有解析形式。

实用建议: Burn-in丢弃前N次;Thinning每k次取一;收敛诊断R̂<1.1

4. 贝叶斯 vs 频率学派

维度频率学派贝叶斯
参数固定未知随机变量
不确定性置信区间可信区间
先验不使用显式使用
小样本不稳定更稳健

大样本下两者趋同;小样本下贝叶斯更稳定。

Python代码实现与验证

💡 代码说明:以下代码使用 Python / Scikit-learn 实现,已实机运行验证。

完整代码


import numpy as np
from scipy import stats
np.random.seed(42)

print("=== Beta-Binomial共轭先验 ===")
a0, b0 = 2, 2
n_trials, n_succ = 100, 65
a_post = a0 + n_succ
b_post = b0 + n_trials - n_succ
print("先验Beta({},{}) 数据{}/{} 后验Beta({},{})".format(a0,b0,n_succ,n_trials,a_post,b_post))
print("后验均值={:.4f} 众数={:.4f}".format(a_post/(a_post+b_post),(a_post-1)/(a_post+b_post-2)))
ci = (stats.beta.ppf(0.025,a_post,b_post), stats.beta.ppf(0.975,a_post,b_post))
print("95%可信区间: [{:.4f}, {:.4f}]".format(ci[0],ci[1]))

print("\n=== 频率学派对比 ===")
p_hat = n_succ/n_trials
se = np.sqrt(p_hat*(1-p_hat)/n_trials)
print("p_hat={:.4f} 95%CI=[{:.4f},{:.4f}]".format(p_hat, p_hat-1.96*se, p_hat+1.96*se))

print("\n=== 简易MCMC ===")
n_mcmc = 10000
samples = np.zeros(n_mcmc)
cur = 0.5
for i in range(n_mcmc):
    prop = cur + np.random.normal(0, 0.1)
    if 0 < prop < 1:
        lp_cur = (a_post-1)*np.log(cur)+(b_post-1)*np.log(1-cur)
        lp_prop = (a_post-1)*np.log(prop)+(b_post-1)*np.log(1-prop)
        if np.log(np.random.random()) < lp_prop-lp_cur:
            cur = prop
    samples[i] = cur
print("MCMC后验均值={:.4f} std={:.4f}".format(samples[1000:].mean(), samples[1000:].std()))

运行结果

=== Beta-Binomial共轭先验 === 先验Beta(2,2) 数据65/100 后验Beta(67,37) 后验均值=0.6442 众数=0.6471 95%可信区间: [0.5502, 0.7330] === 频率学派对比 === p_hat=0.6500 95%CI=[0.5565,0.7435] === 简易MCMC === MCMC后验均值=0.6446 std=0.0467
✅ 验证通过

补充内容:关键概念深入

本节补充本课的核心概念、常见误区和实践建议,帮助建立更深入的理解。

实践案例与深入分析

统计思维在日常ML工作中的体现

统计思维不仅是理论工具,更是ML工程师的核心素养。以下是一些日常工作中的统计思维应用:

数据质量检查:在建模前,始终检查数据的分布、异常值和缺失模式。一个异常值可能导致模型完全失效。用箱线图和直方图做第一道关卡,用Z-score和IQR做第二道关卡,用业务逻辑做第三道关卡。
实验设计:每次模型改进都需要统计验证。仅看测试集指标是不够的——你需要置信区间和假设检验来确认改进不是随机波动。使用配对t检验比较两个模型的交叉验证分数,比单次比较更可靠。
结果解读:永远不要只报告点估计。R2=0.85和95%CI[0.82,0.88]比单独的0.85更有信息量。p值<0.05不意味着效果显著——还需要看效应量。

概率论的工程应用

在推荐系统中,贝叶斯平滑是处理冷启动问题的经典方法。例如,一个商品只有3个评分(5,5,4),均值4.67可能不可靠。贝叶斯平滑公式:smoothed = (n*mean + m*global_mean)/(n+m),其中m控制先验的强度。当m=10时,这个商品的平滑评分变为(3*4.67+10*4.0)/13=4.15,更接近全局均值,更稳健。

常见统计错误与防范

  1. p-hacking:反复尝试不同分析直到p<0.05。防范:预先注册分析计划,报告所有尝试的检验次数。
  2. 选择性报告:只报告显著结果,忽略不显著的。防范:报告所有分析结果,使用森林图展示完整画面。
  3. 忽略多重比较:20个特征中可能1个"显著"纯属偶然。防范:Bonferroni/BH校正。
  4. 样本量不足:小样本下的"显著"结果不可靠。防范:预先计算所需样本量。

统计学习理论概览

VC维是衡量模型复杂度的理论工具。VC维越高,模型能拟合的函数越复杂,但也越容易过拟合。结构风险最小化(SRM)在经验风险和模型复杂度之间取得平衡:SRM = 经验风险 + 复杂度惩罚。这解释了为什么正则化能防止过拟合——它在做结构风险最小化。

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

📝 课后练习

  1. 实现本课核心算法并用Scikit-learn验证
  2. 调优关键超参数并记录性能变化
  3. 用交叉验证评估模型稳定性
  4. 与之前学过的方法对比分析
  5. 分析本课方法的失效条件
🧠
贝叶斯思维
掌握了用数据更新信念的贝叶斯方法