在训练集上对 PCA 后的测试集进行零中心化

机器算法验证 机器学习 主成分分析 定心
2022-02-28 12:00:43

我有一组数据进行主成分分析 (PCA) 并保存载荷/特征向量/系数矩阵。我想使用特征向量将我的测试数据转换为相同的主成分空间,我知道我只是在测试数据和特征向量矩阵之间进行矩阵乘法,还有其他帖子可以解释这一点。

但是,我在将数据居中后从训练数据中计算 PC,因此平均值为零(我称之为零居中)。我的问题是:如何在矩阵乘法之前处理零中心测试数据?我是否只是像对训练数据进行零中心一样减去训练数据的平均值?这似乎是正确的,因为我想象的另一个选项是使用测试数据的平均值(如果测试数据由单个实例组成,那么它是一个 0 向量),但也许还有其他选项我俯瞰?

有人可以支持我,我只是从测试数据中减去训练数据的平均值,然后乘以特征向量矩阵吗?还是反驳我?理想情况下提供参考?

3个回答

我是否只是像对训练数据进行零中心一样减去训练数据的平均值?

是的。

您应该对测试数据进行与对训练数据所做的完全相同的转换;这包括居中——应该使用在训练集上获得的平均值来完成。如果您对训练集进行了标准化,那么您还将测试集除以在训练集上获得的标准差。之后,您可以将您的测试集投影到训练集的 PC 上。

您需要从测试集中减去训练集的平均值,然后在特征向量上进行投影。你不应该取(训练+测试)集的平均值。

也可以在这里参考 Andrej Karpathy 的笔记:http: //cs231n.github.io/neural-networks-2/

PCA 计算协方差矩阵的特征向量。协方差矩阵使用数据的隐式居中。因此,是否将训练数据居中并不重要。得到的特征向量和特征值将是相同的。这意味着您实际上不必将测试数据居中。如果您将测试数据居中,您获得的预测只会在不同的(按平均值翻译)坐标系中。