在mllib中lda源码分析(一)中,我们描述了LDA的原理、以及变分推断batch算法和online算法的推导。这一节会再描述下spark MLlib中的ml实现。
spark MLlib的实现,是基于变分推断算法实现的,后续的版本会增加Gibbs sampling。本文主要关注online版本的lda方法。(代码主要以1.6.1为主)
一、Batch算法
二、Online算法
ml中的lda相当于一层wrapper,更好地适配ml中的架构(tranformer/pipeline等等),调用的实际上是mllib中的lda实现。
1.LDA.run(主函数)
OnlineOptimizer.next
submitMinibatch
variationalTopicInference
里面比较核心的一个方法是variationalTopicInference:
ok。关于alpha的更新等,此处不再解释。详见源码。