期望、方差与协方差 -- 数据的数字特征
期望 = 中心在哪。方差 = 散得有多开。协方差 = 两个变量如何联动。
概念解析
期望 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 动手实践
实例
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))输出:
均值=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]]
对称: TrueAI 中的应用场景
Batch Normalization 的数学
对每个 mini-batch 计算均值 μ_B 和方差 σ²_B,然后标准化 $ \hat{x} = (x - \mu_B) / \sqrt{\sigma^2_B + \epsilon}
PCA 降维 = 协方差矩阵特征分解
PCA 的第一步:计算数据的协方差矩阵 $ \Sigma $(d×d 对称矩阵)。第二步:对 $ \Sigma $ 做特征分解,取前 k 个最大特征值对应的特征向量作为主成分方向。这些方向上的方差最大 → 保留了最多信息。
权重初始化的方差控制
Kaiming 初始化:$ Var(W) = 2/n_{in}
Adam 优化器的二阶矩估计
Adam 维护梯度平方的指数移动平均 $ v_t = \beta_2 v_{t-1} + (1-\beta_2)g_t^2 $。这本质上是对「梯度在每个参数方向上的方差」的在线估计。方差大的方向(震荡剧烈)给更小的学习率,方差小的方向(稳定下降)给更大的学习率。
AI 思考中...