【问题标题】:Why the result different everytime after I run the same query in spark?为什么每次我在 spark 中运行相同的查询后结果都不同?
【发布时间】:2017-03-27 07:10:43
【问题描述】:

我在 mllib 中使用协同过滤在我的 spark 集群上训练 ALS 模型。我使用python api。

als = ALS(maxIter=10, rank=10, regParam=0.01, userCol="member_srl", itemCol="productid", ratingCol="rating")
model = als.fit(training)
pred = model.transform(test)

但是当我检查 pred 时,它似乎正在改变。 如果我运行查询pred.count(),结果并不稳定,略有差异。那么为什么结果总是在变化。

例如:

pred.count()

4219257

再次运行:

pred.count()

4220723

再次运行:

pred.count()

4222431

【问题讨论】:

  • 不确定您使用的是哪种语言 - 请添加标签

标签: apache-spark-mllib collaborative-filtering


【解决方案1】:

ALS 是一种用随机数初始化的算法。因此,可以预期会有一点差异。尝试使用明确的种子编号,例如:

als.setSeed(123)

【讨论】:

  • 实际上,我只生成了一次“pred”。我没有多次运行前三行查询。一旦生成了 pred,当我运行 pred.count() 时,它的计数就会改变。
  • 我不知道 pred.createOrReplaceTempView("pred") 是否重要并影响 pred 结果。
猜你喜欢
  • 1970-01-01
  • 2018-05-02
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 2021-02-12
  • 2020-09-27
  • 1970-01-01
  • 2023-02-10
相关资源
最近更新 更多