新しいベクターを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。ところで、次のように入力するだけで、新しいデータの投影がどのように実装されているかを確認できます。

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
=> A T =Vσ T U 、T =VΣU T
=> A T U =VΣU T U =Vσ-----------(Uが直交であるため
)=> A T- 1 =VΣΣ -1 = V

V=AtうんΣ


R=QtうんΣ


2

固有ベクトル(つまり、主成分)は列として配置する必要があると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.