如何在 MATLAB 中找到 PCA 的投影矩阵?
How to find projection matrix for PCA in MATLAB?
我正在尝试使用 PCA 降低数据的维度。
所以我调用 [COEFF, SCORE] = princomp(data);
根据 this answer,我可以用 SCORE * COEFF' + Mean
重建我的数据,并且它有效。
但我试图找到投影矩阵 P
,其中任何给定的向量 x
都可以转换为其在 PCA space 中的投影。
我的直觉告诉我,我应该能够通过以下方式投射 x
:
proj = ((x-m) * inv(C)) + m
其中 m
是我的数据的平均值。
所以我通过选择 x
作为我的数据的第一个观察来测试它,我希望 proj
应该非常接近 SCORE
的第一行。然而事实并非如此。
所以我哪里做错了?我怎样才能找到投影矩阵?
感谢您的帮助!
糟糕,现在我明白我的错误了。
首先,COEFF 是正交的(不确定)所以 inv(COEFF) == COEFF'
投影是由
找到的
proj = COEFF' * (x-m)
我正在尝试使用 PCA 降低数据的维度。
所以我调用 [COEFF, SCORE] = princomp(data);
根据 this answer,我可以用 SCORE * COEFF' + Mean
重建我的数据,并且它有效。
但我试图找到投影矩阵 P
,其中任何给定的向量 x
都可以转换为其在 PCA space 中的投影。
我的直觉告诉我,我应该能够通过以下方式投射 x
:
proj = ((x-m) * inv(C)) + m
其中 m
是我的数据的平均值。
所以我通过选择 x
作为我的数据的第一个观察来测试它,我希望 proj
应该非常接近 SCORE
的第一行。然而事实并非如此。
所以我哪里做错了?我怎样才能找到投影矩阵?
感谢您的帮助!
糟糕,现在我明白我的错误了。
首先,COEFF 是正交的(不确定)所以 inv(COEFF) == COEFF'
投影是由
找到的proj = COEFF' * (x-m)