期望、方差、协方差与相关系数
一句话概述
期望、方差、协方差和相关系数是描述随机变量"中心"、"离散"、"关联"的四大数字特征。如果说分布是随机变量的"全身照",那这些数字特征就是"身高体重三围"——简洁但信息量丰富。它们在 AI 中无处不在:损失函数是期望的估计,正则化控制方差,PCA 降维依赖协方差矩阵,而特征选择则基于相关系数。
💡 核心要点:①期望是随机变量的"加权平均",是分布的中心位置,也是大数定律的收敛目标 ②方差衡量随机变量围绕期望的离散程度,标准差是其平方根,具有与原变量相同的量纲 ③协方差刻画两个随机变量"同增同减"还是"一增一减"的线性关联,是协方差矩阵和 PCA 的基础 ④相关系数将协方差标准化到 [-1, 1],消除了量纲影响,便于比较不同变量对之间的线性关联强度
教学与演示
一、期望——加权平均
是什么(定义):期望(Expected Value)E[X] 是随机变量 X 的"概率加权平均"。离散:E[X] = Σ x·P(X=x);连续:E[X] = ∫ x·f(x)dx。期望是随机变量"长期平均"的理论值。
大白话 期望就是"如果这件事重复很多很多次,平均结果会是多少"。掷骰子的期望是 3.5——虽然你永远掷不出 3.5 这个点数,但掷一万次的平均点数会非常接近 3.5。期望不一定是"可能的结果",而是"平均意义上的结果"。
为什么(原理):期望的线性性质是最强大的工具:E[aX + bY] = aE[X] + bE[Y],无论 X 和 Y 是否独立!这个性质让复杂的期望计算变得简单。期望还是大数定律的收敛目标——样本均值以概率收敛到期望。在决策论中,期望值最大化是最优决策准则。
怎么做(实现):
import numpy as np
# 演示期望的线性性质
np.random.seed(42) # 固定随机种子
# 两个不独立的随机变量
X = np.random.normal(10, 2, 100000) # N(10, 4)
Y = X * 0.5 + np.random.normal(0, 1, 100000) # Y与X相关:Y = 0.5X + noise
# 验证期望的线性性质
print(f"E[X] = {np.mean(X):.4f}(理论=10)") # X的期望
print(f"E[Y] = {np.mean(Y):.4f}(理论≈5)") # Y的期望
# E[3X + 2Y] = 3E[X] + 2E[Y]
linear_combo = 3 * X + 2 * Y # 线性组合
print(f"E[3X+2Y] = {np.mean(linear_combo):.4f}") # 直接计算
print(f"3E[X]+2E[Y] = {3*np.mean(X) + 2*np.mean(Y):.4f}") # 线性性质计算
print(f"二者相等!(即便X和Y不独立)") # 线性性质成立
# 一个有趣的反直觉例子:期望不一定等于"可能的结果"
dice = np.random.randint(1, 7, 100000) # 掷骰子
print(f"\n掷骰子的期望: {np.mean(dice):.4f}(理论=3.5)") # 期望
print("注意:期望3.5不是一个可能的点数!") # 反直觉
# 大数定律的演示
sample_sizes = [10, 100, 1000, 10000, 100000] # 不同样本量
for n in sample_sizes:
sample_mean = np.mean(np.random.exponential(scale=2.0, size=n)) # 指数分布采样
print(f"n={n:6d}: 样本均值={sample_mean:.4f}(理论期望=2.0)") # 样本量增大→收敛到期望
什么用(应用):在 AI 中,损失函数(如交叉熵、MSE)的期望就是"总体风险"(population risk),我们通过最小化训练集上的经验风险(empirical risk)来近似。强化学习中的状态价值函数 V(s) 和动作价值函数 Q(s,a) 都是期望的定义。Batch Normalization 中的均值就是期望的估计。
哪些坑(缺点):期望不一定存在(如柯西分布没有期望),也不一定是"典型值"(如收入分布中,期望被少数高收入者拉高,远大于中位数)。在决策时,只看期望可能忽略风险——"期望收益 100 万但可能亏 1000 万"和"期望收益 100 万且最多亏 1 万"是完全不同的投资。这就是为什么还需要方差。
二、方差——离散程度
是什么(定义):方差(Variance)Var(X) = E[(X-E[X])²] = E[X²] - (E[X])²,衡量随机变量围绕期望的离散程度。标准差 σ = √Var(X),具有与 X 相同的量纲。
大白话 方差就是"数据有多散"。两个班级的平均分都是 70 分,但 A 班大家分数都差不多(方差小),B 班有人考 100 有人考 30(方差大)。方差大意味着不确定性大、风险大。标准差是方差的平方根,因为方差是"平方"的,量纲不一致(比如身高的方差单位是 cm²),标准差才和原始数据同单位。
为什么(原理):方差公式 E[(X-μ)²] 反映了"平均偏离程度"。平方处罚让远离均值的点贡献更大。方差的性质:Var(aX+b) = a²Var(X)(加常数不改变方差,乘常数方差变为 a² 倍)。对于独立随机变量,Var(X+Y) = Var(X) + Var(Y)。
怎么做(实现):
import numpy as np
# 演示方差:相同均值,不同方差
np.random.seed(42) # 固定种子
n = 10000 # 样本量
# 三个分布,均值都约为0,但方差不同
data_small_var = np.random.normal(0, 1, n) # 方差=1
data_medium_var = np.random.normal(0, 3, n) # 方差=9
data_large_var = np.random.normal(0, 10, n) # 方差=100
print("均值相同(≈0),方差不同:")
print(f"小方差: 均值={np.mean(data_small_var):.4f}, 方差={np.var(data_small_var):.4f}") # 方差≈1
print(f"中方差: 均值={np.mean(data_medium_var):.4f}, 方差={np.var(data_medium_var):.4f}") # 方差≈9
print(f"大方差: 均值={np.mean(data_large_var):.4f}, 方差={np.var(data_large_var):.4f}") # 方差≈100
# 验证方差性质:Var(aX+b) = a²Var(X)
a, b = 3, 5 # 变换参数
transformed = a * data_small_var + b # 线性变换
print(f"\nVar(aX+b) = a²Var(X):")
print(f"Var(X) = {np.var(data_small_var):.4f}") # 原始方差
print(f"Var(aX+b) = {np.var(transformed):.4f}") # 变换后方差
print(f"a²Var(X) = {a**2 * np.var(data_small_var):.4f}") # 理论值
# 独立随机变量之和的方差
x1 = np.random.normal(5, 2, n) # N(5, 4)
x2 = np.random.normal(3, 3, n) # N(3, 9)
sum_var = np.var(x1 + x2) # 和的实际方差
theo_sum_var = np.var(x1) + np.var(x2) # 理论:Var(X1)+Var(X2)
print(f"\n独立变量之和的方差:")
print(f"Var(X1+X2) = {sum_var:.4f}") # 实际方差
print(f"Var(X1)+Var(X2) = {theo_sum_var:.4f}") # 理论方差(应相等,因为独立)
什么用(应用):偏差-方差分解是理解模型泛化性能的核心框架。高偏差意味着欠拟合(模型太简单),高方差意味着过拟合(模型太复杂)。正则化(L1/L2)本质上是通过约束权重来控制方差。模型集成(Bagging、随机森林)通过平均多个模型来降低方差。Batch Normalization 的白化操作也涉及方差标准化。
哪些坑(缺点):方差对异常值敏感(因为是平方惩罚),一个极端值就能显著拉大方差。这时可用 MAD(中位数绝对偏差)或 IQR(四分位距)作为更稳健的离散度度量。另外,方差只描述"平均离散程度",不描述分布的形状,两个完全不同的分布可以有相同的均值和方差。
三、协方差——两个变量的协同变化
是什么(定义):协方差(Covariance)Cov(X,Y) = E[(X-E[X])(Y-E[Y])] = E[XY] - E[X]E[Y],衡量两个随机变量"同向变化"还是"反向变化"的趋势。
大白话 协方差就像"默契度":X 变大的时候 Y 也变大(一同涨),协方差为正;X 变大 Y 变小(一个涨一个跌),协方差为负。协方差为 0 表示两者没有线性关联。但注意:协方差的大小受量纲影响——如果把身高从"米"换成"厘米",协方差会放大 10000 倍!
为什么(原理):协方差是线性关联的度量。公式 (X-μ_X)(Y-μ_Y) 的正负决定了乘积的符号:同向偏离均值时乘积为正,反向偏离时乘积为负。独立必导致协方差为 0,但协方差为 0 不一定独立(可能有非线性关联,如 Y=X²)。协方差矩阵 Σ = Cov(X, X) 是多元统计的基础。
怎么做(实现):
import numpy as np
# 演示协方差:正相关、负相关、不相关
np.random.seed(42) # 固定种子
n = 10000 # 样本量
# 正相关:X和Y同向变化
X_pos = np.random.normal(0, 1, n) # 标准正态
Y_pos = 0.8 * X_pos + np.random.normal(0, 0.5, n) # Y = 0.8X + noise
cov_pos = np.cov(X_pos, Y_pos)[0, 1] # 计算协方差
print(f"正相关协方差: {cov_pos:.4f}") # 应为正
# 负相关:X和Y反向变化
X_neg = np.random.normal(0, 1, n) # 标准正态
Y_neg = -0.8 * X_neg + np.random.normal(0, 0.5, n) # Y = -0.8X + noise
cov_neg = np.cov(X_neg, Y_neg)[0, 1] # 计算协方差
print(f"负相关协方差: {cov_neg:.4f}") # 应为负
# 不相关(独立)
X_ind = np.random.normal(0, 1, n) # 标准正态
Y_ind = np.random.normal(0, 1, n) # 独立标准正态
cov_ind = np.cov(X_ind, Y_ind)[0, 1] # 计算协方差
print(f"独立协方差: {cov_ind:.4f}(应接近0)") # 应接近0
# 演示协方差矩阵
data = np.column_stack([X_pos, Y_pos]) # 合并为二维数据
cov_matrix = np.cov(data, rowvar=False) # 计算协方差矩阵
print(f"\n协方差矩阵:")
print(f"[[{cov_matrix[0,0]:.4f}, {cov_matrix[0,1]:.4f}]") # Var(X), Cov(X,Y)
print(f" [{cov_matrix[1,0]:.4f}, {cov_matrix[1,1]:.4f}]]") # Cov(Y,X), Var(Y)
print("对角线是方差,非对角线是协方差(对称矩阵)") # 对称矩阵
什么用(应用):协方差矩阵是 PCA(主成分分析)的核心——PCA 对协方差矩阵做特征分解,找到方差最大的方向(主成分)。在金融中,协方差矩阵用于投资组合优化(马科维茨模型)。在卡尔曼滤波中,协方差矩阵描述状态估计的不确定性。在多元正态分布中,协方差矩阵决定分布的形状和方向。
哪些坑(缺点):协方差的值受量纲影响,无法直接比较不同变量对的关联强度。另外,协方差只能捕捉线性关联——如果 X 和 Y 的关系是 Y = X²,它们的协方差可能为 0(对称分布时),但显然不是独立的。这时需要互信息(Mutual Information)等更一般的关联度量。
四、相关系数——标准化的协方差
是什么(定义):皮尔逊相关系数(Pearson Correlation Coefficient)ρ(X,Y) = Cov(X,Y) / (σ_X · σ_Y),取值范围 [-1, 1]。ρ=1 表示完全正线性相关,ρ=-1 表示完全负线性相关,ρ=0 表示无线性相关。
大白话 相关系数就是"把协方差标准化到 [-1, 1] 之间"。协方差告诉你"关系是正还是负",但数值大小没法直接用(受量纲影响)。相关系数消除了量纲,让你可以公平比较——身高和体重的关系、温度和销量的关系,都可以用相关系数比较。
为什么(原理):相关系数本质上是"标准化后"的协方差。如果先对 X 和 Y 做标准化(减均值除标准差),得到 Z_X = (X-μ_X)/σ_X, Z_Y = (Y-μ_Y)/σ_Y,那么 Cov(Z_X, Z_Y) = ρ(X,Y)。这样就把所有变量拉到同一尺度上比较。|ρ| 越接近 1,线性关系越强;|ρ| 越接近 0,线性关系越弱。
怎么做(实现):
import numpy as np
# 演示相关系数:不同强度、不同方向的线性关系
np.random.seed(42) # 固定种子
n = 10000 # 样本量
# 生成不同相关系数的数据
correlations = {} # 存储不同相关强度的数据
for rho in [0.0, 0.3, 0.6, 0.9, -0.6]:
X = np.random.normal(0, 1, n) # 标准正态
noise = np.random.normal(0, np.sqrt(1 - rho**2), n) # 噪声,控制相关系数
Y = rho * X + noise # Y = ρX + noise
correlations[f"ρ={rho}"] = np.corrcoef(X, Y)[0, 1] # 计算实际相关系数
for label, est_rho in correlations.items():
print(f"{label} → 实际计算: {est_rho:.4f}") # 验证理论值
# 演示:相关系数不受量纲影响
height_cm = np.random.normal(170, 10, n) # 身高cm
weight_kg = 0.6 * height_cm + np.random.normal(0, 8, n) # 体重kg(与身高相关)
# 变换单位
height_m = height_cm / 100 # 身高换成米
weight_g = weight_kg * 1000 # 体重换成克
rho_original = np.corrcoef(height_cm, weight_kg)[0, 1] # 原始单位
rho_changed = np.corrcoef(height_m, weight_g)[0, 1] # 变换单位后
print(f"\n相关系数不受量纲影响:")
print(f"身高cm vs 体重kg: ρ = {rho_original:.4f}") # 原始
print(f"身高m vs 体重g: ρ = {rho_changed:.4f}") # 变换后(应相等)
print("相关系数不变!这就是标准化的威力") # 量纲不变性
什么用(应用):特征选择中,删除与其他特征高度相关(|ρ|>0.9)的冗余特征,减少多重共线性。在探索性数据分析(EDA)中,相关系数矩阵热力图是理解变量间关系的标准工具。推荐系统中,皮尔逊相关系数用于计算用户或物品间的相似度。在金融风控中,相关系数衡量不同资产的风险联动。
哪些坑(缺点):相关系数有几个著名的陷阱:①只衡量线性关系——Y=X² 的相关系数可能为 0,但显然强相关;②对异常值敏感——一个离群点就能把相关系数从 0.9 拉到 0.2;③安斯库姆四重奏(Anscombe's Quartet)——四组数据有完全相同的均值、方差、相关系数,但可视化后完全不同。因此,永远不要只看相关系数,一定要画散点图!
五、AI中的协方差——PCA的基础
是什么(定义):主成分分析(PCA)通过对数据协方差矩阵进行特征分解,找到数据方差最大的方向(主成分),实现降维。本质上,PCA 是在寻找一个线性变换,使得变换后的各维度协方差为 0(去相关),且方差递减(信息浓缩)。
大白话 你有 100 个特征,但很多特征其实说的是同一件事(比如"身高"和"腿长"高度相关)。PCA 就是帮你找到"最重要的几个方向",把 100 维压缩到 10 维,同时尽量保留信息。它的核心操作就是:算协方差矩阵 → 找特征值和特征向量 → 取最大的几个特征向量做投影。
为什么(原理):协方差矩阵的特征向量代表"数据变化的主要方向",特征值代表"该方向上的方差大小"。PCA 选择最大的 k 个特征值对应的特征向量作为投影方向,将原始数据投影到 k 维子空间。这等价于最小化重构误差(MSE)。PCA 假设数据是零均值的,通常需要先做中心化。
怎么做(实现):
import numpy as np
# 生成二维相关数据,演示PCA
np.random.seed(42) # 固定种子
n = 1000 # 样本量
# 生成线性相关的二维数据
X_raw = np.random.normal(0, 3, n) # 第一维
Y_raw = 2 * X_raw + np.random.normal(0, 1, n) # 第二维与第一维强相关
data = np.column_stack([X_raw, Y_raw]) # 合并为二维数据
# 1. 中心化(减均值)
data_centered = data - np.mean(data, axis=0) # 零均值化
# 2. 计算协方差矩阵
cov_matrix = np.cov(data_centered, rowvar=False) # 协方差矩阵
# 3. 特征分解
eigenvalues, eigenvectors = np.linalg.eigh(cov_matrix) # 特征值分解
# 按特征值降序排列
idx = np.argsort(eigenvalues)[::-1] # 降序索引
eigenvalues = eigenvalues[idx] # 排序后的特征值
eigenvectors = eigenvectors[:, idx] # 排序后的特征向量
print("协方差矩阵的特征值(方差大小):")
print(f"λ1 = {eigenvalues[0]:.4f}(主成分方向方差)") # 第一主成分方差
print(f"λ2 = {eigenvalues[1]:.4f}(第二主成分方差)") # 第二主成分方差
print(f"方差解释比例: {eigenvalues[0]/np.sum(eigenvalues):.2%}") # 第一主成分解释比例
# 4. 投影到主成分
pc1 = data_centered @ eigenvectors[:, 0] # 投影到第一主成分
pc2 = data_centered @ eigenvectors[:, 1] # 投影到第二主成分
# 验证:PCA变换后协方差为0(去相关)
pca_data = np.column_stack([pc1, pc2]) # 合并PCA坐标
pca_cov = np.cov(pca_data, rowvar=False) # PCA后的协方差矩阵
print(f"\nPCA变换后的协方差矩阵(应接近对角矩阵):")
print(f"[[{pca_cov[0,0]:.4f}, {pca_cov[0,1]:.4f}]") # 对角线上是方差
print(f" [{pca_cov[1,0]:.4f}, {pca_cov[1,1]:.4f}]]") # 非对角线约为0(去相关)
print("非对角线接近0,说明PCA成功去除了相关性!") # 去相关成功
什么用(应用):PCA 是最经典的线性降维方法,用于数据可视化(降到 2D/3D)、特征压缩(减少计算量)、去噪(丢弃小特征值对应分量)。在图像处理中,PCA 用于 Eigenfaces(特征脸)人脸识别。在 NLP 中,PCA 曾用于词向量降维。在推荐系统中,SVD 用于矩阵分解协同过滤。
哪些坑(缺点):PCA 是线性降维,无法处理非线性结构(需用 t-SNE、UMAP 等非线性方法)。PCA 对尺度敏感——如果某个特征的方差天然很大(如收入 vs 年龄),PCA 会优先保留该特征,所以在做 PCA 之前通常需要标准化。PCA 的可解释性差——主成分是原始特征的线性组合,往往难以赋予物理含义。
概念关系图谱
| 概念 | 核心含义 | 与AI的关系 | 关联概念 |
|---|---|---|---|
| 期望 E[X] | 概率加权平均,分布的"中心" | 损失函数的总体期望、Q值函数 | 方差、大数定律 |
| 方差 Var(X) | 偏离均值的平方平均,离散程度 | 偏差-方差分解、正则化、模型集成 | 期望、标准差、协方差 |
| 标准差 σ | 方差的平方根,同量纲 | 标准化、BatchNorm、异常检测 | 方差、正态分布 |
| 协方差 Cov(X,Y) | 线性协同变化趋势 | PCA、协方差矩阵、白化 | 相关系数、方差 |
| 相关系数 ρ | 标准化后的协方差 [-1,1] | 特征选择、相似度、共线性诊断 | 协方差、标准化 |
| 协方差矩阵 Σ | 多元方差-协方差矩阵 | PCA、多元正态分布、卡尔曼滤波 | 协方差、特征值 |
| 偏差-方差分解 | MSE = Bias² + Variance + Noise | 模型选择、过拟合/欠拟合诊断 | 方差、期望 |
| PCA | 协方差矩阵特征分解降维 | 数据压缩、去噪、可视化 | 协方差矩阵、特征值 |
| 线性性质 | E[aX+bY]=aE[X]+bE[Y] | 损失函数推导、梯度计算 | 期望、独立性 |
| 标准化 | Z=(X-μ)/σ → 均值0方差1 | BatchNorm、数据预处理 | 期望、标准差 |
重点答疑
Q1: 期望为什么叫"期望"?它真的是我们"期望"的值吗?
这个名字来源于赌博——比如一个赌局有 50% 概率赢 100 元,50% 概率输 50 元,期望收益 = 0.5×100 + 0.5×(-50) = 25 元。这个 25 元就是你"期望"的平均收益。但现实生活中,期望不一定是"期待的结果"——比如收入期望是 10 万,但你可能只赚 5 万(因为收入分布右偏,少数富人的高收入拉高了期望)。所以期望更准确的叫法是"概率加权平均"。
Q2: 协方差为 0 就一定独立吗?为什么?
不!协方差只衡量线性关系。经典反例:X ~ N(0,1),Y = X²。Cov(X, Y) = E[X·X²] - E[X]·E[X²] = E[X³] - 0 = 0(正态分布的三阶矩为 0)。但 X 和 Y 显然不是独立的——知道了 X 就完全知道了 Y。所以协方差为 0 只是"无线性相关",不能推断"独立"。独立 ⇒ 协方差为 0,但反过来不成立。
Q3: PCA 为什么用协方差矩阵而不是相关系数矩阵?
都可以用,但结果不同。用协方差矩阵时,PCA 会被方差大的特征"主导"(比如收入方差天然比年龄方差大,PCA 会优先保留收入方向)。用相关系数矩阵(等价于先标准化再做 PCA)时,所有特征被平等对待,每个特征方差都是 1。实践中,如果特征量纲差异大,建议先标准化(等价于用相关系数矩阵做 PCA)。如果特征量纲相同且希望保留方差信息,直接使用协方差矩阵。
章节单词汇总
| 英文 | 音标 | 术语/释义 |
|---|---|---|
| Expected Value | /ɪkˈspektɪd ˈvæljuː/ | 期望值,概率加权平均 |
| Variance | /ˈveriəns/ | 方差,离散程度的度量 |
| Standard Deviation | /ˈstændərd ˌdiːviˈeɪʃən/ | 标准差,方差的平方根 |
| Covariance | /koʊˈveriəns/ | 协方差,两个变量的线性关联度量 |
| Correlation Coefficient | /ˌkɔːrəˈleɪʃən ˌkoʊɪˈfɪʃənt/ | 相关系数,标准化的协方差 [-1,1] |
| Covariance Matrix | /koʊˈveriəns ˈmeɪtrɪks/ | 协方差矩阵,多元方差-协方差矩阵 |
| Bias-Variance Decomposition | /ˈbaɪəs ˈveriəns ˌdiːkɒmpəˈzɪʃən/ | 偏差-方差分解,MSE的分解 |
| PCA | /piː siː eɪ/ | 主成分分析,线性降维方法 |
| Eigenvalue | /ˈaɪɡənˌvæljuː/ | 特征值,PCA中主成分的方差 |
| Eigenvector | /ˈaɪɡənˌvektər/ | 特征向量,PCA中主成分的方向 |
| Multicollinearity | /ˌmʌltikoʊˌlɪniˈærəti/ | 多重共线性,特征间高度相关 |
| Whitening | /ˈwaɪtənɪŋ/ | 白化,使协方差矩阵变为单位矩阵 |
| Anscombe's Quartet | /ˈænskəmz kwɔːrˈtet/ | 安斯库姆四重奏,相关系数的可视化警示 |
| Standardization (Z-score) | /ˌstændərdaɪˈzeɪʃən/ | 标准化,将数据转换为均值0标准差1 |
面试练习
Q1 [单选] 如果 E[X]=2, E[Y]=3,且 X 和 Y 不独立,则 E[2X+3Y] 等于?
- A. 无法确定(因为不独立)
- B. 13
- C. 需要独立条件
- D. 10
解答:E[2X+3Y] = 2E[X] + 3E[Y] = 4+9 = 13。期望的线性性质不要求独立性!这是期望最强大的性质,无论 X 和 Y 是什么关系都成立。
Q2 [单选] 方差 Var(X) = 4,则 Var(3X+5) 等于?
- A. 12
- B. 17
- C. 36
- D. 41
解答:Var(3X+5) = 3²Var(X) = 9×4 = 36。加常数不改变方差(平移不改变离散程度),乘常数后方差变为原来的常数平方倍。
Q3 [多选] 关于协方差和相关系数,正确的有?
- A. 相关系数是标准化的协方差,取值范围 [-1,1]
- B. 协方差为 0 不一定意味着独立
- C. 相关系数为 0 一定意味着独立
- D. 协方差受量纲影响,相关系数不受量纲影响
解答:A 正确。B 正确,协方差为 0 只是无线性相关。C 错误,与 B 同理,ρ=0 只说明无线性相关,可能有非线性关系。D 正确,相关系数消除了量纲影响。
Q4 [单选] 在偏差-方差分解中,增加模型复杂度通常会导致?
- A. 偏差和方差都减小
- B. 偏差减小,方差增大
- C. 偏差增大,方差减小
- D. 偏差和方差都增大
解答:增加模型复杂度 → 模型更灵活 → 能更好地拟合训练数据 → 偏差减小。但灵活也意味着对训练数据的微小变化敏感 → 方差增大。这就是偏差-方差权衡。
Q5 [多选] 关于 PCA,以下哪些是正确的?
- A. PCA 通过对协方差矩阵特征分解来实现
- B. PCA 变换后的各维度是不相关的(协方差为 0)
- C. PCA 可以处理非线性数据结构
- D. PCA 在做降维前通常需要先对数据做中心化(零均值)
解答:A 正确,PCA 的核心就是协方差矩阵的特征分解。B 正确,PCA 变换后协方差矩阵为对角矩阵,各维度去相关。C 错误,PCA 是线性降维,非线性需用 t-SNE、UMAP 等。D 正确,中心化是 PCA 的必要预处理步骤。
Q6 [单选] 两个随机变量 X 和 Y,如果 Y = X² 且 X 关于 0 对称分布,则相关系数 ρ 最接近?
- A. 1
- B. -1
- C. 0
- D. 0.5
解答:如果 X 关于 0 对称(如标准正态分布),Cov(X, X²) = E[X³] - E[X]E[X²] = 0 - 0 = 0,所以 ρ ≈ 0。但 X 和 Y 显然不是独立的——这是相关系数不能反映非线性关系的经典例子。
Q7 [单选] 假设特征 A 和特征 B 的相关系数为 0.95,在特征选择中通常应该?
- A. 同时保留两个特征
- B. 删除其中一个特征
- C. 删除两个特征
- D. 对两个特征取平均后保留
解答:|ρ|=0.95 表示两个特征几乎在说同一件事,高度冗余。保留两个会导致多重共线性问题(模型不稳定、系数估计不可靠)。通常删除其中一个即可。
Q8 [多选] 以下哪些是方差的性质?
- A. Var(X+b) = Var(X)(平移不变性)
- B. Var(aX) = a²Var(X)
- C. 独立时 Var(X+Y) = Var(X) + Var(Y)
- D. Var(X) 总是小于 E[X²]
解答:A、B、C 都是方差的基本性质。D 错误,Var(X) = E[X²] - (E[X])²,所以 Var(X) ≤ E[X²],当 E[X]=0 时 Var(X) = E[X²],所以"总是小于"不成立(可能等于)。
Q9 [单选] 协方差矩阵是什么样的矩阵?
- A. 非对称矩阵
- B. 对称半正定矩阵
- C. 非对称正定矩阵
- D. 对角矩阵
解答:Cov(X_i, X_j) = Cov(X_j, X_i),所以协方差矩阵是对称的。对任意向量 v,v^T Σ v = Var(v^T X) ≥ 0,所以是半正定的。PCA 的特征分解正是利用了这两个性质。
Q10 [单选] 下面的哪个场景中,期望的解释最可能产生误导?
- A. 掷骰子的期望点数 3.5
- B. 抛公平硬币的期望正面次数
- C. 一个国家的平均收入(存在极端高收入者)
- D. 多次测量同一长度取平均值
解答:在收入分布中,少数高收入者会大幅拉高期望(均值),使得均值远大于中位数。此时"平均收入"并不能很好地代表"典型收入",中位数是更好的中心度量。这就是为什么期望虽然是"最佳中心"(最小化 MSE),但不一定是最"典型"的。