例如我们有以下数据
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;
如何恢复原始矩阵?
答案 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
它们不会准确。