本页为 PCA(Principal Component Analysis,主成分分析)的实践专篇:从协方差矩阵特征分解到 SVD 实现,衔接降维与特征工程。
段末注释:PCA 在正交变换下寻找保留最大方差的前 $K$ 个方向;白化(whitening)在 PCA 基础上再缩放使各维单位方差。
系列入口:00.系列规划 | 前置:04 特征值、05 SVD
1. 问题与直观(D1)

数据 $X \in \mathbb{R}^{n \times d}$($n$ 样本,$d$ 特征),目标:找正交方向 $\mathbf{w}_1,\ldots,\mathbf{w}_K$ 使投影后方差最大、方向互不相关。
第一主成分:
$$
\mathbf{w}1 = \arg\max{|\mathbf{w}|=1} \mathrm{Var}(X\mathbf{w}) = \arg\max_{|\mathbf{w}|=1} \mathbf{w}^\top \Sigma \mathbf{w}
$$
解为 $\Sigma$ 的最大特征值对应特征向量(04 特征值)。
2. 算法步骤(D3)

- 中心化:$\tilde{X} = X - \bar{X}$
- 协方差:$\Sigma = \frac{1}{n-1}\tilde{X}^\top \tilde{X}$(或相关矩阵 $R$ 若已标准化)
- 特征分解:$\Sigma = Q \Lambda Q^\top$,按 $\lambda_1 \ge \lambda_2 \ge \cdots$ 排序
- 投影:$Z = \tilde{X} Q_K$,$Q_K$ 为前 $K$ 列
解释方差比:
$$
\text{EVR}k = \frac{\lambda_k}{\sum{j=1}^d \lambda_j}
$$
SVD 等价:对 $\tilde{X} = U \Sigma_s V^\top$,$V$ 的列即主成分方向;$n \ll d$ 时 SVD 更省。
3. 白化(D3)
$$
Z_{\mathrm{white}} = \tilde{X} Q_K \Lambda_K^{-1/2}
$$
投影后各维方差为 1、不相关。用于:
- 某些分类器前置(如 LDA 相关)
- 对比学习、某些 GAN 管线
- 注意:白化会放大噪声方向(小 $\lambda_k$)
4. 场景与选型(D7)

| 方法 | 线性/非线性 | 保留信息 | 链接 |
|---|---|---|---|
| PCA | 线性 | 全局方差 | 本文 |
| t-SNE | 非线性 | 局部邻域 | t-SNE 文章 |
| UMAP | 非线性 | 局部+部分全局 | UMAP 文章 |
| Filter 相关 | — | 与 $Y$ 相关 | Math-02/20 |
适用 PCA:高维连续特征、可视化前处理、多重共线性压缩、组学 PCA 图。
不适用:类别边界非线性、需保留局部流形(用 t-SNE/UMAP);标签监督降维(用 LDA/监督方法)。
5. 局限与误用(D8)

| 误用 | 说明 |
|---|---|
| 未中心化 | 第一 PC 常被均值偏移主导 |
| 量纲不一直接 PCA | 大单位特征主导 → 先标准化 |
| 在测试集上 fit PCA | 数据泄漏;只在 train fit |
| $K$ 随意选 | 看 scree plot / 累计 EVR |
| PCA 图当聚类结论 | PC1/2 未必对应生物学分组 |
酶学/生信:PCA 常用于突变体活性矩阵、表达谱;与 酶改造-06 的 CV、特征筛选配合。
6. sklearn 示例(D12)
1 | import numpy as np |
7. 小结
PCA = 协方差谱 + 方差最大投影;实现优先 SVD。非线性可视化见 t-SNE/UMAP;DL 表征见 20 Attention+LoRA。