Spark LDA — согласованные распределения тем

Я использую реализацию LDA Spark, как показано в примере кода здесь. Я хочу получить согласованные темы/распределения тем для моих обучающих данных. Я тренируюсь на двух машинах и хочу, чтобы результат был одинаковым.

Я понимаю, что LDA использует случайный компонент для обучения/вывода, это объясняется в этом on-the-same-corpus/15069580#15069580">SO post. Похоже, что в python gensim можно добиться стабильных результатов, установив начальное значение вручную. Я пробовал это в Spark, но я все еще получаю небольшие расхождения в моих выходных распределениях по темам.

ldaParams: LDA = new LDA().setK(10).setMaxIterations(60).setSeed(10L)
val distributedLDAModel: DistributedLDAModel = ldaParams.run(corpusInfo.docTermVectors).asInstanceOf[DistributedLDAModel]
val topicDistributions: Map[Long,Vector] = distributedLDAModel.topicDistributions.collect.toMap //produces different results on each run

Есть ли способ получить последовательное распределение тем для моего обучающего набора данных?


person alex9311    schedule 18.06.2016    source источник
comment
Что вы подразумеваете под небольшой? Можете ли вы привести примерный порядок величины.   -  person zero323    schedule 18.06.2016
comment
Я мог бы попытаться получить оценку, но какое это имеет значение? Я ищу стабильные результаты. Это вообще возможно?   -  person alex9311    schedule 19.06.2016
comment
Что ж, это важно, потому что мы работаем с этой уродливой штукой, называемой FP-арифметикой, где операции, которые, как мы ожидаем, будут ассоциативными и коммутативными, таковыми не являются. Поскольку каждое перемешивание в Spark вводит источник недетерминизма, нет надежной гарантии, что вы получите точно такой же результат при каждом запуске, даже если последовательность RNG является детерминированной.   -  person zero323    schedule 19.06.2016