LDA模型预测非抵抗

时间:2017-12-13 02:41:37

标签: apache-spark pyspark apache-spark-mllib lda apache-spark-ml

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

from pyspark.ml.clustering import LocalLDAModel

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

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

请问为什么以及如何解决这个原因?

1 个答案:

答案 0 :(得分:1)

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