什么时候适合使用 PCA 作为预处理步骤?

机器算法验证 机器学习 主成分分析 数据挖掘 降维
2022-03-26 01:18:50

我知道 PCA 用于降维以便能够绘制 2D 或 3D 数据集。但我也看到人们在分类场景中应用 PCA 作为预处理步骤,他们应用 PCA 来减少特征数量,然后他们使用一些主成分(协方差矩阵的特征向量)作为新特征。

我的问题:

  • 这对分类性能有什么影响?

  • 何时应用这样的预处理步骤?

  • 我有一个数据集,其中包含 10 个实数特征和 600 个表示分类特征的二进制特征,使用一对多编码来表示它们。在这里应用 PCA 是否有意义并产生更好的结果?

ps 如果问题太宽泛,如果您提供一篇论文或教程来更好地解释以这种方式使用 PCA 的细节,我将不胜感激。

ps 看了一点之后,我发现使用潜在语义分析来减少分类属性的二元特征的数量可能会更好?所以我不接触实值特征,而只是预处理二进制特征,然后将实值特征与新特征结合起来训练我的分类器。你怎么看?

1个回答

使用 PCA 进行特征选择(去除非预测特征)是一种极其昂贵的方法。PCA 算法通常是 O(n^3)。一个更好和更有效的方法是使用特征和类之间的相互依赖度量 - 因为这种互信息往往表现得非常好,而且它是 a) 完全概括和 b) 的唯一依赖度量实际上有一个很好的基于 Kullback-Leibler 散度的哲学基础。

例如,我们计算(使用最大似然概率近似和一些平滑)

MI-高于预期 = MI(F, C) - E_{X, N}[MI(X, C)]

其中第二项是“给定 N 个示例的预期互信息”。然后我们在按 MI-above-expected 排序后取前 M 个特征。

人们想要使用 PCA 的原因是,如果人们期望许多特性实际上是依赖的。这对于假设独立性的朴素贝叶斯特别方便。现在我使用的数据集总是太大而无法使用 PCA,所以我不使用 PCA,我们必须使用更复杂的方法。但是,如果您的数据集很小,并且您没有时间研究更复杂的方法,那么请务必继续应用现成的 PCA。