Comment projeter un nouveau vecteur sur l'espace PCA?

21

Après avoir effectué l'analyse des composants principaux (PCA), je souhaite projeter un nouveau vecteur sur l'espace PCA (c'est-à-dire trouver ses coordonnées dans le système de coordonnées PCA).

J'ai calculé PCA en langage R en utilisant prcomp. Maintenant, je devrais pouvoir multiplier mon vecteur par la matrice de rotation PCA. Les principaux composants de cette matrice doivent-ils être disposés en lignes ou en colonnes?

pixel
la source

Réponses:

23

Eh bien, @Srikant vous a déjà donné la bonne réponse puisque la matrice de rotation (ou de chargements) contient des vecteurs propres disposés en colonnes, de sorte que vous n'avez qu'à multiplier (en utilisant %*%) votre vecteur ou matrice de nouvelles données avec par exemple prcomp(X)$rotation. Soyez prudent, cependant, avec tous les paramètres de centrage ou de mise à l'échelle supplémentaires qui ont été appliqués lors du calcul des EV PCA.

Dans R, vous pouvez également trouver la predict()fonction utile , voir ?predict.prcomp. BTW, vous pouvez vérifier comment la projection de nouvelles données est mise en œuvre en entrant simplement:

getS3method("predict", "prcomp")
chl
la source
24

Juste pour ajouter à la fantastique réponse de @ chl (+1), vous pouvez utiliser une solution plus légère:

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

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

Ceci est très utile si vous ne souhaitez pas enregistrer l'intégralité de l' pcaobjet pour projection newdatasur l'espace PCA.

Ben Rollert
la source
5

Dans SVD, si A est une matrice mxn, les k premières lignes de la matrice singulière droite V, est une représentation en dimension k des colonnes d'origine de A où k <= n

A = UΣV t
=> A t = VΣ t U t = VΣU t
=> A t U = VΣU t U = VΣ ----------- (parce que U est orthogonal)
=> A t- 1 = VΣΣ -1 = V

Donc -1V=UNEtUΣ

Les lignes de A t ou les colonnes de A correspondent aux colonnes de V.
Si la matrice des nouvelles données sur lesquelles effectuer l'ACP pour la réduction de dimension est Q, matrice aqxn, puis utilisez la formule pour calculer - 1 , le résultat R est le résultat souhaité. R est une matrice n par n, et les k premières lignes de R (peuvent être vues comme une matrice k par n) est une nouvelle représentation des colonnes de Q dans l'espace de dimension k.R=QtUΣ

À M
la source
2

Je pense que les vecteurs propres (c'est-à-dire les principaux composants) devraient être organisés en colonnes.


la source