有没有办法以在线学习的方式训练LDA模型?加载以前的训练模型,并使用新的文档更新它?
发布于 2017-03-24 13:25:47
回答自己:从现在起,这是不可能的。
实际上,Spark有两个LDA模型训练的实现,一个是OnlineLDAOptimizer。这种方法特别设计成用小批文档增量地更新模型。
优化器实现了在线变分贝叶斯LDA算法,该算法在每次迭代时处理语料库的一个子集,并自适应地更新术语主题分布。 原始在线LDA论文:霍夫曼,布莱和巴赫,“潜在的Dirichlet分配的在线学习”。NIPS,2010年。
不幸的是,当前的mllib API不允许加载经过训练的LDA模型,并向其添加批处理。
一些mllib模型支持initialModel作为增量更新的起点(请参阅KMeans或GMM),但LDA目前不支持这一点。我为此填写了一个JIRA:火花-20082。请投票-)
为了记录在案,还有一个用于流LDA 火花-8696的JIRA
发布于 2017-03-23 10:40:51
我不认为这样的事情会存在。LDA是一种概率参数估计算法(在这里是对LDA解释过程的一个非常简化的解释),添加一个文档或几个文档会改变所有以前计算的概率,因此可以从字面上重新计算模型。
我不知道您的用例,但是如果您的模型在合理的时间内收敛并在每次重新计算时丢弃一些最古老的文档,那么您可以考虑逐批进行更新,以使估计更快。
https://stackoverflow.com/questions/42678816
复制相似问题