Skip to content

期望、方差与协方差 -- 数据的数字特征

期望 = 中心在哪。方差 = 散得有多开。协方差 = 两个变量如何联动。


概念解析

期望 E[X]

加权平均 = 「长期平均结果」

$ \mathbb{E}[X] = \sum x_i P(x_i) $

方差 Var(X)

数据分散程度

$ \mathbb{E}[(X - \mu)^2] $

协方差 Cov(X,Y)

两个变量的联动关系

$ \mathbb{E}[(X-\mu_X)(Y-\mu_Y)] $

协方差矩阵

d 维随机向量的协方差矩阵是 d×d 对称矩阵:$ \Sigma_{ij} = \text{Cov}(X_i, X_j) $。

  • 对角元 = 各特征的方差
  • 非对角元 = 特征之间的协方差

生活例子

两个班级的平均分

A 班和 B 班数学平均分都是 75。但 A 班所有人都在 70~80,B 班有人 30 有人 100。

期望相同,但方差完全不同——方差揭示了「稳定性」的差异。


Python 动手实践

实例

python

import numpy as np

data = np.random.normal(5, 2, 10000)

print(f"均值={np.mean(data):.3f}, 方差={np.var(data):.3f}, 标准差={np.std(data):.3f}")

# 协方差

x = np.random.randn(1000)

y1 = 0.8*x + np.random.randn(1000)*0.3  # 正相关

y2 = -0.8*x + np.random.randn(1000)*0.3 # 负相关

print(f"Cov(X, Y+): {np.cov(x,y1)[0,1]:.3f} (正)")

print(f"Cov(X, Y-): {np.cov(x,y2)[0,1]:.3f} (负)")

# 协方差矩阵

data_3d = np.random.randn(100, 3)

print("\n协方差矩阵:\n", np.round(np.cov(data_3d.T), 3))

print("对称:", np.allclose(np.cov(data_3d.T), np.cov(data_3d.T).T))

输出:

python
均值=4.990, 方差=4.008, 标准差=2.002
Cov(X, Y+): 0.846 (正)
Cov(X, Y-): -0.860 (负)

协方差矩阵:
 [[ 1.03   0.035  0.033]
 [ 0.035  0.89  -0.066]
 [ 0.033 -0.066  0.933]]
对称: True

AI 中的应用场景

Batch Normalization 的数学

对每个 mini-batch 计算均值 μ_B 和方差 σ²_B,然后标准化 $ \hat{x} = (x - \mu_B) / \sqrt{\sigma^2_B + \epsilon} \epsilon $ 是防止除零的小常数(通常 1e-5)。

PCA 降维 = 协方差矩阵特征分解

PCA 的第一步:计算数据的协方差矩阵 $ \Sigma $(d×d 对称矩阵)。第二步:对 $ \Sigma $ 做特征分解,取前 k 个最大特征值对应的特征向量作为主成分方向。这些方向上的方差最大 → 保留了最多信息。

权重初始化的方差控制

Kaiming 初始化:$ Var(W) = 2/n_{in} ReLUXavier Var(W) = 2/(n_{in}+n_{out}) $(tanh 网络)。精确控制每层输出的方差,使得前向传播时激活值方差不变,反向传播时梯度方差不变。初始化不当会导致训练初期就梯度消失/爆炸。

Adam 优化器的二阶矩估计

Adam 维护梯度平方的指数移动平均 $ v_t = \beta_2 v_{t-1} + (1-\beta_2)g_t^2 $。这本质上是对「梯度在每个参数方向上的方差」的在线估计。方差大的方向(震荡剧烈)给更小的学习率,方差小的方向(稳定下降)给更大的学习率。


AI 思考中...

连续随机变量与常见分布

最大似然估计与最大后验估计

基于 VitePress 构建,部署于 GitHub Pages