Spark中LDA模型的在线学习
Online learning of LDA model in Spark
有没有办法以在线学习方式训练 LDA 模型,即。加载以前训练的模型,并用新文档更新它?
我不认为会有这样的事情存在。 LDA是概率参数估计算法(此处对过程进行了非常简化的解释LDA explained),添加一个或几个文档会改变所有先前计算的概率,因此从字面上重新计算模型。
我不知道你的用例,但如果你的模型在合理的时间内收敛并在每次重新计算时丢弃一些最旧的文档以加快估计速度,你可以考虑批量更新.
我自己回答:目前还不可能。
其实Spark对于LDA模型训练有2种实现,一种是OnlineLDAOptimizer。这种方法专门设计用于使用小批量文档增量更新模型。
The Optimizer implements the Online variational Bayes LDA algorithm, which processes a subset of the corpus on each iteration, and updates the term-topic distribution adaptively.
Original Online LDA paper: Hoffman, Blei and Bach, "Online Learning for Latent Dirichlet Allocation." NIPS, 2010.
不幸的是,当前的 mllib API 不允许加载以前训练的 LDA 模型,并向其添加批处理。
一些 mllib 模型支持 initialModel
作为增量更新的起点(参见 KMeans, or GMM), but LDA does not currently support that. I filled a JIRA for it : SPARK-20082。请投票 ;-)
郑重声明,还有一个用于流式传输 LDA 的 JIRA SPARK-8696
有没有办法以在线学习方式训练 LDA 模型,即。加载以前训练的模型,并用新文档更新它?
我不认为会有这样的事情存在。 LDA是概率参数估计算法(此处对过程进行了非常简化的解释LDA explained),添加一个或几个文档会改变所有先前计算的概率,因此从字面上重新计算模型。
我不知道你的用例,但如果你的模型在合理的时间内收敛并在每次重新计算时丢弃一些最旧的文档以加快估计速度,你可以考虑批量更新.
我自己回答:目前还不可能。
其实Spark对于LDA模型训练有2种实现,一种是OnlineLDAOptimizer。这种方法专门设计用于使用小批量文档增量更新模型。
The Optimizer implements the Online variational Bayes LDA algorithm, which processes a subset of the corpus on each iteration, and updates the term-topic distribution adaptively.
Original Online LDA paper: Hoffman, Blei and Bach, "Online Learning for Latent Dirichlet Allocation." NIPS, 2010.
不幸的是,当前的 mllib API 不允许加载以前训练的 LDA 模型,并向其添加批处理。
一些 mllib 模型支持 initialModel
作为增量更新的起点(参见 KMeans, or GMM), but LDA does not currently support that. I filled a JIRA for it : SPARK-20082。请投票 ;-)
郑重声明,还有一个用于流式传输 LDA 的 JIRA SPARK-8696