Bagaimana cara memproyeksikan vektor baru ke ruang PCA?


21

Setelah melakukan analisis komponen utama (PCA), saya ingin memproyeksikan vektor baru ke ruang PCA (yaitu menemukan koordinatnya dalam sistem koordinat PCA).

Saya telah menghitung PCA dalam bahasa R menggunakan prcomp. Sekarang saya harus bisa mengalikan vektor saya dengan matriks rotasi PCA. Haruskah komponen utama dalam matriks ini disusun dalam baris atau kolom?

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 

Jawaban:


23

Nah, @Srikant sudah memberi Anda jawaban yang benar karena matriks rotasi (atau memuat) berisi vektor eigen yang disusun berdasarkan kolom, sehingga Anda hanya perlu mengalikan (menggunakan %*%) vektor atau matriks data baru Anda dengan misalnya prcomp(X)$rotation. Namun, berhati-hatilah dengan parameter pemusatan atau penskalaan ekstra apa pun yang diterapkan saat menghitung EV PCA.

Di R, Anda juga dapat menemukan predict()fungsi yang berguna , lihat ?predict.prcomp. BTW, Anda dapat memeriksa bagaimana proyeksi data baru diimplementasikan dengan hanya memasukkan:

getS3method("predict", "prcomp")

24

Untuk menambahkan jawaban fantastis @ chl (+1), Anda dapat menggunakan solusi yang lebih ringan:

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

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

Ini sangat berguna jika Anda tidak ingin menyimpan seluruh pcaobjek untuk diproyeksikan newdatake ruang PCA.


5

Dalam SVD, jika A adalah matriks mxn, baris k atas dari matriks singular kanan V, adalah representasi k-dimensi dari kolom asli A di mana k <= n

A = UΣV t
=> A t = VΣ t U t = VΣU t
=> A t U = VΣU t U = VΣ ----------- (karena U adalah orthogonal)
=> Sebuah t- 1 = VΣΣ -1 = V

Jadi -1V=SEBUAHtUΣ

Baris A t atau kolom A map ke kolom V.
Jika matriks data baru yang digunakan untuk melakukan PCA untuk pengurangan dimensi adalah Q, matriks aqxn, maka gunakan rumus untuk menghitung - 1 , hasil R adalah hasil yang diinginkan. R adalah matriks n demi n, dan baris k atas R (dapat dilihat sebagai matriks ak oleh n) adalah representasi baru dari kolom Q dalam ruang dimensi k.R=QtUΣ


2

Saya percaya bahwa vektor eigen (yaitu, komponen utama) harus disusun sebagai kolom.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.