Artikel Wikipedia tentang analisis komponen utama menyatakan itu
Algoritma yang efisien ada untuk menghitung SVD tanpa harus membentuk matriks X T X , jadi menghitung SVD sekarang menjadi cara standar untuk menghitung analisis komponen utama dari matriks data, kecuali hanya segelintir komponen yang diperlukan.
Bisakah seseorang memberi tahu saya apa algoritma efisien yang dibicarakan oleh artikel ini? Tidak ada referensi yang diberikan (URL atau kutipan ke artikel yang mengusulkan cara perhitungan ini akan menyenangkan).
pca
algorithms
svd
numerics
svd
sumber
sumber
Jawaban:
Seperti yang Anda lihat tergantung pada use case Anda ada pendekatan yang berbeda (konvensi penamaan rutin dapat ditemukan di sini ). Itu karena, misalnya ada bentuk matriks di mana pengurangan Anggota Rumah Tangga bisa lebih mahal daripada rotasi Givens (untuk menyebutkan dua cara "jelas" untuk mendapatkan QR). Referensi standar tentang masalah ini adalah Komputasi Matriks Golub dan Van Loan (saya sarankan menggunakan setidaknya edisi ke-3). Saya juga menemukan Å. Metode Numerik Björck untuk Kuadrat Terkecil Masalah sumber daya yang sangat baik dalam hal ini; sementara SVD bukan fokus utama buku ini, ia membantu mengontekstualisasikan penggunaannya.
Jika saya harus memberi Anda satu saran umum tentang masalah ini adalah jangan mencoba untuk menulis algoritma SVD Anda sendiri kecuali Anda telah berhasil mengambil beberapa kelas pada Aljabar Linear Numerik dan Anda tahu apa yang Anda lakukan. Saya tahu ini kedengarannya berlawanan dengan intuisi tetapi sebenarnya, ada banyak hal yang bisa salah dan Anda berakhir dengan (paling baik) implementasi sub-optimal (jika tidak salah). Ada beberapa suite gratis yang sangat bagus untuk masalah ini (mis. Eigen , Armadillo dan Trilinos untuk beberapa nama.)
sumber
svds
) hanya menggunakan fungsi SVD terpotong mereka sebagai pembungkus untukeigs
rutinitas eigendecomposition ( ) terpotong mereka .