如何将新向量投影到 PCA 空间?

机器算法验证 r 主成分分析
2022-02-05 13:10:45

执行主成分分析 (PCA) 后,我想将一个新向量投影到 PCA 空间(即在 PCA 坐标系中找到它的坐标)。

我已经使用 R 语言计算了 PCA prcomp现在我应该能够将我的向量乘以 PCA 旋转矩阵。该矩阵中的主成分应该按行还是按列排列?

4个回答

只是为了添加到@chl 的精彩答案(+1),您可以使用更轻量级的解决方案:

# perform principal components analysis
pca <- prcomp(data) 

# project new data onto the PCA space
scale(newdata, pca$center, pca$scale) %*% pca$rotation 

如果您不想保存整个pca对象以投影newdata到 PCA 空间,这将非常有用。

好吧,@Srikant 已经给了您正确的答案,因为旋转(或加载)矩阵包含按列排列的特征向量,因此您只需将%*%新数据的向量或矩阵与 eg 相乘(使用)prcomp(X)$rotation但是,请注意在计算 PCA EV 时应用的任何额外的居中或缩放参数。

在 R 中,您可能还会发现该predict()函数很有用,请参阅?predict.prcomp顺便说一句,您只需输入以下内容即可检查新数据的投影是如何实现的:

getS3method("predict", "prcomp")

在 SVD 中,如果 A 是 mxn 矩阵,则右奇异矩阵 V 的前 k 行是 A 的原始列的 k 维表示,其中 k <= n

A = UΣV t
=> A t = VΣ t U t = VΣU t
=> A t U = VΣU t U = VΣ -----------(因为 U 是正交的)
=> A t- 1 =VΣΣ -1 =V

所以V=AtUΣ-1

A t的行或 A 的列映射到 V 的列。
如果新的数据进行 PCA 降维的矩阵是 Q,aqxn 矩阵,则使用公式计算R=QtUΣ-1,结果 R 是期望的结果。R 是一个 n × n 矩阵,R 的前 k 行(可以看作是 ak × n 矩阵)是 Q 在 k 维空间中的列的新表示。

我认为特征向量(即主成分)应该排列成列。