PCA 공간에 새로운 벡터를 투영하는 방법?


21

주성분 분석 (PCA)을 수행 한 후 PCA 공간에 새 벡터를 투영하려고합니다 (즉, PCA 좌표계에서 해당 좌표를 찾습니다).

를 사용하여 R 언어로 PCA를 계산했습니다 prcomp. 이제 내 벡터에 PCA 회전 행렬을 곱할 수 있어야합니다. 이 매트릭스의 주요 구성 요소를 행 또는 열로 배열해야합니까?

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 

답변:


23

글쎄, @Srikant는 회전 (또는 로딩) 행렬에 열 방향으로 배열 된 고유 벡터가 포함되어 있기 때문에 이미 올바른 대답을 제공했습니다. 따라서 %*%벡터 또는 새 데이터 행렬에 (예 :)를 곱하면 prcomp(X)$rotation됩니다. 그러나 PCA EV를 계산할 때 적용되는 추가 센터링 또는 스케일링 매개 변수에주의하십시오.

R에서는 predict()함수가 유용하다는 것을 알 수 있습니다 ?predict.prcomp. BTW에서는 다음을 입력하여 새 데이터의 투영이 어떻게 구현되는지 확인할 수 있습니다.

getS3method("predict", "prcomp")

24

@chl의 환상적인 답변 (+ 1)에 추가하기 위해보다 가벼운 솔루션을 사용할 수 있습니다.

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

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

PCA 공간 pca에 투사 하기 위해 전체 객체 를 저장하지 않으려는 경우 매우 유용합니다 newdata.


5

SVD에서 A가 mxn 행렬 인 경우 오른쪽 특이 행렬 V의 상위 k 개 행은 A의 원래 열에 대한 k- 차원 표현입니다. 여기서 k <= n

A = UΣV t
=>은 t = VΣ t U t = VΣU t
=>를 t U = VΣU t U = VΣ ----------- (U 직교하기 때문에)
=>를 t- 1 = VΣΣ -1 = V

V=Σ


아르 자형=Σ


2

고유 벡터 (즉, 주성분)는 열로 배열되어야한다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.