为什么 Matlab 中的 'pca' 不给出正交主成分?
Why 'pca' in Matlab doesn't give orthogonal principal components?
为什么在Matlab中使用pca
,我无法得到正交主成分矩阵
例如:
A=[3,1,-1;2,4,0;4,-2,-5;11,22,20];
A =
3 1 -1
2 4 0
4 -2 -5
11 22 20
>> W=pca(A)
W =
0.2367 0.9481 -0.2125
0.6731 -0.3177 -0.6678
0.7006 -0.0150 0.7134
>> PCA=A*W
PCA =
0.6826 2.5415 -2.0186
3.1659 0.6252 -3.0962
-3.9026 4.5028 -3.0812
31.4249 3.1383 -2.7616
在这里,每一列都是一个主成分。所以,
>> PCA(:,1)'*PCA(:,2)
ans =
84.7625
但是主成分矩阵没有相互正交的成分
我查了一些资料,说它们不仅不相关,而且是严格正交的。但我得不到想要的结果。谁能告诉我哪里出错了?
谢谢!
您对 A
在 PCA 特征 space 和主成分中的表示感到困惑。 W
是主成分,它们确实是正交的。
检查 W(:,1).'*W(:,2) = 5.2040e-17
、W(:,1).'*W(:,3) = -1.1102e-16
-- 确实正交
您尝试做的是在 PCA 特征 space 中转换数据(即 A
)。您的意思应该是先将数据居中,然后按如下方式乘以主成分。
% A_PCA = (A-repmat(mean(A),4,1))*W
% A more efficient alternative to the above command
A_PCA = bsxfun(@minus,A,mean(A))*W
% verify that it is correct by comparing it with `score` - i.e. the PCA representation
% of A given by MATLAB.
[W, score] = pca(A); % mean centering will occur inside pca
(score-(A-repmat(mean(A),4,1))*W) % elements are of the order of 1e-14, hence equal.
为什么在Matlab中使用pca
,我无法得到正交主成分矩阵
例如:
A=[3,1,-1;2,4,0;4,-2,-5;11,22,20];
A =
3 1 -1
2 4 0
4 -2 -5
11 22 20
>> W=pca(A)
W =
0.2367 0.9481 -0.2125
0.6731 -0.3177 -0.6678
0.7006 -0.0150 0.7134
>> PCA=A*W
PCA =
0.6826 2.5415 -2.0186
3.1659 0.6252 -3.0962
-3.9026 4.5028 -3.0812
31.4249 3.1383 -2.7616
在这里,每一列都是一个主成分。所以,
>> PCA(:,1)'*PCA(:,2)
ans =
84.7625
但是主成分矩阵没有相互正交的成分
我查了一些资料,说它们不仅不相关,而且是严格正交的。但我得不到想要的结果。谁能告诉我哪里出错了?
谢谢!
您对 A
在 PCA 特征 space 和主成分中的表示感到困惑。 W
是主成分,它们确实是正交的。
检查 W(:,1).'*W(:,2) = 5.2040e-17
、W(:,1).'*W(:,3) = -1.1102e-16
-- 确实正交
您尝试做的是在 PCA 特征 space 中转换数据(即 A
)。您的意思应该是先将数据居中,然后按如下方式乘以主成分。
% A_PCA = (A-repmat(mean(A),4,1))*W
% A more efficient alternative to the above command
A_PCA = bsxfun(@minus,A,mean(A))*W
% verify that it is correct by comparing it with `score` - i.e. the PCA representation
% of A given by MATLAB.
[W, score] = pca(A); % mean centering will occur inside pca
(score-(A-repmat(mean(A),4,1))*W) % elements are of the order of 1e-14, hence equal.