如何加快 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语言︱LDA主题模型——最优主题...

R语言中对文本数据进行主题模型topic modeling分析

7. 如何构建主题域模型原则之站在巨人的肩上IBM-FSDM主题域模型划分

NLP系列(三)LDA主题模型

如何从 gensim 打印 LDA 主题模型? Python

哪些观察与带有 sklearn 包实现的 LDA 中的主题模型相关联