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?

pixel
sumber

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")
chl
sumber
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.

Ben Rollert
sumber
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Σ

Tom
sumber
2

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


sumber