我正在尝试完全理解项目到项目亚马逊的算法,将其应用到我的系统,以推荐用户可能喜欢的项目,匹配用户喜欢的先前项目。
到目前为止,我已阅读过这些内容:Amazon paper,item-to-item presentation和item-based algorithms。我也找到了这个question,但之后我就更加困惑了。
我能说的是,我需要按照以下步骤获取推荐项目列表:
所以我提出了这个问题:
有关此主题的任何信息都将不胜感激。
答案 0 :(得分:4)
很棒的问题。
考虑一下你的数据。你可能有一元(消耗或空),二元(喜欢和不喜欢),三元(喜欢,不喜欢,未知/ null),或连续(空和一些数字刻度),甚至有序(空和一些有序刻度) 。不同的算法可以更好地处理不同的数据类型。
项目项协同过滤(也称为基于项目)最适合数字或序数标度。如果您只有一元数据,二进制数据或三元数据,那么使用关联规则挖掘等数据挖掘算法可能会更好。
给定用户矩阵及其项目评级,您可以计算每个项目与其他项目的相似度。矩阵操作和计算内置于许多库中:例如,在Python中尝试scipy和numpy。您可以迭代项目并使用内置矩阵计算来完成https://en.wikipedia.org/wiki/Cosine_similarity中的大部分工作。或者下载像Mahout或Lenskit这样的框架,它可以为您完成此任务。
现在你有一个每个项目与其他项目相似的矩阵,你可能想为用户U建议项目。所以看看她的项目历史。对于每个历史项目I,对于数据集ID中的每个项目,将I与ID的相似度添加到候选项目分数列表中。当您浏览完所有历史记录项目后,按分数降序对候选项目列表进行排序,并推荐排名靠前的项目。
要回答剩下的问题:连续或有序的比例将为您提供最佳的协作过滤结果。不要使用"喜欢"与#34; unliked"如果您有更好的数据,请进行扩展。
矩阵分解算法表现良好,如果您没有多少用户而且您的评级矩阵没有很多更新,您还可以使用用户 - 用户协作过滤。首先尝试项目项:它是一个很好的通用推荐算法。