PCA 和 LDA 有什么区别?都是降维为什么不一样?
简化版
PCA 和 LDA 都是线性降维,但目标完全不同。PCA(主成分分析) 是无监督的——它不看标签,只找方差最大的方向,目标是尽量保留数据整体的信息(方差)。LDA(线性判别分析) 是有监督的——它利用类别标签,找一个投影方向使不同类之间尽量分开、同一类内部尽量聚拢(最大化「类间距离 / 类内距离」),目标是尽量让类别可分。所以:PCA 保信息、不管类别;LDA 保可分性、专为分类服务。 另外 LDA 降维后的维度最多是类别数 − 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 都是线性降维但目标相反:PCA 无监督——不看标签、找方差最大的方向、保留整体信息(方差=信息);LDA 有监督——用标签、找让类间散度/类内散度最大(Fisher 准则)的方向、保留类别可分性。经典差异:数据方差最大的方向若平行于类别分界,PCA 会选它却分不开类,LDA 则专挑可分方向——所以分类降维 LDA 常优于 PCA。关键限制:LDA 降维上限 = 类别数 C−1(二分类只能到 1 维),PCA 无此限制。选择:通用降维/去噪/可视化用 PCA,分类可分性用 LDA,高维可先 PCA 再 LDA。