当 PCA 的可用数据多于 LDA 时,PCA 后跟 LDA 是否有意义?

机器算法验证 分类 主成分分析 降维 朴素贝叶斯 判别分析
2022-03-20 02:16:22

这是一个关于分类的问题。我是一名神经科学专业的学生,​​对分类方法几乎没有经验,我将不胜感激有关在此数据上实现线性分类器 (LDA) 的最佳方法的任何建议。

我有一个脑磁图数据集,在人们执行认知任务时记录下来。这具有以下属性:

  • 306 个数据通道,但预处理步骤已将维度减少到 64,然后将数据重新投影到传感器上。

  • 数据在时域(1000Hz)中是细粒度的

  • 数据被分成称为“试验”的短片段。这些对应于受试者正在执行的认知任务。试验可能会有所不同,例如,在 A 型试验(我将有约 50 个)中,受试者可能被要求注意空间左侧的刺激,而在 B 型试验(我有也 50)注意空间右侧的刺激)。

我想在试验中的特定时间点对我的数据进行分类(例如,在受试者被告知左/右参加后 0.5 秒),训练分类器区分 A 型和 B 型试验。每个观察的特征向量(即试验)是该时间点每个传感器的瞬时活动向量。我有比试验更多的功能(306 个传感器),所以我要么需要进行特征选择,要么使用正则化 LDA(或者使用 Hastie 的稀疏判别分析之类的东西,在我看来两者都做)。

我可以这样做,但似乎它丢弃了有关数据点中包含的数据的统计结构的信息,而不是我尝试分类的确切时间。此外,我知道数据的维数低于 306 - 少于 50 个组件可能会捕获数据中的绝大多数方差。

因此,我正在考虑使用降维步骤,可能是 PCA,然后将降维数据传递给非正则化 LDA 或朴素贝叶斯分类器。 这个想法是,降维步骤利用了我有大量数据随时间采样的事实。

这就是我感到困惑的地方。PCA 将数据投影到正交维度上,那么进行 LDA(它估计协方差矩阵以使用有关特征之间相关性的信息)是否有意义?或者我应该在降维之后做朴素贝叶斯?在这种情况下,我可能刚开始做朴素贝叶斯,因为它对 LDA 方式的特征数量不敏感。

鉴于这些数据的特定结构,如果有人可以在这里提出一个好的方法,我将不胜感激。关键问题是:PCA 后跟 LDA 有意义吗?

4个回答

PCA 计算解释数据中大部分变化的特征值,在这种情况下,它将按特征向量进行操作,并且不考虑类标签。LDA 最大化Fishers 判别比(或Mahalaobis 距离),即最大化类之间的距离。

如果将每个观察(案例)的特征向量定义为瞬时时间点的数据,则数据的时间分量不相关。在这种情况下,您可以将 PCA 作为预处理阶段应用于每个特征向量,以在分类之前降低维度。

但是,如果您将每个试验定义为围绕兴趣点的 10 秒时期或分段,则您可以计算该时期中所有时间样本的每个传感器的汇总统计量。然后,特征向量中的每个特征都将是每个传感器在 10 秒内的行为的总结(例如,每个 10 秒时期的平均幅度)。然后,您可以应用 PCA 作为预处理步骤,将特征向量的维数从 306 减少到更易于管理的数字。

第二种方法假设在每 10 秒的时期计算的汇总统计信息包含与您的问题相关的更多信息,而不是上面详述的瞬时特征。

您的问题很可能是过度拟合 - 当您使用具有大量维度的小型数据集时,这很典型。在 LDA 的情况下,通常会发生协方差矩阵由于样本小而有偏差的情况。为了避免它,您可以尝试使用正则化。一种有用的技术是通过将小项添加到对角线(也称为收缩)来球化协方差矩阵。在这种情况下,无需使用 PCA。您可以阅读本文关于单次试验脑电图分析的技术。

我正在用神经元尖峰做类似的事情。我关注的一些论文做了 PCA 并选择了解释 90% 方差的组件,然后做了 LDA,主要目的是“避免奇异矩阵”,这在某种程度上是有道理的,但可以通过“特征求解器”和“收缩”来避免.

我选择不这样做的原因有3个:

  1. 实际上,您的数据集是暂时的,如果您在每个时期执行 PCA,您将失去比较随时间变化的潜力(或者至少更难)。追踪单个神经元也更难,但我认为在你的情况下这并不重要。
  2. 正如另一个答案所建议的那样,PCA 可能会损害您的解码性能 - 它是无监督的。
  3. 更重要的是,我认为从科学角度来看,不同区域如何共同产生一种功能是很有趣的。我不认为分类器之前的 PCA 会有所帮助。

当我输入这个答案时,我只是想到人们还将试验和时期的维度汇集在一起​​作为 PCA 的样本维度。如果您以这种方式执行 PCA,那么在每个时间点您的组件都不是正交的,并且您仍然可以以某种方式比较不同的时期。

BGreene 的回答很好,但我只想补充一点,从 PCA 转到更密切相关的 LDA 分类器(即潜在狄利克雷分配)可能更有意义。顾名思义,它是一种潜在变量技术,如 PCA。它在分类文献(我自己现在正在使用它)中非常流行,特别是在文本挖掘和非结构化数据中。

使用 PCA 然后 Fischer 的 LDA 在其他条件不变的情况下在统计上是有效的,但这不一定是一个好主意。尽管我和许多其他人在某些情况下确实使用线性判别,因为它非常快速和简单,但在大多数应用程序中,它并不是一个非常统计有效或实际有效的选择。作为分类器,它的性能通常特别差;我通常为我正在构建的任何算法运行和排名许多分类器,而线性判别通常位于列表的底部。性能不佳可能是需要 PCA 降维的原因,但我只会选择一个更合适的分类器。