【发布时间】:2017-04-17 17:37:26
【问题描述】:
我编写了一个用于提出建议的 spark 程序。然后我使用了 ALS.recommendation 库。我用以下名为 trainData 的数据集做了一个小测试:
(u1, m1, 1)
(u1, m4, 1)
(u2, m2, 1)
(u2, m3, 1)
(u3, m1, 1)
(u3, m3, 1)
(u3, m4, 1)
(u4, m3, 1)
(u4, m4, 1)
(u5, m2, 1)
(u5, m4, 1)
第一列包含用户,第二列包含用户评分的项目,第三列包含评分。
在我用 scala 编写的代码中,我使用以下方法训练了模型:
myModel = ALS.trainImplicit(trainData, 3, 5, 0.01, 1.0)
我尝试使用以下指令检索 u1 的一些建议:
recommendations = myModel.recommendProducts(idUser, 2)
其中 idUser 包含影响用户的 ID u1 作为建议,我得到:
(u1, m1, 1.0536233346170754)
(u1, m4, 0.8540954252858661)
(u1, m3, 0.09069877419040584)
(u1, m2, -0.1345521479521654)
如您所见,前两行显示推荐的项目是 u1 已经评分的项目(m1 和 m4)。 无论我选择哪个用户来获得推荐,我总是得到相同的行为(推荐的第一个项目是用户已经评分的项目)。
我觉得很奇怪!有什么问题吗?
【问题讨论】:
标签: apache-spark machine-learning apache-spark-mllib recommendation-engine collaborative-filtering