在PCA重构中为什么要添加均值?

假设X是我们的数据集(尚未居中),X_cent是我们的居中数据集(X_cent = X – mean(X))。

如果我们以这种方式进行PCA投影Z_cent = F*X_cent,其中F是主成分矩阵,很显然我们在重构Z_cent后需要加上mean(X)。

但如果我们以这种方式进行PCA投影Z = F*X呢?在这种情况下,我们不需要在重构后加上mean(X),但这会给我们带来不同的结果。

我认为这种过程(构建-重构)在应用于非居中数据(在我们的例子中是X)时存在一些问题。能有人解释一下这是如何工作的吗?为什么我们在不减去/加上均值的情况下无法进行构建/重构阶段?

提前感谢您。


回答:

如果你保留所有主成分,那么如你问题中描述的居中和非居中向量的重构将是相同的。问题(如你在评论中指出的)是你只保留了K个主成分。当你丢弃PCs时,你会丢失信息,因此重构会包含错误。由于你不需要在其中一个重构中重构均值,因此你不会在均值方面引入错误,所以这两个版本的重构错误将会不同。

使用少于所有PCs进行重构并不像简单地乘以特征向量的转置(F')那么简单,因为你需要用零填充你的变换数据,但为了简化起见,我在这里忽略了这一点。你的两个重构看起来像这样:

R1 = F'*F*XR2 = F'*F*X_cent + X_mean   = F'*F*(X - X_mean) + X_mean   = F'*F*X - F'*F*X_mean + X_mean

由于重构是有损的,一般来说,对于矩阵Y,F'*F*Y != Y。如果你保留了所有PCs,你会得到R1 - R2 = 0。但由于你只保留了一部分PCs,你的两个重构将会有以下差异:

R2 - R1 = X_mean - F'*F*X_mean

你在评论中关于为什么最好重构X_cent而不是X的后续问题稍微有些复杂,实际上取决于你进行PCA的初衷。最根本的原因是,PCs首先是相对于均值的,因此在变换/旋转之前不居中数据,你实际上并没有真正去相关化特征。另一个原因是,首先居中数据时,变换数据的数值通常会小几个数量级。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注