如何加速R中的主题模型?

Ade*_*del 7 r machine-learning lda unsupervised-learning topic-modeling

背景 我试图使用以下数据和规范文档来拟合主题模型= 140 000,单词= 3000,主题= 15.我topicmodels在Windows 7机器上使用R(3.1.2)中的软件包(ram 24 GB ,8核心).我的问题是计算只能继续进行,而不会产生任何"收敛".

我在LDA()函数中使用默认选项topicmodels:

运行模型

dtm2.sparse_TM <- LDA(dtm2.sparse, 15)
Run Code Online (Sandbox Code Playgroud)

该模型已经运行了大约72个小时 - 仍然像我写的那样.

问题 所以,我的问题是(a)这是否是正常行为; (b)如果不是第一个问题,你对做什么有任何建议; (c)如果对第一个问题是肯定的,我怎样才能大大提高计算的速度?

附加信息:原始数据不包含3000字,但约370万字.当我跑(在同一台机器上)它没有收敛,甚至在几周之后.所以我用300个单词运行它,只有500个文件(随机选择)并且都不是很好.对于所有模型,我使用与以前相同的主题和默认值.

因此,对于我当前的模型(请参阅我的问题),我在tm包的帮助下删除了稀疏术语.

删除稀疏术语

dtm2.sparse <- removeSparseTerms(dtm2, 0.9)
Run Code Online (Sandbox Code Playgroud)

感谢提前输入Adel

Ami*_*mir 1

您需要使用在线变分贝叶斯,它可以轻松处理如此数量的文档的训练。在在线变分贝叶斯中,您使用小批量训练样本来训练模型,这会惊人地提高收敛速度(请参阅下面的 SGD 链接)。

对于 R,您可以使用这个在这里您可以阅读有关它的更多信息以及如何使用它。另请参阅这篇论文,因为 R 包实现了该论文中使用的方法。如果可能的话,导入他们在 R上传的 Python 代码。我强烈推荐 Python 代码,因为我在最近从事的一个项目中获得了非常丰富的经验。学习模型后,您可以保存主题分布以供将来使用,并将其输入onlineldavb.py与测试样本一起使用,以在给定那些未见过的文档的情况下集成主题分布。通过在线变分贝叶斯方法,我在不到 15 小时的时间内用词汇数据集中的 500000 个文档和 5400 个单词训练了一个 LDA。

来源