是否有办法以在线学习的方式训练LDA模型,即加载之前训练的模型,并用新文档进行更新?
回答:
我自己回答:目前这是不可能的。
实际上,Spark有两种LDA模型训练的实现方式,其中一种是OnlineLDAOptimizer。这种方法特别设计用于通过文档的小批量增量更新模型。
优化器实现了在线变分贝叶斯LDA算法,该算法在每次迭代中处理语料库的一个子集,并自适应地更新词-主题分布。
原始在线LDA论文:Hoffman, Blei和Bach,“潜在Dirichlet分配的在线学习。”NIPS, 2010。
遗憾的是,目前的mllib API不允许加载之前训练的LDA模型,并向其添加一批新数据。
一些mllib模型支持使用initialModel
作为增量更新的起点(参见KMeans或GMM),但LDA目前不支持这一点。我已经为此提交了一个JIRA:SPARK-20082。请投赞成票 😉
顺便提一下,还有一个关于流式LDA的JIRA:SPARK-8696