使用spark ml的推荐系统

时间:2016-10-19 16:43:56

标签: scala apache-spark machine-learning

我正在关注documentation example来构建推荐系统 ,我创建ALS构造函数都很好

 val als = new ALS()
  .setMaxIter(maxIterations)
  .setRegParam(regressionParam)
  .setUserCol("user_id")
  .setItemCol("item_id")
  .setRatingCol("rating")

val model = als.fit(trainData)
val predictions = model.transform(testData)
println("predictions"+predictions.show(80))

val evaluator = new RegressionEvaluator()
  .setMetricName("rmse")
  .setLabelCol("rating")
  .setPredictionCol("prediction")
val rmse = evaluator.evaluate(predictions)
println(s"Root-mean-square error = $rmse")
predictions

我训练模型,设置一切,但我的主要问题是我可以用测试数据预测,它返回我传递给它的每个项目ID的预测因子但我实际上需要模型可以建议我来自的项目user_id不通过添加预测列来预测项ID的合适程度。 org.apache.spark.ml.recommendation.ALS可以这样做吗?

1 个答案:

答案 0 :(得分:2)

目前要为user_id = 1的用户推荐10个热门项目,您必须执行以下操作:

val predictionsForUser1 = predictions
    .where(col("user_id") === 1)
    .orderBy(col("predictions").desc)
    .limit(10)

在下一个Spark版本中,它将以更加用户友好的方式实现