如何使用具有有限评级值的Apache Spark ALS(交替最小二乘)算法

时间:2015-02-11 20:15:04

标签: apache-spark apache-spark-mllib collaborative-filtering

我正在尝试使用ALS,但目前我的数据仅限于用户购买的信息。因此,当用户X购买项目Y(并且仅提供给该算法的此类信息)时,我试图从Apache Spark填充ALS,评级等于1(一)。

我正在尝试学习它(将数据划分为训练/测试/验证)或者只是尝试了解所有数据,但最后我得到的预测值与任何一对用户项目的值非常相似(值差别于逗号后面的第5或第6位,如0,86001和0,86002)。

我正在考虑这个问题,也许是因为我只能提供等于1的等级,所以ALS不能在这种极端情况下使用吗?

是否有任何评级技巧,所以我可以用来解决这个问题(我只有关于买了什么的信息 - 以后我会得到更多的数据,但是在某个时刻我必须使用某种协作过滤,直到我将获得更多数据 - 换句话说,我需要在启动页面上向用户显示某种建议我选择ALS作为启动页面但是我可能使用其他东西,究竟是什么?“

当然,我正在改变迭代,lambda,rank等参数。

1 个答案:

答案 0 :(得分:1)

在这种情况下,关键是您必须使用trainImplicit,这会忽略Rating的值。否则,你会要求它在一个每个人评价一切的世界中预测评分1.正确的答案总是1,所以你所有的答案都是相似的。