什么是 LDA?

LDA(Linear Discriminant Analysis,线性判别分析) 是一种利用类别标签来找最佳投影方向的降维方法。

生活类比:按颜色分拣弹珠

想象桌上有一堆红色和蓝色弹珠混在一起。你想把它们投影到一根线上(降维),让红的和蓝的尽量分开。PCA 会选「弹珠分布最分散」的方向——但这个方向上红蓝可能完全混在一起!LDA 更聪明:它选的方向让同色弹珠靠拢、异色弹珠远离。就像用一束光从侧面照弹珠,找到那个角度,让墙上的影子中红色影子和蓝色影子分得最开。

逐步理解:

  • 第一步:先了解 PCA——PCA 只看「数据往哪个方向散得最开」,完全不管类别标签
  • 第二步:LDA 的改进——有了类别标签,我们可以定义「好的方向」= 同类紧凑 + 异类分开
  • 第三步:用「类间散度」衡量不同类中心有多远,用「类内散度」衡量同类点有多分散
  • 第四步:最佳方向 = 使「类间散度 / 类内散度」最大的方向

与 PCA 的关键区别:

  • PCA(无监督):哪个方向数据最分散?→ 最大化总方差
  • LDA(有监督):哪个方向类别分得最开?→ 最大化类别可分性

适用场景

  • 分类任务降维:在分类问题中,将高维特征降到低维同时保持类别可分性
  • 人脸识别:Fisherfaces 方法使用 LDA 进行人脸特征提取
  • 小样本学习:当样本量小于特征数时,LDA 比 PCA 更有效
  • 多类分类预处理:作为分类器的预处理步骤,提高分类效率
  • 模式识别:需要最大化类别区分度的场景

历史渊源

问题背景:1930年代,生物学家需要根据花瓣长度、宽度等多个测量值来区分鸢尾花的物种。PCA 可以降维,但它只关心"数据分散在哪个方向",完全忽略了类别标签——降维后不同物种可能混在一起。

关键突破:1936年,Ronald Fisher 提出了一个巧妙的改进:不是找方差最大的方向,而是找"类间距离最大、类内距离最小"的方向。投影到这个方向后,不同类别被拉开,同类样本被聚拢——这就是线性判别分析。这篇论文同时诞生了机器学习史上最著名的数据集:鸢尾花数据集(Iris dataset)。

深远影响:LDA 开创了"有监督降维"的范式——利用标签信息指导降维方向。这个思想影响了后来的核判别分析、度量学习,乃至深度学习中的对比学习(让同类靠近、异类远离)。

趣闻:Fisher 是20世纪最伟大的统计学家之一,他同时发明了方差分析(ANOVA)、最大似然估计、Fisher 精确检验等。但他最广为人知的"作品"可能是那150朵鸢尾花——Iris 数据集至今仍是机器学习入门的第一个数据集。

发展脉络

1936
LDA
线性判别
非线性扩展
→
2000
Kernel LDA
非线性判别
深度学习
→
2015
Deep LDA
深度特征
度量学习
→
2020
对比学习
自监督判别

局限性

  • 最多降到 C-1 维:对于 C 类问题,LDA 最多只能找到 C-1 个判别方向
  • 假设正态分布:假设各类数据服从高斯分布,实际数据可能不满足
  • 假设等协方差:假设各类的协方差矩阵相同,异方差情况下效果差
  • 小样本问题:当特征数大于样本数时,类内散度矩阵不可逆
  • 线性决策边界:只能处理线性可分问题

这些局限催生了:正则化LDA(解决小样本问题)、Kernel LDA(非线性)、QDA(二次判别分析,异方差)

工业界地位

小样本分类降维常用

LDA 在工业界有其独特的应用场景:

  • 人脸识别:Fisherfaces 方法,与 Eigenfaces (PCA) 结合使用
  • 文档分类:文本分类中的特征降维
  • 生物特征识别:指纹、虹膜识别的特征提取
  • 医学诊断:基于少量样本的疾病分类

使用建议:当类别标签明确且样本量不大时,LDA 是比 PCA 更好的降维选择;可与 PCA 组合使用(先PCA降噪,再LDA判别)。

交互式可视化

观察 LDA 如何找到最佳投影方向

试一试:
  • 选择「线性可分」数据集,观察 LDA 投影后两类完全分开
  • 切换到「重叠分布」,观察投影后两类仍有重叠——LDA 尽力了但数据本身就不好分
  • 比较投影方向和数据分布的关系:LDA 选的方向总是让两团数据中心距离最大

原始 2D 数据

1D 投影(LDA方向)

LDA 信息:

投影方向: --

类间方差 / 类内方差: --

分类准确率: --

数学原理

直觉引入:PCA 找"数据变化最大"的方向,但不管类别。LDA 的目标不同:找一个投影方向,使得同类的点尽量聚拢,不同类的点尽量分开。就像把两堆混在一起的弹珠投影到一条线上,让红色和蓝色尽量不重叠。

两个散度矩阵:

  • 类内散度 $S_W$(同类点有多分散):
    $$S_W = \sum_{c} \sum_{x \in c} (x - \mu_c)(x - \mu_c)^T$$
  • 类间散度 $S_B$(不同类中心有多远):
    $$S_B = \sum_{c} n_c (\mu_c - \mu)(\mu_c - \mu)^T$$

$\mu_c$ = 第 $c$ 类的均值,$\mu$ = 全局均值,$n_c$ = 第 $c$ 类样本数。

目标:最大化 Fisher 准则(瑞利商)

$$J(w) = \frac{w^T S_B w}{w^T S_W w}$$

分子大 → 类间距离大;分母小 → 类内紧凑。

最优解(二分类):

$$w^* = S_W^{-1} (\mu_1 - \mu_2)$$
LDA 的限制:最多只能降到 $C-1$ 维($C$ 是类别数)。二分类只能降到 1 维。如果类别分布不是高斯或协方差差异很大,效果会下降。