gpt4 book ai didi

algorithm - 用于查找相似项目和用户的推荐算法(和实现)

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:36:04 25 4
gpt4 key购买 nike

我有一个包含大约 70 万用户以及他们观看/收听/阅读/购买/等等的项目的数据库。我想建立一个推荐引擎,根据对事物有相似品味的用户喜欢的东西推荐新项目,以及在我正在建立的社交网络上实际找到用户可能想与之成为 friend 的人(类似于上一个.fm)。

我的要求如下:

  • 我数据库中的大多数“用户”实际上并不是我网站的用户。它们是从第三方来源挖掘的数据。但是,在推荐用户时,我想将搜索限制为我网站的成员(member)(同时仍然利用更大的数据集)。
  • 我需要考虑多个项目。不是“喜欢你喜欢的这一项的人......”,而是“喜欢你喜欢的大部分项目的人......”。
  • 我需要计算用户之间的相似性并在查看他们的个人资料时向他们展示(品味计)。
  • 有些项目已评级,有些则未评级。评级从 1 到 10,不是 bool 值。在大多数情况下,如果评分值不存在,则可以从其他统计数据中扣除评分值(例如,如果用户收藏了某个项目,但尚未对其评分,我可以假设评分为 9)。
  • 它必须以某种方式与 Python 代码交互。最好,它应该使用一个单独的(可能是 NoSQL)数据库并公开一个 API 以在我的 Web 后端中使用。我正在制作的项目使用 Pyramid 和 SQLAlchemy。
  • 我想考虑项目类型。
  • 我想根据其类型(可能是标签)和喜欢该项目的用户喜欢的内容(例如亚马逊的“购买该项目的人”和 Last.fm 艺术家页面)在项目页面上显示类似的项目。来自不同类型的项目仍应显示,但相似度值较低。
  • 我更喜欢有据可查的算法实现和一些示例。

请不要给出“使用 pysuggest 或 mahout”之类的答案,因为它们实现了过多的算法,而我正在寻找最适合我的数据/使用的算法。我一直对 Neo4j 感兴趣,以及如何将其表示为用户和项目之间的连接图。

最佳答案

要确定用户之间的相似性,您可以在用户向量上运行余弦或 PIL 逊相似性(在 Mahout 和网络上的任何地方都可以找到!)。所以你的数据表示应该看起来像

 u1  [1,2,3,4,5,6] 
u2 [35,24,3,4,5,6]
u1 [35,3,9,2,1,11]

如果您想考虑多个项目,您可以使用上面的方法来确定某人的个人资料有多相似。相关分数越高,他们拥有非常相似项目的可能性就越大。您可以设置一个阈值,以便相似度为 0.75 的人在其个人资料中具有一组相似的项目。

如果您缺少值,您当然可以自己弥补。我只是将它们保留为二进制并尝试混合各种不同的算法。这叫做合奏。

总的来说,您正在寻找一种称为基于项目的协同过滤的东西作为您设置的推荐方面,并且还用于识别相似的项目。这是一种标准的推荐算法,几乎可以满足您的所有要求。

在尝试寻找相似用户时,您可以对用户向量执行某种类型的相似性度量。

关于 Python,名为 programming in collective intelligence 的书提供了所有 python 示例,所以去拿一本并阅读第 1 章。

将所有这些表示为图表会有些问题,因为您的不朽表示是 Bipartile Graph .有很多使用基于图的方法的推荐方法,但它通常不是性能最好的方法。

关于algorithm - 用于查找相似项目和用户的推荐算法(和实现),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com