7

背景 我正在尝试使用以下数据和规范文档 = 140 000、单词 = 3000 和主题 = 15 来拟合主题模型。我topicmodels在 Windows 7 机器(ram 24 GB)上使用 R(3.1.2)中的包, 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)

感谢您提前输入阿德尔

4

1 回答 1

2

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

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

来源

于 2016-01-04T01:58:45.327 回答