将 PCA 与人工神经网络结合起来有意义吗?

数据挖掘 机器学习 神经网络 深度学习 预测建模 主成分分析
2021-09-16 13:55:10

我有一个大约 200 个特征的数据集。它们中的大多数是分类的,只有少数是数字的。似乎带有自动编码器的人工神经网络在这种类型和数量的特征方面存在一些问题。因此,我想使用PCA来减少维度,然后再应用 Autoencoder。

在神经网络之前组合 PCA 是否有意义,因为神经网络也会减少内部层中的信息?有没有人有这种组合的经验?


编辑:统计论坛中也有一个有趣的答案

2个回答

神经网络实际上在执行降维方面非常有效。一个很好的例子是word2vec,它应用浅层神经网络通过数学上类似于矩阵分解的过程(这是一类PCA 所属的技术)。自动编码器的功能与 word2vec 非常相似:如果您打算使用自动编码器来学习数据的嵌入,我不希望您先应用 PCA 而不是使用自动编码器(或类似的东西)来学习更好地嵌入不受 PCA 假设约束的数据。

PCA用于放弃具有冗余特征。它扩展了您的数据在这些方向上高度分布的方向。在此过程中,它不关心数据的标签。在这些方向上,您的数据将高度分布,并且没有任何特征具有相关性。PCA只是做前面的事情。在该特征空间中,您的数据可能很容易分离或不易分离。但是在神经网络之前使用它是一种减少冗余特征的方法,这可能导致你的网络有太多参数。它是一种仅用于减少相关特征的预处理,尽管有不同的原因可以应用PCA,例如数据可视化或理解数据,甚至基于例如三个主要组件的报告数据。我建议您使用它,因为您可能会发现在新空间中您会使用更小的网络对数据进行分类。

在神经网络之前组合 PCA 是否有意义

是的,您可以将其作为预处理阶段。

...因为神经网络也减少了内部层的信息?

神经网络不一定会减少内部层的信息。在卷积网络中,最大池化层以某种方式减少了不必要的信息,但其他常见的网络(例如卷积层或密集层)试图改变层输入的空间,或者等效地用另一种解释,他们试图找到其他特征和模式数据可以在这些空间中分开。PCA实际上减少了相关特征。

有没有人有这种组合的经验?

是的。这一切都取决于您的数据。在某些应用程序中它对我有用,我有很多相关的功能。但是碰巧它在相关特征存在或不存在的两种情况下都不能很好地工作。