背景--我正在尝试将主题模型与以下数据和规范( documents=140 0 0 0,words =3,000和documents=140= 15 )相匹配。我在一台Windows7机器(ram 24 GB,8核)上使用了R (3.1.2)中的包topicmodels。我的问题是,计算只会继续进行,而不会产生任何“收敛”。
我在LDA()函数中使用topicmodels中的默认选项
运行模型
dtm2.sparse_TM <- LDA(dtm2.sparse, 15)模型运行了大约72个小时--现在仍然是我写作的时候。
问题所以,我的问题是:(a)如果这是正常行为;(b)如果不是第一个问题,你对做什么有什么建议;(c)如果是第一个问题,我怎样才能大大提高计算速度?
附加信息:原始数据包含的不是3000字,而是大约370万字。当我(在同一台机器上)运行它时,它没有收敛,甚至在几周后也没有收敛。所以我用了300个单词,只有500个文档(随机抽取),并不是所有的都工作得很好。对于所有模型,我使用了与以前相同的主题和默认值的nr。
因此,对于我的当前模型(请参阅我的问题),我在tm包的帮助下删除了稀疏术语。
删除稀疏项
dtm2.sparse <- removeSparseTerms(dtm2, 0.9)感谢预先提供的意见。
发布于 2016-01-04 01:58:45
您需要使用在线变分贝叶斯,它可以轻松地处理这样数量的培训文档。在在线变分贝叶斯中,您使用训练样本的小批来训练模型,这极大地提高了收敛速度(参见下面的SGD链接)。
对于R,您可以使用这个套餐。这里你可以读到更多关于它以及如何使用它的信息。还可以查看这文件,因为R包实现了在该文件中使用的方法。如果可能的话,导入他们上传到R中的Python代码,我强烈推荐这里代码,因为我对我最近从事的一个项目有很好的经验。在了解了模型之后,您可以保存主题发行版以供以后使用,并将其与测试样本一起使用到onlineldavb.py,以便在给定这些未见文档的主题分布上进行集成。使用在线变分贝叶斯方法,在不到15小时的时间内,我用500000份文档和5400个单词在词汇数据集中训练了一个LDA。
源
https://stackoverflow.com/questions/28154789
复制相似问题