Нанести PCA на очень большую разреженную матрицу
Я выполняю задачу классификации текста с помощью R, и я получаю матрицу условий документа размером 22490 на 120 000 (только 4 миллиона ненулевых записей, менее 1% записей). Теперь я хочу уменьшить размерность, используя PCA (анализ основных компонентов). К сожалению, R не может обработать эту огромную матрицу, поэтому я храню эту разреженную матрицу в файле в «Matrix Market Format», надеясь использовать некоторые другие методы для создания PCA.
Кто-нибудь может дать мне несколько советов по поводу полезных библиотек (независимо от языка программирования), которые могут с легкостью сделать PCA с этой крупномасштабной матрицей, или, собственно говоря, сделать PCA от руки, другими словами, сначала вычислите ковариационную матрицу, а затем вычислите собственные значения и собственные векторы для ковариационной матрицы.
Что я хочу, чтобы рассчитать все ПК (120 000) и выбрать только лучшие ПК N, на которые приходится 90% дисперсии. Очевидно, что в этом случае я должен задавать порог априори, чтобы установить очень малые значения дисперсии равными 0 (в ковариационной матрице), в противном случае ковариационная матрица не будет разреженной, и ее размер будет 120 000 на 120 000, что невозможно справиться с одной машиной. Кроме того, нагрузки (собственные векторы) будут очень большими и должны храниться в разреженном формате.
Большое спасибо за любую помощь!
Примечание: я использую машину с 24 ГБ оперативной памяти и 8 процессорных ядер.