从一个问题开始
在 AI 模型构建中,为什么有的问题用高斯分布拟合(如回归预测房价),而有的问题用伯努利分布拟合(如二分类预测点击)?数据的“期望”和“方差”在几何上代表什么?
答案就在于概率分布模型与矩特征。这一章我们将梳理 AI 领域 4 大最关键的概率分布,手算期望与方差,并编写 Python 代码对比理论矩与样本采样矩。
把数据分布想象成一名运动员在射箭靶纸上的落点:
- 期望 E[X]:所有箭头的平均中心位置(靶心)。
- 方差 Var(X):箭头落点围绕靶心的散开程度(方差越小,射击稳定性越高)。
- 协方差 Cov(X,Y):横向偏离 X 与纵向偏离 Y 是否存在联动同步趋势。
点击放大查看图:高斯与伯努利分布概率密度对比图
1. AI 领域 4 大核心概率分布
1.1 伯努利分布 (Bernoulli Distribution)
单次试验只有两种结果(成功 1,失败 0),成功概率为 p:
P(X=k)=pk(1−p)1−k,k∈{0,1}
- 期望:E[X]=p,方差:Var(X)=p(1−p)。
1.2 二项分布 (Binomial Distribution)
n 次独立重复的伯努利试验中,成功次数 k 的分布:
P(X=k)=(kn)pk(1−p)n−k
- 期望:E[X]=np,方差:Var(X)=np(1−p)。
1.3 高斯正态分布 (Gaussian / Normal Distribution)
连续随机变量最核心的分布,概率密度函数 (PDF):
f(x)=2πσ21exp(−2σ2(x−μ)2)
- 期望:E[X]=μ,方差:Var(X)=σ2。
1.4 泊松分布 (Poisson Distribution)
单位时间内稀有随机事件发生次数的分布(如客服每分钟接到电话数):
P(X=k)=k!λke−λ
2. 期望、方差与协方差
点击放大查看图:正相关、负相关与零相关二维散点分布与协方差示意图
2.1 期望与方差性质
- 线性期望:E[aX+bY]=aE[X]+bE[Y](对任意变量恒成立)。
- 方差平移缩放:Var(aX+b)=a2Var(X)。
2.2 协方差与相关系数
对于两个随机变量 X 和 Y:
Cov(X,Y)=E[(X−μX)(Y−μY)]=E[XY]−E[X]E[Y]
归一化得到 Pearson 相关系数 ρ:
ρX,Y=σXσYCov(X,Y)∈[−1,1]
3. 手算演练
手算练习:手算高斯分布概率与矩特征
给定高斯随机变量 X∼N(μ=10,σ2=4)(标准差 σ=2):
- 求 X 的期望与方差:
E[X]=μ=10
Var(X)=σ2=4
- 手算标准化变换 Z=σX−μ 的期望与方差:
E[Z]=E[2X−10]=2E[X]−10=210−10=0
Var(Z)=Var[2X−10]=(21)2Var(X)=41×4=1
这严密证明了:任何高斯变量标准化后必变成标准正态分布 N(0,1)!
4. 动手实战:理论矩 vs 样本采样矩对比
下面的代码使用 NumPy 对高斯分布与伯努利分布采样 100,000 个点,比较理论计算值与样本实测值:
高斯与伯努利分布采样及理论矩 vs 样本矩对比代码 import numpy as np
rng = np.random.default_rng(seed=42)
# 1. 模拟高斯分布 N(mu=5.0, sigma^2=2.25) => sigma=1.5
mu_true = 5.0
sigma_true = 1.5
N_samples = 100_000
gaussian_samples = rng.normal(loc=mu_true, scale=sigma_true, size=N_samples)
# 计算样本矩
gaussian_sample_mean = np.mean(gaussian_samples)
gaussian_sample_var = np.var(gaussian_samples)
# 2. 模拟伯努利分布 Bernoulli(p=0.3)
p_true = 0.3
bernoulli_samples = rng.choice([1, 0], size=N_samples, p=[p_true, 1 - p_true])
bernoulli_sample_mean = np.mean(bernoulli_samples)
bernoulli_sample_var = np.var(bernoulli_samples)
print(f"{'分布类型':<12} | {'指标':<8} | {'理论值':<10} | {'样本实测值':<10} | {'绝对误差':<10}")
print("-" * 60)
print(f"{'Gaussian':<12} | {'期望':<8} | {mu_true:<10.4f} | {gaussian_sample_mean:<10.4f} | {abs(gaussian_sample_mean - mu_true):<10.6f}")
print(f"{'Gaussian':<12} | {'方差':<8} | {sigma_true**2:<10.4f} | {gaussian_sample_var:<10.4f} | {abs(gaussian_sample_var - sigma_true**2):<10.6f}")
print(f"{'Bernoulli':<12} | {'期望':<8} | {p_true:<10.4f} | {bernoulli_sample_mean:<10.4f} | {abs(bernoulli_sample_mean - p_true):<10.6f}")
print(f"{'Bernoulli':<12} | {'方差':<8} | {p_true*(1-p_true):<10.4f} | {bernoulli_sample_var:<10.4f} | {abs(bernoulli_sample_var - p_true*(1-p_true)):<10.6f}")
5. 常见错误与避坑指南
|
计算样本方差时混淆 ddof=0 与 ddof=1 | 是否需要无偏估计 | 全量总体用 ddof=0(除以 N);样本估计总体方差必须用 ddof=1(无偏方差,除以 N−1) |
| 以为相关系数 ρ=0 就说明两变量独立 | 是否存在非线性相关性 | 零相关仅说明无线性关系;如果存在 Y=X2 强非线性关系,ρ 也为 0,但变量绝对不独立 |
| 高斯 3-sigma 原理应用错误 | 数据是否符合正态分布 | 只有在数据集符合正态分布时,才满足 99.7% 落在 μ±3σ 内的规律 |
检查清单 (Checklist)
自测题
- 某硬币抛掷 10 次,正面朝上的概率为 0.5。计算正面朝上次数 X 的期望与方差。
- 解释:为什么在计算样本方差时要除以 N−1 而不是除以 N?
- 如果随机变量 X 和 Y 相互独立,且 Var(X)=3,Var(Y)=4,求解 Var(2X−Y) 的值。
- 【代码阅读题】在上一节代码中,为什么当采样样本量 N 从 100 增加到 100,000 时,绝对误差会急剧缩小?
点击查看参考答案
- X∼Binomial(n=10,p=0.5)。期望 E[X]=np=5;方差 Var(X)=np(1−p)=10×0.5×0.5=2.5。
- 因为样本均值 Xˉ 本身是用同一批数据估算出来的,使得样本点围绕样本均值的离散程度偏小。除以 N−1(自由度)可以纠正这种系统性偏小,实现总体方差的无偏估计(Unbiased Estimate)。
- 由于 X 与 Y 独立,Cov(X,Y)=0。根据方差性质,Var(2X−Y)=22Var(X)+(−1)2Var(Y)=4(3)+1(4)=12+4=16。
- 因为满足弱大数定律,大样本采样下样本矩会依概率收敛于总体理论矩。
下一步
进入下一个专项 ,学习弱大数定律、中心极限定理渐进正态收敛与手写 Bootstrap 非参数重采样。
参考资料
- :第 3-4 章 随机变量与连续概率分布。
- :第 3 章 累积分布函数与矩。
- :
scipy.stats 常见分布 API 教程。