我有一个包含约700k用户及其观看/听取/阅读/购买等物品的数据库。
我想要建立一个推荐引擎,根据具有相似品味的用户所喜欢的物品来推荐新商品。同时,我还想在正在构建的社交网络上找到用户可能想要添加为好友的人(类似于last.fm)。
我的要求如下: 1. 我数据库中的“大多数”用户实际上不是我的网站用户。它们是从第三方来源进行数据挖掘得到的。但是,在推荐用户时,我希望将搜索限制为是我的网站成员的人(同时仍然利用更大的数据集)。 2. 我需要考虑多个条目,不是“像你喜欢的这个项目的人...”,而是“喜欢你所享受的大多数项目的人...”。 3. 我需要计算用户之间的相似度,并在查看他们的个人资料(品味测量表)时显示。 4. 有些项目被评价了,其他项目则没有。评分从1-10分,而不是布尔值。在大多数情况下,如果其他统计数据中不存在评分值,可以通过其他统计数据推断出评分值(例如,如果用户收藏了一个项目,但没有对其进行评分,我可以假设评分为9)。 5. 它必须以某种方式与Python代码交互。最好使用单独的(可能是NoSQL)数据库,并公开一个API供我在Web后端中使用。我正在使用Pyramid和SQLAlchemy制作项目。 6. 我希望考虑物品流派。 7. 我希望根据物品的类型(可能是标签)和喜欢该物品的用户所喜欢的内容来显示类似物品,就像Amazon的“购买此物品的人”和Last.fm艺术家页面一样。不同流派的物品仍应显示,但相似度值较低。 8. 我希望有一个文档完整的算法实现,并提供一些示例。
请不要给出像“使用pysuggest或mahout”这样的答案,因为它们实现了大量算法,而我正在寻找最适合我的数据/用途的算法。我对Neo4j很感兴趣,以及如何将其表达为用户和物品之间连接的图形。
我的要求如下: 1. 我数据库中的“大多数”用户实际上不是我的网站用户。它们是从第三方来源进行数据挖掘得到的。但是,在推荐用户时,我希望将搜索限制为是我的网站成员的人(同时仍然利用更大的数据集)。 2. 我需要考虑多个条目,不是“像你喜欢的这个项目的人...”,而是“喜欢你所享受的大多数项目的人...”。 3. 我需要计算用户之间的相似度,并在查看他们的个人资料(品味测量表)时显示。 4. 有些项目被评价了,其他项目则没有。评分从1-10分,而不是布尔值。在大多数情况下,如果其他统计数据中不存在评分值,可以通过其他统计数据推断出评分值(例如,如果用户收藏了一个项目,但没有对其进行评分,我可以假设评分为9)。 5. 它必须以某种方式与Python代码交互。最好使用单独的(可能是NoSQL)数据库,并公开一个API供我在Web后端中使用。我正在使用Pyramid和SQLAlchemy制作项目。 6. 我希望考虑物品流派。 7. 我希望根据物品的类型(可能是标签)和喜欢该物品的用户所喜欢的内容来显示类似物品,就像Amazon的“购买此物品的人”和Last.fm艺术家页面一样。不同流派的物品仍应显示,但相似度值较低。 8. 我希望有一个文档完整的算法实现,并提供一些示例。
请不要给出像“使用pysuggest或mahout”这样的答案,因为它们实现了大量算法,而我正在寻找最适合我的数据/用途的算法。我对Neo4j很感兴趣,以及如何将其表达为用户和物品之间连接的图形。