如何加快 R 中的主题模型?
Posted
技术标签:
【中文标题】如何加快 R 中的主题模型?【英文标题】:How can I speed up a topic model in R? 【发布时间】:2015-03-25 03:23:52 【问题描述】:背景 我正在尝试使用以下数据和规范文档 = 140 000、单词 = 3000 和主题 = 15 来拟合主题模型。我在 Windows 7 机器(ram 24 GB,8 核)。我的问题是计算只会继续进行,而不会产生任何“收敛”。
我在topicmodels
中使用LDA()
函数中的默认选项:
运行模型
dtm2.sparse_TM <- LDA(dtm2.sparse, 15)
该模型已经运行了大约 72 小时 - 我写的时候仍然如此。
问题 所以,我的问题是(a)这是否是正常行为; (b) 如果不是第一个问题,您对做什么有什么建议; (c) 如果第一个问题是肯定的,我怎样才能显着提高计算速度?
附加信息:原始数据包含的不是 3000 个单词,而是大约 370 万个单词。当我(在同一台机器上)运行它时,它并没有收敛,甚至在几周后也没有。所以我用 300 个单词和 500 个文档(随机选择)运行它,但并不是所有的都能正常工作。我对所有模型都使用了与以前相同的主题和默认值。
所以对于我当前的模型(请参阅我的问题),我在 tm 包的帮助下删除了稀疏术语。
删除稀疏词
dtm2.sparse <- removeSparseTerms(dtm2, 0.9)
感谢您提前输入 阿德尔
【问题讨论】:
【参考方案1】:您需要使用 online 变分贝叶斯,它可以轻松处理如此数量的文档的训练。在在线变分贝叶斯中,您使用小批量训练样本来训练模型,这极大地提高了收敛速度(请参阅下面的 SGD 链接)。
对于 R,您可以使用 package。 Here 你可以阅读更多关于它以及如何使用它的信息。另请查看this 论文,因为该 R 包实现了该论文中使用的方法。如果可能的话,在 R 中导入他们上传的 Python 代码 here。我强烈推荐 Python 代码,因为我在最近从事的一个项目中拥有非常好的经验。学习模型后,您可以保存主题分布以供将来使用,并将其输入到onlineldavb.py
以及您的测试样本,以在给定那些看不见的文档的情况下整合主题分布。使用在线变分贝叶斯方法,我在不到 15 小时的时间内训练了一个包含 500000 个文档和 5400 个单词的词汇数据集中的 LDA。
来源
Variational Bayesian Methods Stochastic Gradient Descent (SGD)
【讨论】:
有没有人将在线变分贝叶斯 python LDA 模型与他们的 R 数据框集成以生成主题? @CelesteManu 我不确定。对不起以上是关于如何加快 R 中的主题模型?的主要内容,如果未能解决你的问题,请参考以下文章
R语言中对文本数据进行主题模型topic modeling分析
7. 如何构建主题域模型原则之站在巨人的肩上IBM-FSDM主题域模型划分