Wie projiziert man einen neuen Vektor auf den PCA-Raum?

21

Nach der Durchführung der Hauptkomponentenanalyse (PCA) möchte ich einen neuen Vektor auf den PCA-Raum projizieren (dh seine Koordinaten im PCA-Koordinatensystem finden).

Ich habe PCA in R-Sprache mit berechnet prcomp. Jetzt sollte ich meinen Vektor mit der PCA-Rotationsmatrix multiplizieren können. Sollen die Hauptkomponenten in dieser Matrix in Zeilen oder Spalten angeordnet werden?

Pixel
quelle

Antworten:

23

Nun, @Srikant hat Ihnen bereits die richtige Antwort gegeben, da die Rotationsmatrix (oder Ladematrix) spaltenweise angeordnete Eigenvektoren enthält, so dass Sie nur %*%Ihren Vektor oder Ihre Matrix neuer Daten mit z prcomp(X)$rotation. Seien Sie jedoch vorsichtig mit zusätzlichen Zentrierungs- oder Skalierungsparametern, die beim Berechnen von PCA-EVs angewendet wurden.

In R kann auch die predict()Funktion nützlich sein , siehe ?predict.prcomp. Übrigens können Sie überprüfen, wie die Projektion neuer Daten implementiert wird, indem Sie einfach Folgendes eingeben:

getS3method("predict", "prcomp")
chl
quelle
24

Um die fantastische Antwort von @ chl (+1) zu ergänzen, können Sie eine einfachere Lösung verwenden:

# perform principal components analysis
pca <- prcomp(data) 

# project new data onto the PCA space
scale(newdata, pca$center, pca$scale) %*% pca$rotation 

Dies ist sehr nützlich, wenn Sie nicht das gesamte pcaObjekt für die Projektion newdataauf den PCA-Bereich speichern möchten .

Ben Rollert
quelle
5

Wenn in SVD A eine mxn-Matrix ist, sind die oberen k Zeilen der rechten singulären Matrix V eine k-dimensionale Darstellung der ursprünglichen Spalten von A, wobei k <= n ist

A = UΣV t
=> A t = VΣ t U t = VΣU t
=> A t U = VΣU t U = VΣ ----------- (weil U orthogonal ist)
=> A t- 1 = VΣΣ -1 = V

Also ist -1V=EINtUΣ

Die Zeilen von A t oder die Spalten von A werden den Spalten von V zugeordnet.
Wenn die Matrix der neuen Daten, für die PCA zur Dimensionsreduktion durchgeführt werden soll, Q, aqxn-Matrix ist, verwenden Sie die Formel zur Berechnung von - In 1 ist das Ergebnis R das gewünschte Ergebnis. R ist eine Matrix von n mal n, und die oberen k Zeilen von R (können als eine Matrix von n angesehen werden) sind eine neue Darstellung der Spalten von Q im Raum der k-Dimension.R=Q.tUΣ

Tom
quelle
2

Ich glaube, dass die Eigenvektoren (dh die Hauptkomponenten) als Spalten angeordnet werden sollten.


quelle