大きな用語文書行列があり、matlab が提供する非負行列因数分解関数を使用したいと考えています。問題は、最初の繰り返しの後、メモリ使用量が急速に上昇してトップに達し (私のシステムには 6GB あります)、一方で CPU 使用率レベルが非常に低く (約 1%-5%) になることです。システム全体がクラッシュしたかのように動作し、何年も待った場合にのみ、2 回目の反復が終了します。(良い結果を得るには、さらに多くの反復が必要であることに注意してください)。
質問:
誰かがこれを経験したことがある場合、または私のものよりもさらに大きな行列で 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