Выполнение SVD на твиты. Проблема с памятью - PullRequest
2 голосов
/ 12 мая 2010

РЕДАКТИРОВАТЬ: I размер списка слов в 10-20 раз больше, чем я записал. Я просто забыл ноль.

EDIT2: Я посмотрю на SVDLIBC, а также посмотрю, как уменьшить матрицу до ее плотной версии, чтобы это тоже могло помочь.

Я сгенерировал огромный CSV-файл в качестве вывода из моих pos-тегов и стволовых. Это выглядит так:

        word1, word2, word3, ..., word 150.000
person1   1      2      0            1
person2   0      0      1            0
...
person650

Содержит количество слов для каждого человека. Таким образом, я получаю характерные векторы для каждого человека.

Я хочу запустить SVD на этом звере, но кажется, что матрица слишком велика, чтобы ее можно было сохранить в памяти для выполнения операции. Мой вопрос:

  • если я уменьшу размер столбца, удалив слова, у которых сумма столбцов равна, например, 1, что означает, что они использовались только один раз. Я слишком сильно смещаю данные при этой попытке?

  • Я попытался сделать попытку быстрой загрузки, загрузив CSV в БД. и затем последовательно считывать его с пакетами для обработки, как предлагает quickminer. Но Mysql не может хранить столько столбцов в таблице. Если я транспонирую данные, а затем ретранслирую их при импорте, это также занимает много времени.

-> В общем, я прошу совета, как выполнить svd на таком корпусе.

Ответы [ 2 ]

1 голос
/ 15 мая 2010

Это большая плотная матрица. Тем не менее, это всего лишь небольшая небольшая разреженная матрица.

Достаточно использовать алгоритм SVD с разреженной матрицей. например здесь .

0 голосов
/ 15 мая 2010

SVD ограничен объемом вашей памяти. См:

Складывание : статья о частичных обновлениях матрицы.

Apache Mahout - это распределенная библиотека интеллектуального анализа данных, которая работает на hadoop с параллельным SVD

...