【问题标题】:MLlib Item Based Collaborative Filtering with No Ratings基于 MLlib 项目的无评级协同过滤
【发布时间】:2016-05-11 15:08:44
【问题描述】:

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

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

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

用户认为这种方法很慢。

我想知道是否有“伪造”排名数据的好方法,或者是否有不需要排名数据的流行开源实现?

【问题讨论】:

  • 在隐式反馈的情况下,评分也可以计算在内。 Ex (user1, url1, 1/0), 1/0 点击与否。
  • 感谢您的回答。我考虑了一下。我拥有的数据只是用户点击的网址。这样我的矩阵中就会有所有的 1。此外,如果将所有剩余文档(数量非常大)设为 0,这将是一个非常巨大的稀疏矩阵。

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


【解决方案1】:

在隐式反馈的情况下,评分也可以算作计数。 Ex (user1, url1, 1/0), 1/0 点击与否。

现在你问的是一个不同的问题,无论如何,稀疏矩阵和密集矩阵之间是有区别的。您不需要添加任何 0,这就是评级的概念,您拥有可以点击的内容,例如 (u1,url1,1),如果这是用户 1 单击的唯一 url,那么您可以不需要为那些他还没有点击的人添加 ceros。模型知道这是正在使用的输入数据格式。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 2013-04-28
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多