Scala spark DistributedLDAModel和LocalLDAModel
我正在尝试训练一个主题模型来对文档进行集群和主题分类。 我的培训代码如下所示,迭代次数默认设置为20次。优化器将默认为EMScala spark DistributedLDAModel和LocalLDAModel,scala,apache-spark,lda,Scala,Apache Spark,Lda,我正在尝试训练一个主题模型来对文档进行集群和主题分类。 我的培训代码如下所示,迭代次数默认设置为20次。优化器将默认为EM val ldaModel = new LDA(). setK(500).setOptimizer("em").run(corpus))) 然后,我在我的培训文档中选取一个文档,使用 val topicsA = ldaModel.topicDistributions.filter(x=>x._1 == 100) 其次,我找到这个文档的单词ve
val ldaModel = new LDA().
setK(500).setOptimizer("em").run(corpus)))
然后,我在我的培训文档中选取一个文档,使用
val topicsA = ldaModel.topicDistributions.filter(x=>x._1 == 100)
其次,我找到这个文档的单词vec,并使用LocalLDAModel预测它的主题
val topicsB = ldaModel.toLocal.topicDistribution(wordsVec)
但我得到了topicsA和topicsB两个完全不同的主题分布
我有点迷路了,有什么建议吗
还有一件事,如何在EM和在线之间选择优化器?似乎如果您需要在培训模型后添加更多的小批量数据,联机是更好的选择,并且可以节省内存
谢谢 这里只是猜测一下,但是toLocal是否可能不保存主题ID?在DistributedLDAModel.topicsMatrix中,它发出警告 不保证主题的顺序
所以,也许你实际上从两个方面都得到了相同的分布,但它被置换了。是的,我认为这就是原因,LocalLDAModel。主题分布通过使用该主题矩阵进行预测。谢谢