Ich lese Abdi & amp; Williams (2010) "Principal Component Analysis", und ich versuche, die SVD zu wiederholen, um Werte für weitere PCA zu erreichen.
Der Artikel besagt, dass folgende SVD:
X = P D Q ^ t
Ich lade meine Daten in ein np.array X.
%Vor%Aber ich bekomme nicht die obige Gleichheit beim Überprüfen mit
%Vor%X_a und X haben die gleichen Dimensionen, aber die Werte sind nicht gleich. Fehle ich etwas oder ist die Funktionalität der Funktion np.linalg.svd nicht irgendwie mit der Gleichung im Papier kompatibel?
TL; DR: numpys SVD berechnet X = PDQ, also ist das Q bereits transponiert.
SVD zerlegt die Matrix X
effektiv in die Rotationen P
und Q
und die Diagonalmatrix D
. Die Version von linalg.svd()
I hat Vorwärtsdrehungen für P
und Q
. Sie möchten Q
nicht umwandeln, wenn Sie X_a
berechnen.
Ich bekomme: 1.02, 1.02, 1.8e-15, was zeigt, dass X_a
sehr genau rekonstruiert X
.