PCA alanına yeni bir vektör nasıl yansıtılır?


21

Temel bileşen analizi (PCA) yaptıktan sonra, PCA alanına yeni bir vektör yansıtmak istiyorum (yani PCA koordinat sistemindeki koordinatlarını bulmak).

PCA'yı R dilinde kullanarak hesapladım prcomp. Şimdi vektörümü PCA dönme matrisi ile çarpabilmeliyim. Bu matristeki temel bileşenler satır veya sütunlar halinde mi düzenlenmelidir?

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 

Yanıtlar:


23

@Srikant, rotasyon (veya yüklemeler) matrisi sütun olarak düzenlenmiş özvektörler içerdiğinden, size doğru cevabı verdi, böylece %*%vektörünüzü veya yeni veri matrisinizi örn prcomp(X)$rotation. Bununla birlikte, PCA EV'leri hesaplanırken uygulanan ek merkezleme veya ölçeklendirme parametreleriyle ilgili dikkatli olun.

R de predict()işlevi yararlı bulabilirsiniz , bkz ?predict.prcomp. BTW, yeni verilerin projeksiyonunun nasıl uygulandığını sadece şunu girerek kontrol edebilirsiniz:

getS3method("predict", "prcomp")

24

Sadece @ chl'nin harika cevabına (+1) eklemek için daha hafif bir çözüm kullanabilirsiniz:

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

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

Bu, tüm pcanesneyi newdataPCA alanına yansıtmak üzere kaydetmek istemiyorsanız çok kullanışlıdır .


5

SVD'de, A bir mxn matrisi ise, sağ tekil matris V'in üst k satırları, A'nın orijinal sütunlarının k <= n olduğu bir k-boyut temsilidir.

A = UΣV t
=> A t = VΣ t U t = VΣU t
=> A t U = VΣU t U = VΣ ----------- (U dikey olduğundan)
=> A t- 1 = VΣΣ -1 = V

Yani V=birtUΣ-1

A t'nin satırları veya A'nın sütunları V sütunlarına
eşlenir. Boyut küçültme için PCA'nın gerçekleştirileceği yeni verilerin matrisi Q, aqxn matrisi ise, hesaplamak için formülü kullanınR,=StUΣ-1 , R sonucu istenen sonuçtur. R, n'den n'ye bir matristir ve R'nin üst k satırları (n'ye göre matris olarak ak olarak görülebilir), k'nin boyut uzayındaki Q sütunlarının yeni bir temsilidir.


2

Özvektörlerin (yani temel bileşenler) sütunlar halinde düzenlenmesi gerektiğine inanıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.