Saya melakukan tugas klasifikasi teks dengan R, dan saya mendapatkan matriks istilah dokumen dengan ukuran 22490 sebanyak 120.000 (hanya 4 juta entri bukan nol, entri kurang dari 1%). Sekarang saya ingin mengurangi dimensionalitas dengan memanfaatkan PCA (Principal Component Analysis). Sayangnya, R tidak dapat menangani matriks besar ini, jadi saya menyimpan matriks jarang ini dalam file di "Format Pasar Matriks", berharap untuk menggunakan beberapa teknik lain untuk melakukan PCA.
Jadi siapa pun dapat memberi saya beberapa petunjuk untuk perpustakaan yang bermanfaat (apa pun bahasa pemrogramannya), yang dapat melakukan PCA dengan matriks skala besar ini dengan mudah, atau melakukan PCA sendiri, dengan kata lain, menghitung matriks kovarians pada awalnya, dan lalu hitung nilai eigen dan vektor eigen untuk matriks kovarians .
Yang saya inginkan adalah menghitung semua PC (120.000), dan hanya memilih PC N teratas, yang menyumbang varian 90% . Jelas, dalam hal ini, saya harus memberikan ambang apriori untuk menetapkan beberapa nilai varians yang sangat kecil ke 0 (dalam matriks kovarians), jika tidak, matriks kovarians tidak akan jarang dan ukurannya akan menjadi 120.000 kali 120.000, yang merupakan mustahil untuk ditangani dengan satu mesin tunggal. Juga, pemuatan (vektor eigen) akan sangat besar, dan harus disimpan dalam format yang jarang.
Terima kasih banyak atas bantuannya!
Catatan: Saya menggunakan mesin dengan RAM 24GB dan 8 core cpu.
sumber
Jawaban:
Saya menyarankan paket irlba - ia menghasilkan hasil yang hampir sama dengan svd, namun Anda dapat menentukan sejumlah kecil nilai tunggal untuk dipecahkan. Contoh, menggunakan matriks jarang untuk menyelesaikan hadiah Netflix, dapat ditemukan di sini: http://bigcomputing.blogspot.de/2011/05/bryan-lewiss-vignette-on-irlba-for-svd.html
sumber
Saya sarankan menggunakan SLEPc untuk menghitung sebagian SVD. Lihat Bab 4 dari Manual Pengguna dan halaman manual SVD untuk detailnya.
sumber
Saya memilih mahout yang juga bagus untuk tugas NLP / TA lainnya dan mengimplementasikan peta / perkecil.
sumber
Saya sarankan menggunakan dekomposisi nilai singular tambahan, yang ada banyak dalam literatur. Contohnya:
Semua pendekatan ini direduksi menjadi sebagai berikut:
sumber
Anda masih bisa menggunakan R.
Revolution R
adalah build R yang menangani kumpulan data yang lebih besar dari RAM. Gunakan fungsinyaprincomp
.Ini juga memiliki berbagai fungsi statistik yang dirancang khusus untuk masalah gaya data besar yang tidak sesuai dengan RAM, misalnya regresi linier, regresi logistik, kuantil, dll.
Anda dapat mengunduh versi Akademik berfitur lengkap tanpa biaya, dengan mencentang kotak "Saya seorang akademisi".
sumber