Làm thế nào để chiếu một vectơ mới lên không gian PCA?


21

Sau khi thực hiện phân tích thành phần chính (PCA), tôi muốn chiếu một vectơ mới lên không gian PCA (tức là tìm tọa độ của nó trong hệ tọa độ PCA).

Tôi đã tính PCA bằng ngôn ngữ R bằng cách sử dụng prcomp. Bây giờ tôi có thể nhân vectơ của mình với ma trận xoay PCA. Các thành phần chính trong ma trận này nên được sắp xếp theo hàng hoặc cột?

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 

Câu trả lời:


23

Chà, @Srikant đã cho bạn câu trả lời đúng vì ma trận xoay (hoặc tải) có chứa các hàm riêng được sắp xếp theo cột, do đó bạn chỉ cần nhân (sử dụng %*%) vectơ hoặc ma trận dữ liệu mới của mình với ví dụ prcomp(X)$rotation. Tuy nhiên, hãy cẩn thận với bất kỳ tham số định tâm hoặc chia tỷ lệ bổ sung nào được áp dụng khi tính toán PCA EVs.

Trong R, bạn cũng có thể tìm thấy predict()hàm hữu ích , xem ?predict.prcomp. BTW, bạn có thể kiểm tra cách trình chiếu dữ liệu mới được thực hiện bằng cách nhập:

getS3method("predict", "prcomp")

24

Chỉ cần thêm vào câu trả lời tuyệt vời của @ chl (+1), bạn có thể sử dụng một giải pháp nhẹ hơn:

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

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

Điều này rất hữu ích nếu bạn không muốn lưu toàn bộ pcađối tượng để chiếu newdatalên không gian PCA.


5

Trong SVD, nếu A là ma trận mxn, k hàng trên cùng của ma trận số ít V bên phải, là biểu diễn kích thước k của các cột ban đầu của A trong đó k <= n

A = UΣV t
=> A t = VΣ t U t = VΣU t
=> A t U = VΣU t U = VΣ ----------- (vì U là trực giao)
=> A t- 1 = VΣΣ -1 = V

V= =MộttBạnΣ


R= =QtBạnΣ


2

Tôi tin rằng các hàm riêng (nghĩa là các thành phần chính) nên được sắp xếp thành các cột.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.