总结:PCA可以在LDA之前进行,以规范问题,避免过拟合。
回想一下,LDA 投影是通过特征分解计算的Σ−1WΣB, 在哪里ΣW和ΣB是类内和类间协方差矩阵。如果少于N数据点(其中N是您空间的维度,即特征/变量的数量),然后ΣW将是单数,因此不能倒置。在这种情况下,根本没有办法直接执行 LDA,但如果先应用 PCA,它就会起作用。@Aaron 在对他的回复的评论中发表了这一评论,我同意这一点(但一般不同意他的回答,正如您现在将看到的那样)。
然而,这只是问题的一部分。更大的图景是 LDA 很容易过度拟合数据。请注意,类内协方差矩阵在 LDA 计算中被反转;对于高维矩阵,反演是一个非常敏感的操作,只有在估计ΣW真的很好。但在高维度N≫1, 很难得到准确的估计ΣW,在实践中,一个人通常必须拥有比N数据点开始希望估计是好的。除此以外ΣW将几乎是奇异的(即某些特征值将非常低),这将导致过度拟合,即在训练数据上具有近乎完美的类分离,而在测试数据上具有偶然性能。
为了解决这个问题,需要规范化这个问题。一种方法是首先使用 PCA 来降低维度。还有其他可以说更好的方法,例如正则化 LDA (rLDA) 方法,它简单地使用(1−λ)ΣW+λI与小λ代替ΣW(这称为收缩估计器),但首先进行 PCA 在概念上是最简单的方法,并且通常效果很好。
插图
这是过度拟合问题的说明。我从 10 维、50 维、100 维和 150 维空间中的标准高斯分布(均值零,单位方差)生成了 3 个类中的每个类 60 个样本,并应用 LDA 将数据投影到 2D 上:
注意随着维度的增长,类变得越来越好分离,而实际上类之间没有区别。
如果我们将类稍微分开,我们可以看到 PCA 如何帮助防止过拟合。我在第一类的第一个坐标上加了 1,在第二类的第一个坐标上加了 2,在第三类的第一个坐标上加了 3。现在它们稍微分开了,请参见左上角的子图:
过度拟合(顶行)仍然很明显。但是,如果我使用 PCA 对数据进行预处理,始终保持 10 维(底行),那么过度拟合就会消失,而类仍然接近最佳分离。
PS。为了防止误解:我并不是说 PCA+LDA 是一个好的正则化策略(相反,我建议使用 rLDA),我只是在证明它是一种可能的策略。
更新。之前在以下主题中讨论了非常相似的主题,@cbeleites 提供了有趣而全面的答案:
另请参阅此问题并提供一些很好的答案: