2

编辑:我的单词表的大小是我写下的 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 的单词来减小列大小,这意味着它们只被使用过一次。我是否因为这种尝试而过度偏向数据?

  • 我尝试了 rapidminer 尝试,将 csv 加载到数据库中。然后像rapidminer建议的那样,按批次顺序读取它进行处理。但是Mysql不能在一个表中存储那么多列。如果我转置数据,然后在导入时重新转置它也需要很长时间......

--> 所以总的来说,我是在征求如何在这样的语料库上执行 svd 的建议。

4

2 回答 2

1

这是一个大的密集矩阵。然而,它只是一个很小的稀疏矩阵。

使用稀疏矩阵 SVD 算法就足够了。例如这里

于 2010-05-15T01:07:40.630 回答
-1

SVD 受内存大小的限制。看:

折叠:关于部分矩阵更新的论文。

Apache Mahout是一个分布式数据挖掘库,在具有并行 SVD 的 hadoop 上运行

于 2010-05-15T01:15:04.710 回答