2016-05-10 5 views
0

Warum pca in Matlab, ich kann die orthogonale HauptkomponentenmatrixWarum gibt 'pca' in Matlab keine orthogonalen Hauptkomponenten?

Zum Beispiel nicht bekommen:

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 

Hier ist jede Spalte eine Hauptkomponente. Also,

>> PCA(:,1)'*PCA(:,2) 

ans = 

    84.7625 

Aber die Hauptkomponente Matrix hat nicht zueinander orthogonale Komponenten.

Ich überprüfte einige Materialien, es heißt, sie sind nicht nur unkorreliert, sondern streng orthogonal. Aber ich kann nicht das gewünschte Ergebnis erzielen. Kann mir jemand sagen, wo ich falsch gelaufen bin?

Danke!

Antwort

5

Sie werden verwirrt zwischen der Darstellung von A im PCA-Feature-Raum und den Hauptkomponenten. W sind die Hauptkomponenten, und sie werden tatsächlich orthogonal sein.

Überprüfen Sie, ob W(:,1).'*W(:,2) = 5.2040e-17, W(:,1).'*W(:,3) = -1.1102e-16 - in der Tat orthogonal

Was Sie sind versuchen, die Daten zu tun ist, zu transformieren (das heißt A) in der PCA Merkmalsraum. Sie sollten meinen, die Daten zuerst zu zentrieren und dann mit den Hauptkomponenten wie folgt zu multiplizieren.

% 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. 
+1

Es ist effizienter 'bsxfun' zu verwenden, als' repmat' für die mittlere Zentrierung: 'A_PCA = bsxfun (@ minus, A, Mittelwert (A)) * W' – Dan

+0

Ja. Ich habe gerade diesen Code in Eile geschrieben. –

+0

Oh, ohne meine Mitte, das habe ich verpasst! Vielen Dank! –

Verwandte Themen