如何测试用于压缩的训练有素的 PCA?

数据挖掘 机器学习 降维 主成分分析
2022-02-13 07:48:30

我正在做一个使用 PCA 压缩图像的练习,但我不太明白如何在测试数据上使用它:

在训练数据中,我有 300 张手绘 6 的图像,由 28x28 矩阵表示,我使用 PCA 来找到这些图像的适当低维表示(26 维为我提供了 90% 的阈值),给了我一个300x26 矩阵,我可以用它把我的图像投影到那个空间

现在我必须用我的 10 个相似图像的测试数据来测试它——所以我必须将它们投影到同一个空间中。

因为我不能只使用火车空间(尺寸不一致),如果我理解正确,我应该运行另一个 PCA 来找到这些新图像的主要组件,但将它们投影到我的火车识别的 26 个维度中PCA(仅测试中的 PCA 表明 6 个维度就足够了,但我希望从我广泛的训练数据中获得更准确的 26 个维度)

但这是我苦苦挣扎的地方:如何将测试数据居中?为了在使用 PCA 或双 PCA 之前集中数据,我从数据中扣除了平均值。在构建我的测试 PCA 时,我应该扣除训练数据的平均值还是测试数据的平均值?

3个回答

在此处的另一个 stackexchange 问题中找到了答案:https ://stats.stackexchange.com/questions/142216/zero-centering-the-testing-set-after-pca-on-the-training-set

答案:是的,用训练数据的平均值将测试数据置零

当您在火车数据上运行 PCA 时,您将获得一个较低维度的向量空间(选择最大的组件后)。如你所知,这个向量空间包含最大特征值的特征向量。现在,使用适当的函数,将测试数据投影到向量空间中。因此,您不再需要通过测试数据获取 PCA。

您需要先合并数据集,运行 PCA,然后拆分数据集。完成此操作后,您可以训练模型然后对其进行测试。PCA 需要对整个数据集进行,以便在两组中具有相同的组件。