У меня есть большая матрица терминов-документов, и я хочу использовать неотрицательную матричную факторизацию, которую предлагает Matlab. Проблема в том, что после 1-й итерации использование памяти быстро растет и достигает максимума (в моей системе 6 ГБ), а с другой стороны, уровни использования ЦП становятся очень низкими (около 1%-5%). Вся система ведет себя так, как будто она потерпела крах, и только если вы ждете целую вечность, вторая итерация завершается. (Обратите внимание, что для получения хороших результатов требуется гораздо больше итераций).
Вопрос:
Если у кого-то есть опыт в этом или кто-то запускал nnmf() с матрицами еще большего размера, чем у меня, мне бы очень хотелось знать, как он/она на самом деле преодолел упомянутую проблему.
Также: Я сделал это с меньшей матрицей (около 7000x1800) и не имел проблем. Я использую разреженные матрицы, потому что в матрице терминов-документов много нулевых элементов, и это помогает уменьшить пространство, необходимое для хранения. Например, в моем случае матрица Term-Document имеет 14608 * 18828 = 275039424
элементов и sum(sum(spa~=0)) = 1312582
ненулевых элементов:
>> whos
Name Size Bytes Class Attributes
full 14608x18828 2200315392 double
spa 14608x18828 21151944 double sparse