PCA 和 LDA 有什么区别?都是降维为什么不一样?
简化版
PCA 和 Fisher LDA 都可做线性降维,但优化目标不同:PCA 不用标签,保留最大总方差;LDA 使用标签,寻找类间散度相对类内散度大的方向。PCA 的“方差”只是平方重构意义的变化量,不保证是分类信息;LDA 更贴近当前标签,却会受标签噪声、类内散度估计和分布漂移影响,也不保证一定优于 PCA。LDA 判别子空间维度至多为 min(d,C-1),PCA 至多为数据矩阵的有效秩。
详细版
核心区别对比:
| 维度 | PCA | LDA |
|---|---|---|
| 是否用标签 | 无监督(不用标签) | 有监督(用类别标签) |
| 优化目标 | 方差最大(保留信息) | 类间散度/类内散度最大(保可分性) |
| 找的方向 | 方差最大的方向 | 最能分开类别的方向 |
| 降维上限 | ≤ 原始维度 d | ≤ 类别数 C − 1 |
| 用途 | 通用降维、去噪、可视化、去相关 | 为分类降维、判别 |
| 对类别 | 忽略 | 核心考虑 |
LDA 的目标(Fisher 准则):
最大化 J = 类间散度 S_b / 类内散度 S_w
类间散度:不同类中心之间离得越远越好
类内散度:同类样本围绕类中心越紧凑越好
关键差异例子: 若数据方差最大的方向恰好平行于类别分界(对分类没用),PCA 会选它、LDA 会避开——PCA 可能降维后反而更难分类,LDA 则专门保留可分方向。
完整版教学
一、都是线性降维,为什么结果可能截然不同
PCA 和 LDA 都是把高维数据线性投影到低维,但它们的优化目标不同,所以选出的投影方向可能完全不一样,甚至相反。理解它们的区别,关键抓一条:PCA 不看标签、只求保留最多方差(信息);LDA 看标签、只求把类别分得最开。 一个是「无监督保信息」,一个是「有监督保可分」。
二、PCA:无监督,找方差最大的方向
PCA 完全不用类别标签,目标是找投影总方差最大的方向。它关心数据整体散布,不关心类别;所谓“保留信息”应限定为线性平方重构意义,不能等同于保留监督信号。
所以 PCA 是通用的降维/去噪/可视化工具——无论有没有标签、做什么任务,它都只按「保留方差」这一个标准降维。
三、LDA:有监督,找最能分开类别的方向
LDA(Linear Discriminant Analysis,线性判别分析)利用类别标签,目标是找一个投影方向,使投影后:
- 不同类别的中心离得尽量远(类间散度 S_b 大)——类和类分得开。
- 同一类别的样本尽量聚拢(类内散度 S_w 小)——每类内部紧凑。
用 Fisher 准则量化:最大化「类间散度 / 类内散度」的比值:
J(w) = wᵀ S_b w / wᵀ S_w w → 最大化
直觉:投影后希望「类与类之间拉得开、每类自己缩得紧」,这样投影后的低维空间里类别最容易区分。所以 LDA 是专门为「让类别可分」服务的降维,天然贴合分类任务。
四、关键对比:一个经典例子看出差异
假设二维数据有两类,它们沿某方向排成两条平行的长条:
类别A ●●●●●●●●●● (沿水平方向拉得很长 = 方差大)
类别B ○○○○○○○○○○
两类在竖直方向上分开
- 方差最大的方向是水平方向(数据拉得最长)——PCA 会选水平方向投影。但水平方向上两类完全重叠、投影后根本分不开!PCA 反而丢掉了区分类别的信息。
- 最能分开两类的方向是竖直方向(两类在这个方向上分离)——LDA 会选竖直方向,投影后两类清晰分开。
这个例子说明:PCA 保留的「大方差方向」未必对分类有用,甚至有害;LDA 专门保留「可分方向」。 做分类任务的降维,LDA 往往比 PCA 更合适。
五、LDA 的维度上限:类别数 − 1
一个重要且常考的限制:LDA 降维后的维度最多是「类别数 C − 1」。
原因:LDA 靠「类中心之间的差异」找判别方向,而 C 个类中心张成的空间维度最多是 C−1(比如 2 类只能降到 1 维、3 类最多 2 维)。所以:
- 二分类 LDA 只能降到 1 维。
- 想降到更高维度,LDA 做不到(受类别数限制),而 PCA 没有这个限制(可降到任意 ≤ 原维度)。
这也是选择时的现实约束:类别少但想保留较多维度时,LDA 不够用。
六、怎么选、能否结合
- 无标签、通用降维、去噪、可视化、去相关 → PCA。
- 有标签、目标是分类、想让类别更可分 → LDA(作为有监督降维或直接做分类器)。
- 两者可结合:高维数据常先用 PCA 降维去噪/去共线(尤其当类内散度矩阵因维度高不可逆时),再用 LDA 做判别降维——PCA 先压缩,LDA 再判别。
补充:LDA 既是降维方法,也可直接当分类器(假设每类高斯同协方差时,它给出线性判别边界)。
七、常见追问
- PCA 和 LDA 最本质的区别? PCA 无监督保方差(信息),LDA 有监督保类间可分性。
- 为什么 LDA 降维上限是 C−1? 判别信息来自 C 个类中心,它们最多张成 C−1 维空间。
- 什么时候 PCA 对分类有害? 当大方差方向平行于类别分界、对区分无用时,PCA 会保留它、丢掉可分方向。
- 都需要标准化吗? PCA 通常要(防大尺度主导方差);LDA 对尺度也敏感,一般也标准化。
- LDA 有什么假设? 假设各类近似高斯、协方差相近;不满足时效果打折。
- 非线性版本? PCA→核 PCA;LDA→核 LDA。
八、用“大方差噪声”看出目标函数差异
设二维二分类数据中,x 方向在两类内都从 -10 到 10 波动,但两类 x 均值都为 0;y 方向类 A 均值为 -1、类 B 均值为 +1,类内标准差只有 0.2。PCA 更可能优先选择总方差巨大的 x 方向,投影后两类仍重叠;Fisher LDA 会偏向类间均值分离明显、类内波动小的 y 方向。
| 判断量 | x 方向 | y 方向 |
|---|---|---|
| 总体方差 | 很大 | 较小 |
| 类间均值差 | 约 0 | 2 |
| 类内散度 | 很大 | 很小 |
| PCA/LDA 偏好 | PCA | LDA |
PCA: X 中心化 → 总协方差特征方向 → 取大特征值
LDA: 标签分组 → S_b 与 S_w → 解广义特征问题
LDA 的判别子空间维度至多为 min(d,C-1),因为类间散度矩阵的秩至多 C-1。高维小样本时 S_w 可能奇异,需正则化、伪逆或先 PCA;先 PCA 也可能丢掉低方差但有判别力的方向,所以必须交叉验证。
记忆钩子:PCA 问“数据往哪边散得最开”,LDA 问“沿哪边看标签分得最开”。
九、常见误区与追问
- 误区:PCA 保留的方差一定都是分类信息。 大方差可能来自与标签无关的噪声或个体差异。
- 误区:Fisher 降维的代数形式必须先满足高斯假设。 散度准则本身可直接优化;高斯同协方差是假设式 LDA 分类器的概率解释。
- 追问:二分类 LDA 为什么最多一维? 两个类中心的独立差异方向最多只有一个。
- 追问:LDA 一定优于 PCA 吗? 标签噪声、分布偏移或散度估计不稳时未必,应在下游任务验证。
- 追问:为什么先 PCA 再 LDA 有风险? PCA 不看标签,可能先删除低方差但高度判别的方向。
十、加强记忆
PCA 无监督地保留大方差方向,LDA 有监督地优化类间散度相对类内散度;大方差不等于判别信息,标签驱动也不等于必然泛化更好。Fisher LDA 子空间维度至多 min(d,C-1),高维小样本时类内散度可能奇异。先 PCA 再 LDA 能缓解维度与共线问题,却可能先删掉低方差判别方向,因此也必须在训练折内作为完整流水线验证。