Matlab 如何从pca分析结果重构数据

pca的目的就是对数据进行降维。
对于已经利用pca函数求得的结果,如何利用这些信息对进行数据的重构,进而求出重构后的误差是很重要的。

具体重构过程:

  1. 利用pca进行求解,得到coeff,score,latent;[coeff,score,latent] = pca(___)
    -关键就在于这里的score。通过查看pca函数的源代码可知score = X*coeff.即将数据映射到pca空间后的坐标并且矩阵大小和数据尺寸大小一致 A = U S V T A=USV^T , S c o r e = A V = U S Score=AV= US
  2. 选取前p个特征对数据重构。(重构后的矩阵尺寸应该和元数据尺寸一致) S c o r e V T = U S V T ScoreV^T=USV^T
    -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)的尺寸为 m n m*n ,为原始数据尺寸。
  3. pcares函数的源代码包含这些命令。

下图是利用到的矩阵,向量示意图。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/huangzhywin/article/details/89315917
今日推荐