基于MLlib项目的无评级协同过滤

时间:2016-05-11 15:08:44

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

我正在根据查询日志构建推荐系统。对于每个查询日志,我都有用户点击了哪些链接的数据。用户不会为他们访问的链接提供任何评级。 我正在尝试创建一个推荐系统,如果您点击了这个,请尝试另一个类似用户试过的#34;。我正在探索Apache Spark - MLLib来使用协同过滤。不幸的是,ALS算法需要"评级"数据

以下是我上网的解决方案之一:

"对于我们想要推荐的每个页面,我们会搜索查看该页面的所有用户。然后,对于每个用户,我们会查找他们查看过的所有其他页面。然后,我们计算已查看此数据集中每个页面的用户数量,并使用计数最高的用户作为我们的建议。"

用户建议此方法很慢。

我想知道是否有一种很好的方式来假装'排名数据,还是有一个流行的开源实现,不需要排名数据?

1 个答案:

答案 0 :(得分:1)

在隐式反馈的情况下,

评级也可能是重要的。点击了ex(user1,url1,1 / 0),1/0。

现在你问的是另一个问题,无论如何,稀疏矩阵和密集矩阵之间存在差异。你不需要添加任何0,这就是评级的想法,你有那些你点击的,例如(u1,url1,1),如果这是用户1点击它的唯一网址,你做的不需要为那些尚未点击的人添加咒语。模型知道这是正在使用的输入数据格式。

我希望它有所帮助。