Pertanyaan ini adalah tentang cara yang efisien untuk menghitung komponen utama.
Banyak teks tentang advokasi PCA linier menggunakan dekomposisi nilai singular dari data dengan santai . Yaitu, jika kita memiliki data dan ingin mengganti variabel ( kolomnya ) dengan komponen utama, kita lakukan SVD: , nilai singular (akar kuadrat dari nilai eigen) yang menempati diagonal utama , vektor eigen kanan adalah matriks rotasi ortogonal dari variabel-sumbu ke dalam komponen sumbu, komponen vektor eigen kiri seperti , hanya untuk kasus. Kami kemudian dapat menghitung nilai komponen sebagai .X = U S V ′ S V U V C = X V = U S
Cara lain untuk melakukan PCA variabel adalah melalui dekomposisi matriks kuadrat (yaitu dapat berupa korelasi atau kovarian , dll., variabel). Dekomposisi dapat berupa dekomposisi eigen atau dekomposisi nilai singular: dengan matriks semidefinit positif simetris kuadrat, mereka akan memberikan hasil yang sama dengan nilai eigen seperti diagonal , dan seperti dijelaskan sebelumnya. Nilai komponen akan menjadi .R R = V L V ′ L V
Sekarang, pertanyaan saya: jika data adalah matriks besar, dan jumlah kasus (yang sering merupakan kasus) jauh lebih besar daripada jumlah variabel, maka cara (1) diharapkan akan jauh lebih lambat daripada cara (2) ), karena cara (1) menerapkan algoritma yang cukup mahal (seperti SVD) ke matriks besar; itu menghitung dan menyimpan matriks besar yang kita benar-benar tidak perlu dalam kasus kami (PCA variabel). Jika demikian, lalu mengapa begitu banyak buku teks tampaknya mendukung atau hanya menyebutkan satu-satunya cara (1)? Mungkin itu adalah efisien dan aku kehilangan sesuatu?
Joliffe, Principal component analysis, 2nd ed.
Sebenarnya, Joliffe menjelaskan kedua cara, tetapi dalam bab inti tentang PCA ia mengatakan tentang cara 1, sejauh yang saya ingat.
R
svd