pca的目的就是对数据进行降维。
对于已经利用pca函数求得的结果,如何利用这些信息对进行数据的重构,进而求出重构后的误差是很重要的。
具体重构过程:
- 利用pca进行求解,得到coeff,score,latent;
[coeff,score,latent] = pca(___)
-关键就在于这里的score。通过查看pca函数的源代码可知score = X*coeff
.即将数据映射到pca空间后的坐标。并且矩阵大小和数据尺寸大小一致。 , 。 - 选取前p个特征对数据重构。(重构后的矩阵尺寸应该和元数据尺寸一致)
-repmat(mean(x,1),m,1) + score(:,1:p)*coeff(:,1:p)'
:因为在求协方差的时候对数据中心化了,这里需要加回来这部分信息。
-score = X*coeff
, 又coeff * coeff' = eye(n)
-矩阵尺寸:score(:,1:p)
: m * p,coeff(:,1:p)'
: p * n;score(:,1:p)*coeff(:,1:p)
的尺寸为 ,为原始数据尺寸。 pcares
函数的源代码包含这些命令。
下图是利用到的矩阵,向量示意图。