spark DistributedLDAModel和LocalLDAModel

问题描述 投票:0回答:1

我正在尝试训练一个主题模型来聚类和主题一堆文档。我的训练代码如下所示,迭代时间默认设置为20。优化器将默认为EM。

val ldaModel = new LDA().
            setK(500).setOptimizer("em").run(corpus)))

然后我在我的培训文档中选择了一个文档,通过使用来检查它的主题

val topicsA = ldaModel.topicDistributions.filter(x=>x._1 == 100)

其次,我找到了这个doc的单词vec,并使用LocalLDAModel来预测它的主题。

val topicsB = ldaModel.toLocal.topicDistribution(wordsVec)

但我为主题A和主题B提供了2个完全不同的主题发行版。

我有点迷失在这里,有什么建议吗?

还有一件事,如何选择EM和Online之间的优化器?看起来如果您需要在训练模型后稍后添加更多小批量数据,在线是更好的内存保存选项吗?

谢谢!

scala apache-spark lda
1个回答
1
投票

只是在这里抛出一个猜测,但toLocal可能没有保留主题ID吗?在DistributedLDAModel.topicsMatrix它警告

没有关于主题排序的保证。

所以也许你实际上在两个方面都得到了相同的分布,但它已经被置换了。

© www.soinside.com 2019 - 2024. All rights reserved.