Spark MLlib调整推荐系统

时间:2018-06-05 10:17:55

标签: scala apache-spark machine-learning recommendation-engine collaborative-filtering

我正在研究使用apache spark ALS的推荐系统,我在下面有这个代码,并希望为我的模型获得最佳(最低)RMSE值

val Array(training, test) = review.randomSplit(Array(0.8, 0.2))
val als = new ALS().setMaxIter(iter).setRegParam(reg).setUserCol("userId").setItemCol("movieId").setRatingCol("rating").setRank(rank)
val model = als.fit(training)
val predictions = model.transform(test)
val evaluator = new RegressionEvaluator().setMetricName("rmse").setLabelCol("rating").setPredictionCol("prediction")
val rmse = evaluator.evaluate(predictions)

这样做我正在调整以下4个选项

  • 不同比例的训练,测试数据集
  • 迭代
  • 正规化
  • 潜在因素

每次我训练新模型时,结果的误差范围太宽。有时它像0.43423456一样非常低,但有时它大于1。

所以我的问题是,

  1. 如何处理这个广泛的误差范围?现在,我只是以相同的价值训练模型超过10次并选择最好的模型

  2. 为了获得最佳的RMSE值,我是否需要测试所有可能的选项值?它似乎太多了,因为我从用户那里获得了新的评论数据,而新数据会影响RMSE的结果,这意味着优化的选项值每次都会有所不同

  3. 我很感激您推荐的任何信息或网址。感谢

0 个答案:

没有答案