这份复习资料是基于 MIT 18.650 (Statistics for Applications) 第 9 章课件 Principal Component Analysis (PCA) 编写的。

这份资料旨在不仅仅列出公式,而是深入解释**“为什么要这样做”以及“背后的统计学/线性代数原理是什么”**,非常适合作为考前复习或深度学习的参考。


📘 复习参考资料:主成分分析 (PCA)

1. 核心动机与直觉 (Motivation & Intuition)

1.1 为什么需要 PCA?

  • 高维灾难:当数据维度 dd 很大(例如 d>3d > 3)时,我们无法直观地绘制或理解数据云(Cloud of points)。
  • 数据压缩:我们希望用更少的维度 (d<dd' < d) 来描述数据,同时损失尽可能少的信息。

1.2 什么是“信息”?

在 PCA 中,有一个核心假设:

信息 (Information) \approx 方差 (Variance/Spread)

  • 解释:如果数据在某个方向上分布非常广(方差大),说明这个方向区分度高,包含了很多信息。如果数据在某个方向上都挤在一起(方差 0\approx 0),说明在这个方向上所有样本都差不多,这个维度是多余的(或是噪声)。
  • 目标:找到一个新的坐标系,使得数据在新的坐标轴上投影后,方差最大。

2. 数学基础与符号定义 (Mathematical Foundations)

2.1 数据矩阵

  • dd:数据的原始维度。
  • nn:样本数量。
  • X1,,Xn\mathbf{X}_1, \dots, \mathbf{X}_nnn 个独立的随机向量,每个都在 Rd\mathbb{R}^d 空间中。
  • X\mathbb{X}n×dn \times d 的数据矩阵,每一行是一个样本。

2.2 总体 vs. 样本 (Population vs. Sample)

统计学中始终要把“上帝视角的真值”和“手中数据的观测值”区分开。

概念 总体 (Population) 样本 (Sample / Empirical)
均值 E[X]\mathbb{E}[\mathbf{X}] Xˉ=1ni=1nXi\bar{\mathbf{X}} = \frac{1}{n} \sum_{i=1}^n \mathbf{X}_i
协方差矩阵 Σ=E[(Xμ)(Xμ)]\Sigma = \mathbb{E}[(\mathbf{X}-\mu)(\mathbf{X}-\mu)^\top] S=1ni=1n(XiXˉ)(XiXˉ)S = \frac{1}{n} \sum_{i=1}^n (\mathbf{X}_i - \bar{\mathbf{X}})(\mathbf{X}_i - \bar{\mathbf{X}})^\top

2.3 样本协方差矩阵 SS 的性质

矩阵 SS 是 PCA 的核心计算对象。

  1. 维度d×dd \times d
  2. 对称性S=SS = S^\top
  3. 半正定性:对于任意向量 u\mathbf{u}uSu0\mathbf{u}^\top S \mathbf{u} \ge 0
  4. 矩阵形式计算

    S=1nXHXS = \frac{1}{n} \mathbb{X}^\top H \mathbb{X}

    其中 H=In1n11H = I_n - \frac{1}{n}\mathbf{1}\mathbf{1}^\top中心化矩阵 (Centering Matrix)。它是一个正交投影矩阵(H2=H,H=HH^2=H, H^\top=H),作用是将数据的均值平移到原点。

2.4 关键几何解释 (考试/理解重点)

对于任意单位方向向量 u\mathbf{u} (u2=1\|\mathbf{u}\|_2 = 1):

Quantity: uSu\text{Quantity: } \mathbf{u}^\top S \mathbf{u}

  • 含义:这个标量代表了数据集在方向 u\mathbf{u} 上投影后的样本方差
  • PCA 的任务:寻找 u\mathbf{u} 使得 uSu\mathbf{u}^\top S \mathbf{u} 最大化。

3. 核心原理:谱分解 (Spectral Decomposition)

如何找到方差最大的方向?利用线性代数的谱分解定理。

3.1 分解公式

因为 SS 是实对称矩阵,它一定可以分解为:

S=PDPS = P D P^\top

  • P=[v1,,vd]P = [\mathbf{v}_1, \dots, \mathbf{v}_d]:是一个 d×dd \times d正交矩阵 (PP=IP P^\top = I)。其列向量 vj\mathbf{v}_jSS特征向量 (Eigenvectors)
  • D=diag(λ1,,λd)D = \text{diag}(\lambda_1, \dots, \lambda_d):是一个对角矩阵。对角元 λj\lambda_jSS特征值 (Eigenvalues)

排序约定:通常将特征值按从大到小排序:λ1λ2λd0\lambda_1 \ge \lambda_2 \ge \dots \ge \lambda_d \ge 0

3.2 特征值与方差的对应关系

这是一个非常优雅的结论:

  • vj\mathbf{v}_j (特征向量) = 第 jj 个主成分的方向
  • λj\lambda_j (特征值) = 数据在 vj\mathbf{v}_j 方向上的经验方差

即:vjSvj=λj\mathbf{v}_j^\top S \mathbf{v}_j = \lambda_j

3.3 PCA 优化原理 (Main Principle)

PCA 本质上是在解一系列的优化问题:

  1. 第一主成分 (v1\mathbf{v}_1)
    • 寻找 u\mathbf{u} (u=1\|\mathbf{u}\|=1) 最大化 uSu\mathbf{u}^\top S \mathbf{u}
    • v1\mathbf{v}_1 (对应最大特征值 λ1\lambda_1)。
  2. 第二主成分 (v2\mathbf{v}_2)
    • 寻找 u\mathbf{u} (u=1\|\mathbf{u}\|=1) 最大化 uSu\mathbf{u}^\top S \mathbf{u},且必须垂直于 v1\mathbf{v}_1 (uv1\mathbf{u} \perp \mathbf{v}_1)。
    • v2\mathbf{v}_2 (对应第二大特征值 λ2\lambda_2)。
  3. …以此类推。

4. 算法流程 (Algorithm)

实际操作中如何执行 PCA?

  1. 输入nn 个数据点 X1,,Xn\mathbf{X}_1, \dots, \mathbf{X}_n
  2. 中心化与协方差:计算样本协方差矩阵 SS
  3. 特征分解:计算 SS 的特征值和特征向量,并按特征值降序排列。
  4. 降维决策:选择前 kk 个主成分 (k<dk < d)。
    • 构造投影矩阵 Pk=[v1,,vk]Rd×kP_k = [\mathbf{v}_1, \dots, \mathbf{v}_k] \in \mathbb{R}^{d \times k}
  5. 投影 (输出):将原始数据投影到低维空间。
    • 新的数据点 YiRk\mathbf{Y}_i \in \mathbb{R}^k 计算公式为:

    Yi=PkXi\mathbf{Y}_i = P_k^\top \mathbf{X}_i


5. 如何选择维度 kk

这是实际应用中最常见的问题。

5.1 碎石图 (Scree Plot)

  • 画出特征值 λi\lambda_iii 变化的曲线。
  • 寻找拐点 (Inflection point):即曲线从急剧下降变为平缓的地方。拐点之前的 kk 通常被保留。

5.2 解释方差比例 (Explained Variance Ratio)

  • 总方差 (Total Variance):等于协方差矩阵的迹 (Trace),即 Tr(S)=j=1dλj\text{Tr}(S) = \sum_{j=1}^d \lambda_j
  • kk 个成分解释的方差i=1kλi\sum_{i=1}^k \lambda_i
  • 标准:设定一个阈值 α\alpha (如 0.05,意味着保留 95% 的信息)。

    i=1kλij=1dλj1α\frac{\sum_{i=1}^k \lambda_i}{\sum_{j=1}^d \lambda_j} \ge 1 - \alpha

    选择满足上述不等式的最小 kk

6. 统计学视角与进阶 (Beyond Practice)

这部分是 18.650 课程特有的统计学深度视角。

6.1 估计的一致性

  • 场景 A:ndn \gg d (传统统计学)

    • 当样本量远大于维度时,样本协方差 SS 是总体协方差 Σ\Sigma一致估计量 (Consistent Estimator)
    • 这意味着随着 nn \to \infty,我们计算出的主成分会收敛到真实的总体主成分。
  • 场景 B:ndn \ll d (高维数据/现代统计学)

    • 例如基因数据:n=1400n=1400 (人), d=500,000d=500,000 (基因)。
    • 在这种情况下,SS 不再是一个好的估计量,包含大量噪声。
    • 解决方案:需要使用 Sparse PCA (稀疏主成分分析),假设主成分向量中只有少数元素非零。

6.2 低秩近似与去噪 (Denoising)

  • 假设:如果先验知识告诉我们,总体协方差矩阵 Σ\Sigma 是(近似)低秩 (Low Rank) 的(即大部分特征值应该为 0,数据其实只在一个很低维的子空间活动)。
  • 操作
    1. 做 PCA 得到 S=PDPS = P D P^\top
    2. 只保留前 kk 个大的特征值,将剩余的 λk+1,,λd\lambda_{k+1}, \dots, \lambda_d 强制设为 0。
    3. 重构矩阵 S=Pdiag(λ1,,λk,0,,0)PS' = P \cdot \text{diag}(\lambda_1, \dots, \lambda_k, 0, \dots, 0) \cdot P^\top
  • 结论:在这个假设下,SS' 比原始的 SS 更接近真实的总体协方差 Σ\Sigma,因为我们去除了噪声方向的方差。

7. 经典案例:基因与地理

  • 现象:对欧洲人的基因数据进行 PCA,绘制前两个主成分 (PC1 vs PC2)。
  • 结果:散点图的形状与欧洲地图高度重合。
  • 启示:虽然输入只是基因数据(0/1/2 的数值),没有任何经纬度信息,但 PCA 自动发现了数据中最大的变异来源——地理隔离导致的基因漂变。