วิธีการฉายเวกเตอร์ใหม่บนพื้นที่ PCA?


21

หลังจากทำการวิเคราะห์องค์ประกอบหลัก (PCA) ฉันต้องการฉายเวกเตอร์ใหม่ลงบนพื้นที่ PCA (เช่นค้นหาพิกัดในระบบพิกัด PCA)

ผมได้คำนวณ PCA ในภาษา R 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 แล้วให้คุณคำตอบที่เหมาะสมตั้งแต่การหมุน (หรือแรง) เมทริกซ์มี eigenvectors จัดคอลัมน์ที่ชาญฉลาดเพื่อให้คุณเพียงแค่ต้องคูณ (ใช้%*%) prcomp(X)$rotationเวกเตอร์หรือเมทริกซ์ของข้อมูลใหม่ด้วยเช่นคุณ อย่างไรก็ตามโปรดระวังด้วยพารามิเตอร์การกำหนดกึ่งกลางหรือการปรับขนาดที่ใช้เมื่อคำนวณ PCA EVs

ในการวิจัยนี้คุณยังอาจพบว่ามีประโยชน์ฟังก์ชั่นให้ดูpredict() ?predict.prcompBTW คุณสามารถตรวจสอบว่าการฉายข้อมูลใหม่ถูกนำไปใช้โดยเพียงแค่ป้อน:

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ออบเจ็กต์ทั้งหมดสำหรับการฉายnewdataลงในพื้นที่ PCA


5

ใน SVD หาก A เป็นเมทริกซ์ mxn แถว k อันดับสูงสุดของเมทริกซ์เอกพจน์ V ขวาคือการแทนค่า k-dimension ของคอลัมน์ดั้งเดิมของ A โดยที่ k <= n

A = UΣV T
=> เอที = VΣ T U T = VΣU T
=> เอที U = VΣU T U = VΣ ----------- (เพราะ U เป็นมุมฉาก)
=> เอที- 1 = VΣΣ -1 = V

ดังนั้น -1V=Aเสื้อยูΣ

แถวของ A tหรือคอลัมน์ของ A แผนที่ไปยังคอลัมน์ของ V
หากเมทริกซ์ของข้อมูลใหม่ที่จะทำการ PCA สำหรับการลดขนาดคือ Q, aqxn matrix จากนั้นใช้สูตรในการคำนวณ - 1ผลลัพธ์ R คือผลลัพธ์ที่ต้องการ R คือเมทริกซ์ n คูณ n และแถว k อันดับสูงสุดของ R (สามารถมองเห็นได้ว่าเป็นเมทริกซ์เอกคูณ n) เป็นการนำเสนอคอลัมน์ใหม่ของคิวในพื้นที่มิติ kR=Qเสื้อยูΣ


2

ฉันเชื่อว่า eigenvectors (เช่นองค์ประกอบหลัก) ควรจัดเป็นคอลัมน์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.