数学原理
本章目标
- 理解 PCA 的优化目标——最大化投影方差(寻找数据变化最大的方向)。
- 理解协方差矩阵特征值分解与 SVD 之间的等价关系。
- 理解
explained_variance_ratio_的数学含义及其随n_components变化的单调性。 - 理解标准化对 PCA 的数学必要性——协方差矩阵的几何意义依赖特征量纲一致。
重点方法与概念速览
| 名称 | 类型 | 作用 |
|---|---|---|
| 投影方差 | 优化目标 | PCA 寻找最大化投影方差的方向——方差越大,"信息量"越大 |
| 协方差矩阵 | 核心矩阵 | 其特征向量即主成分方向,特征值即该方向的方差 |
| 特征值分解 | 求解形式 | 第 |
| SVD | 数值求解 | 右奇异向量 |
explained_variance_ratio_ | 评估指标 | 第 |
svd_solver='auto' | 工程选择 | scikit-learn 自适应选择最优 SVD 求解器 |
1. PCA 的优化目标
给定
其中
拉格朗日推导
约束
理解重点
- 主成分方向是协方差矩阵的特征向量——这不是经验规则,而是拉格朗日乘子法的严格推导结果。
- 特征值
恰好等于该方向的投影方差—— 。 - 因此取最大的
个特征值对应的特征向量,即得到保留方差最多的 个投影方向。
2. 多个主成分
第一个主成分
解释方差比
第
理解重点
- 每个主成分的解释方差比反映了它在总方差中的"份额"——值越大,该方向承载的信息越多。
- 累计解释方差比
反映了前 个主成分总共保留了多少信息。 - 当前源码打印这两项——它们是 PCA 训练完成后最重要的定量输出。
3. SVD 与 PCA 的等价性
在实际计算中,通常不显式构造协方差矩阵
其中
因此:
的列即主成分方向(特征向量) (奇异值的平方除以 等于特征值)
理解重点
- SVD 路径不需要显式计算
——这在 很大时(如 )极大降低了计算量和数值误差。 svd_solver='auto'是 scikit-learn 的默认选择——它会根据和 的大小自动选择 full / randomized / arpack 中最合适的 SVD 实现。 - 这个等价性是 PCA 实现层最重要的数学性质——它把"特征分解协方差矩阵"转化为"SVD 分解数据矩阵"。
4. PCA 与 LDA 的数学对比
| 维度 | PCA | LDA |
|---|---|---|
| 监督方式 | 无监督 | 有监督(需要 |
| 优化目标 | ||
| 核心矩阵 | 总协方差矩阵 | 类内散度 |
| 降维上限 | ||
| 求解方式 | 特征分解或 SVD | 广义特征值问题 |
| 特征值含义 | 投影方差 | Fisher 准则值 |
理解重点
- PCA 的特征值
是"该方向保留了多少方差"——这在物理意义上非常直观。 - LDA 的特征值是"该方向的类间/类内散度比"——同样
的两个数字,在 PCA 中表示方差占比,在 LDA 中表示判别能力占比。 - 两者同名属性
explained_variance_ratio_在语义上是不同的——这是对比阅读时最容易混淆的地方。
5. 标准化对 PCA 的数学必要性
PCA 的核心操作是计算协方差矩阵:
若特征
理解重点
- 标准化后每个特征均值为 0、方差为 1——协方差矩阵退化为相关系数矩阵,各特征平等参与。
- 当前数据是合成数据——各特征量纲本身相近(均为高斯噪声的线性组合),但标准化仍然是最佳实践。
- 这与 LDA、KMeans、DBSCAN、SVC 的逻辑完全一致——任何基于距离或协方差的算法都需要标准化。
6. 数学原理如何映射到当前源码
| 数学概念 | 数学符号/公式 | 代码实现 |
|---|---|---|
| 中心化数据 | StandardScaler 处理后均值为 0 | |
| 协方差矩阵 | PCA 内部计算(经由 SVD 间接得到) | |
| 主成分方向 | model.components_,形状 (q, d) | |
| 特征值(方差) | model.explained_variance_ | |
| 解释方差比 | model.explained_variance_ratio_ | |
| 累计解释方差 | model.explained_variance_ratio_.sum() | |
| 保留主成分数 | n_components=2 或 3 | |
| SVD 求解器 | — | svd_solver='auto' |
| 投影 | model.transform(X) | |
| 标准化 | StandardScaler | |
| 随机种子 | — | random_state=42 |
常见坑
- 混淆 PCA 与 LDA 的优化目标——PCA 最大化投影方差(无监督),LDA 最大化类间/类内散度比(有监督)。
- 忽略标准化——协方差矩阵对特征量纲高度敏感,不标准化的 PCA 本质上是"尺度最大的特征主导的 PCA"。
- 把 PCA 的
explained_variance_ratio_与 LDA 的同名属性当成同一种含义——前者是方差占比,后者是判别能力占比。 - 误认为
n_components加 1 必然带来显著信息增益——信息增益的边际递减率取决于数据的固有秩结构。
小结
- PCA 的数学核心链:中心化数据 → 协方差矩阵
→ 特征值问题 → 等价于 SVD → 取最大 个特征向量作为主成分方向。 - 特征值
就是该方向的投影方差, explained_variance_ratio_就是各方向方差占总方差的比例。 - 当前源码
PCA(n_components=2, svd_solver='auto', random_state=42)针对低秩合成数据(3 个真实方向 + 10 维表面特征)是展示方差压缩最经典的教学配置。