LDA模型预测不一致

LDA model prediction nonconsistance

我训练了一个 LDA 模型并将其加载到环境中以转换新数据:

from pyspark.ml.clustering import LocalLDAModel

lda = LocalLDAModel.load(path)
df = lda.transform(text)

该模型将添加一个名为 topicDistribution 的新列。在我看来,对于相同的输入,这个分布应该是相同的,否则这个模型是不一致的。但是,实际上并没有。

请问是什么原因,如何解决?

LDA 在训练时使用随机性,并在推断新数据时根据实施情况使用随机性。 Spark 中的实现基于 EM MAP 推理,因此我相信它仅在训练模型时使用随机性。这意味着每次训练算法的结果都会不同,运行.

要在 运行 在相同输入和相同参数上获得相同结果,您可以在训练模型时设置随机种子。例如,要将随机种子设置为 1:

model = LDA.train(data, k=2, seed=1)

要在转换新数据时设置种子,请创建参数映射以覆盖默认值(None 用于种子)。

lda = LocalLDAModel.load(path)
paramMap[lda.seed] = 1L
df = lda.transform(text, paramMap)

有关覆盖模型参数的详细信息,请参阅here