从主要组件恢复数据

时间:2014-06-18 08:17:36

标签: matlab matrix

例如我们有以下数据

X =

   10.5720    3.1049   11.3570
    9.9006    5.3971   10.8304
   13.8345   13.6953    7.9372
   10.7696   11.1401   10.4185
    3.7841   11.7044    5.4435
   13.1218    6.5599   10.6859
   12.2868   11.9733    6.5255
   12.2178    6.7505    3.1736
   10.4777    8.1317    9.7029
   15.0439   10.4151   10.2047
    9.0041    5.2511    8.2246
   15.2333    5.4717    8.4375
   12.8940    8.9781   12.1112
   12.3304    8.3102    8.6972
   14.9862    7.2163    3.7159
    6.1892   10.2348    7.8736
   17.1267    5.9513   10.3071
   10.6885   10.8199    7.1708
    8.3460   10.9480    9.1208
   10.3991    5.0058   13.7913
   15.3103   14.7297    7.3875
   19.0889    7.6657    6.8140
   10.4589    8.6138    7.8456
   13.9647    6.2520   10.6031
    8.4215    7.0871   11.0461
   12.9584    7.6198    0.8400
   16.2182    3.9430   12.3646
   12.4796   10.8249    6.5618
   14.7202   13.7099    6.9863
   13.9110   10.8402   11.7954

我计算了协方差矩阵,特征值/特征向量和主成分

>> Covariance=cov(X);
>> [V,D]=eig(Covariance);
>> principal=X*V;

如何从此等式中恢复X?这个等式是否正确?

>> X1=principal*V';

我得到的结果相同,只是想确保所有数据都正确。

还有一个问题,如果不是直接使用matlab的功能,我会这样做:

>> mean1=mean(X);
>> centered=X-repmat(mean1,30,1);
>> covariance1=(centered'*centered)/29;

如何恢复原始矩阵?

2 个答案:

答案 0 :(得分:2)

您可以获得近似值而不是确切的值。

如果U是根据数据的协方差矩阵计算的特征向量。然后减少的数据将是:

Z = X' . U

PCA通过引入新维度并将来自其他维度的数据组合到新维度来减少数据维度。因此,主要数据将被投射到新的维度上。考虑结果是Z,那么如果您执行以下操作:

X2 = U' . Z

要反转公式并获取数据,您将获得一些数据的近似值。并且X不等于X2

答案 1 :(得分:0)

关于如何使用 PCA 函数在 MATLAB 中完成:

[COEFF, SCORE, LATENT, TSQUARED, EXPLAINED, MU] = pca(X)
Xhat = SCORE * COEFF' + MU

它们不会准确。

相关问题