统计基础

第01课:概率与统计

概率论基础、条件概率、全概率公式、贝叶斯推断、大数定律、中心极限定理

1. 概率论基础

1.1 随机试验与样本空间

随机试验是可以在相同条件下重复进行、结果事先不确定的观察过程。所有可能结果的集合称为样本空间 Ω。

概念定义示例
随机试验可重复、结果不确定抛硬币
样本空间 Ω所有可能结果的集合正面,反面
样本点 ω单个可能结果正面
事件样本空间的子集出现正面

1.2 概率的公理化定义(Kolmogorov公理)

概率函数 P 必须满足三条公理:

  1. 非负性: P(A) ≥ 0
  2. 规范性: P(Ω) = 1
  3. 可列可加性: 若 A₁, A₂, ... 互不相容,则 P(⋃Aᵢ) = ΣP(Aᵢ)

1.3 古典概型与几何概型

古典概型: Ω 有限且各样本点等概率 → P(A) = |A|/|Ω|

几何概型: Ω 为 ℝⁿ 中的可度量区域 → P(A) = m(A)/m(Ω)

1.4 条件概率

P(A|B) = P(A∩B) / P(B),当 P(B) > 0

条件概率是理解贝叶斯方法、隐马尔可夫模型等的核心工具。

1.5 全概率公式与贝叶斯公式

全概率公式: 若 B₁,...,Bₙ 是 Ω 的一个划分,则 P(A) = Σᵢ P(A|Bᵢ)P(Bᵢ)

贝叶斯公式: P(Bⱼ|A) = P(A|Bⱼ)P(Bⱼ) / Σᵢ P(A|Bᵢ)P(Bᵢ)

贝叶斯公式将"由因推果"转化为"由果推因",是朴素贝叶斯分类器的理论基础。

2. 大数定律

2.1 弱大数定律(辛钦)

设 X₁,X₂,... 独立同分布,E[Xᵢ]=μ,则对任意 ε>0:lim(n→∞) P(|X̄ₙ - μ| < ε) = 1

直觉: 样本均值依概率收敛到期望值。抛1000次硬币,正面比例接近0.5。

2.2 强大数定律

P(lim(n→∞) X̄ₙ = μ) = 1

机器学习意义: 经验风险最小化的理论保证——训练误差趋向真实风险。

3. 中心极限定理

设 X₁,...,Xₙ 独立同分布,E[Xᵢ]=μ,Var[Xᵢ]=σ²,则 √n(X̄ₙ - μ)/σ →ᵈ N(0,1)

这是统计学最重要的定理之一:无论原始分布是什么,大量独立同分布随机变量之和的标准化形式趋向标准正态分布。

应用: 构建置信区间、假设检验中的Z检验、解释为什么正态分布在自然界中如此普遍

4. 随机变量的数字特征

4.1 期望

E[X] = Σ xₖpₖ(离散)或 E[X] = ∫xf(x)dx(连续)

性质: E[aX+bY] = aE[X]+bE[Y](线性性,不要求独立)

4.2 方差

Var[X] = E[(X-μ)²] = E[X²] - (E[X])²

性质: Var[aX+b] = a²Var[X]

4.3 协方差与相关系数

Cov(X,Y) = E[(X-μₓ)(Y-μᵧ)] = E[XY] - E[X]E[Y]

ρ(X,Y) = Cov(X,Y)/(σₓσᵧ)

Python代码实现与验证

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

完整代码


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

print("=== 大数定律验证 ===")
for n in [10, 100, 1000, 10000, 100000]:
    samples = np.random.binomial(1, 0.5, n)
    print("n={:>6}: P(正面)={:.4f}".format(n, samples.mean()))

print("\n=== 中心极限定理验证 ===")
sample_means = [np.random.exponential(2, 100).mean() for _ in range(10000)]
print("样本均值: mean={:.4f}, std={:.4f}".format(np.mean(sample_means), np.std(sample_means)))
print("理论值: mean=2.0, std={:.4f}".format(2/np.sqrt(100)))

print("\n=== 贝叶斯定理验证 ===")
p_disease = 0.001
p_pos_given_d = 0.99
p_neg_given_h = 0.99
p_pos = p_disease * p_pos_given_d + (1-p_disease) * (1-p_neg_given_h)
p_d_given_pos = p_disease * p_pos_given_d / p_pos
print("P(病|阳性) = {:.4f} = {:.2f}%".format(p_d_given_pos, p_d_given_pos*100))

print("\n=== 期望方差验证 ===")
n, p = 10, 0.3
s = np.random.binomial(n, p, 100000)
print("B({},{}) 均值={:.3f}(理论{}), 方差={:.3f}(理论{:.3f})".format(n, p, s.mean(), n*p, s.var(), n*p*(1-p)))

print("\n=== 协方差验证 ===")
X = np.random.normal(0, 1, 10000)
Y = 0.7*X + np.random.normal(0, 0.7, 10000)
print("Cov(X,Y)={:.4f}, Corr(X,Y)={:.4f}".format(np.cov(X,Y)[0,1], np.corrcoef(X,Y)[0,1]))

运行结果

=== 大数定律验证 === n= 10: P(正面)=0.6000 n= 100: P(正面)=0.4500 n= 1000: P(正面)=0.5050 n= 10000: P(正面)=0.4940 n=100000: P(正面)=0.5016 === 中心极限定理验证 === 样本均值: mean=2.0029, std=0.2021 理论值: mean=2.0, std=0.2000 === 贝叶斯定理验证 === P(病|阳性) = 0.0902 = 9.02% === 期望方差验证 === B(10,0.3) 均值=2.994(理论3.0), 方差=2.085(理论2.100) === 协方差验证 === Cov(X,Y)=0.6872, Corr(X,Y)=0.7007
✅ 验证通过

深入理解:概率论在机器学习中的角色

概率论的三大应用

概率论在机器学习中扮演着三个核心角色:

1. 建模工具:概率分布是生成模型的基础。朴素贝叶斯、高斯混合模型、隐马尔可夫模型等都直接基于概率分布构建。
2. 推断框架:贝叶斯推断提供了一种优雅的参数估计方法——用数据更新先验信念,得到后验分布。这在不确定性量化中尤其重要。
3. 理论保证:大数定律和中心极限定理为机器学习提供了泛化性的理论基础——训练误差趋向真实风险,样本均值的分布有已知的极限行为。

常见概率分布速查表

分布参数均值方差ML应用
Bernoulli(p)p∈[0,1]pp(1-p)二分类标签
B(n,p)n∈ℕ,p∈[0,1]npnp(1-p)A/B测试
Poisson(λ)λ>0λλ计数数据
N(μ,σ²)μ∈ℝ,σ>0μσ²噪声模型
Exp(λ)λ>01/λ1/λ²等待时间
Beta(α,β)α,β>0α/(α+β)αβ/((α+β)²(α+β+1))贝叶斯推断

概率论思维陷阱

⚠️ 常见误区
  1. 赌徒谬误:独立事件不会因为之前的结果而改变概率。连续10次正面,第11次正面的概率仍是0.5。
  2. 基础概率忽视:只看条件概率P(阳性|病)而忽略先验P(病)。低发病率下即使高灵敏度,阳性预测值也很低。
  3. 混淆P(A|B)和P(B|A):P(检测阳性|有病)≠P(有病|检测阳性)。检察官谬误就是混淆了这两个概率。
  4. 幸存者偏差:只看到经过筛选后的结果,忽略被筛选掉的数据。二战飞机装甲问题就是经典案例。

延伸阅读

实践案例与深入分析

统计思维在日常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. 用Python模拟10000次抛硬币实验,验证大数定律
  2. 从指数分布抽样,验证中心极限定理
  3. 计算:疾病发病率0.5%,灵敏度95%,特异度90%,阳性时真实患病概率
  4. 证明若A和B独立,则P(A|B)=P(A)
  5. 思考:为什么朴素贝叶斯即使独立性假设不成立仍效果好
🎲
概率之门
掌握了概率论基础,迈出了机器学习第一步