使用 PCA 降低训练和测试数据的维数

机器算法验证 回归 机器学习 主成分分析 降维
2022-03-18 23:42:11

我读了很多相互矛盾的意见,我觉得我需要自己问这个问题。

假设我在具有 60 个变量的数据集上使用 PCA,发现我可以用 6 个主成分解释 98% 的方差,并且我得到了一个不错的模型来预测我想要什么。

现在我得到了一些新数据(测试),然后应该将这些数据转换为相同的“PCA 空间”,以便我的模型能够正确解释它吗?所以我会使用与我的训练数据相同的缩放比例来缩放它,然后使用来自原始 PCA 的加载分数将我的新数据转换为“PCA 空间”?

我问的原因是我已经看到很多人在进行测试/训练拆分之前进行 PCA,所以他们的测试数据已经“转换”了,这对我来说似乎是个错误?不应该只在训练数据上使用 PCA,然后使用来自该 PCA 的负载将测试数据转换为相同的维度吗?

1个回答

是的,这是将模型过度拟合到测试数据的常用方法。在 NLP 中,一个类似的错误是对完整的训练/测试数据进行词汇选择和词袋向量化。

这有点阴险,因为一旦您获得了特征矩阵,使用大多数工具进行模型选择会容易得多。此外,你得到的“提升”并不大得惊人,所以很容易认为你的模型很棒,然后拍拍自己的背。

积极的一面是,我认为这在 5-10 年前更为常见,今天大多数从业者对这个错误都很明智。