我正在尝试使用PCA来降低数据的维度。
所以我调用了[COEFF, SCORE] = princomp(data);
根据这个回答,我可以用SCORE * COEFF' + Mean
来重建我的数据,并且它是有效的。
但我正在尝试找到投影矩阵P
,其中任何给定的向量x
都可以被转换到其在PCA空间中的投影。
我的直觉告诉我,我应该能够通过以下方式投影x
:
proj = ((x-m) * inv(C)) + m
其中m
是我的数据的均值。
所以我通过选择x
作为我的数据的第一个观测值来测试这一点,我期望proj
应该非常接近SCORE
的第一行。然而,事实并非如此。
那么我哪里做错了?我如何找到投影矩阵呢?
感谢任何帮助!
回答:
哦,现在我看到了我的错误。
首先,COEFF是正交的(不确定),所以inv(COEFF) == COEFF'
投影可以通过以下方式找到:
proj = COEFF' * (x-m)