使用ALS.recommendation获取错误的建议

时间:2016-12-02 18:09:37

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

我写了一个火花程序来提出建议。然后我使用了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包含受用户 u1 影响的ID 作为建议,我获得:

(u1, m1, 1.0536233346170754)
(u1, m4, 0.8540954252858661)
(u1, m3, 0.09069877419040584)
(u1, m2, -0.1345521479521654)

如您所见,前两行显示推荐的项目是u1已经评定的项目(m1和m4)。 无论我选择哪个用户来获取建议,我总是会得到相同的行为(推荐的第一个项目是用户已经评价过的)。

我发现它很奇怪!在任何地方都有问题吗?

0 个答案:

没有答案