背景
我正在尝试使用以下数据和规范文档来拟合主题模型= 140 000,words = 3000,topic = 15.我在Windows 7计算机上使用R(3.1.2)中的包topicmodels
(冲压24 GB,8芯)。我的问题是计算只能继续进行,而不会产生任何“收敛”。
我使用LDA()
中的topicmodels
函数中的默认选项:
运行模型
dtm2.sparse_TM <- LDA(dtm2.sparse, 15)
该模型已经运行了大约72小时 - 仍然像我在写作一样。
问题 所以,我的问题是(a)这是否是正常行为; (b)如果不是第一个问题,你对做什么有任何建议; (c)如果对第一个问题是肯定的,我怎样才能大大提高计算的速度?
其他信息:原始数据不包含3000字,但约有370万字。当我跑(在同一台机器上)它没有收敛,甚至在几周之后。所以我用300个单词运行它,只有500个文件(随机选择)并且都不是很好。对于所有模型,我使用与以前相同的主题和默认值。
因此,对于我当前的模型(请参阅我的问题),我在tm包的帮助下删除了稀疏术语。
删除稀疏字词
dtm2.sparse <- removeSparseTerms(dtm2, 0.9)
感谢提前输入 阿德尔
答案 0 :(得分:2)
您需要使用在线变量贝叶斯,它可以轻松处理培训这样数量的文档。在在线变分贝叶斯中,您使用小批量的训练样本训练模型,这极大地提高了收敛速度(参见下面的SGD链接)。
对于R,您可以使用此package。 Here您可以阅读有关它的更多信息以及如何使用它。另请参阅this论文,因为R包实现了该论文中使用的方法。如果可能的话,导入他们在R中上传here的Python代码。我强烈推荐Python代码,因为我对我最近工作的项目有很好的经验。学习模型后,您可以保存主题分布以供将来使用,并将其输入到onlineldavb.py
以及测试样本,以便在给定这些看不见的文档的主题分布上进行集成。通过在线变分贝叶斯方法,我在不到15个小时的时间里,在词汇数据集中训练了一个包含500000个文档和5400个单词的LDA。
<强>来源强>