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?

r  pca  r  variance  heteroscedasticity  misspecification  distributions  time-series  data-visualization  modeling  histogram  kolmogorov-smirnov  negative-binomial  likelihood-ratio  econometrics  panel-data  categorical-data  scales  survey  distributions  pdf  histogram  correlation  algorithms  r  gpu  parallel-computing  approximation  mean  median  references  sample-size  normality-assumption  central-limit-theorem  rule-of-thumb  confidence-interval  estimation  mixed-model  psychometrics  random-effects-model  hypothesis-testing  sample-size  dataset  large-data  regression  standard-deviation  variance  approximation  hypothesis-testing  variance  central-limit-theorem  kernel-trick  kernel-smoothing  error  sampling  hypothesis-testing  normality-assumption  philosophical  confidence-interval  modeling  model-selection  experiment-design  hypothesis-testing  statistical-significance  power  asymptotics  information-retrieval  anova  multiple-comparisons  ancova  classification  clustering  factor-analysis  psychometrics  r  sampling  expectation-maximization  markov-process  r  data-visualization  correlation  regression  statistical-significance  degrees-of-freedom  experiment-design  r  regression  curve-fitting  change-point  loess  machine-learning  classification  self-study  monte-carlo  markov-process  references  mathematical-statistics  data-visualization  python  cart  boosting  regression  classification  robust  cart  survey  binomial  psychometrics  likert  psychology  asymptotics  multinomial 

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")

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.


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Σ


2

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.