Применить 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 ядрами процессора.

17
задан Ensom Hodder 23 May 2012 в 15:20
поделиться