【问题标题】:How does one write a recommended item system? [duplicate]如何编写推荐项目系统? [复制]
【发布时间】:2011-11-22 17:44:56
【问题描述】:
【问题讨论】:
标签:
algorithm
recommendation-engine
【解决方案1】:
维基百科文章Recommender system 是一个很好的起点。另外,这篇Recommendation engine 博文有一些很好的信息和插图。
最简单的方法是使用“喜欢这篇文章的人也喜欢...”的方法。如果您跟踪每个用户的文章评分,并跟踪谁喜欢哪些文章,那么您就有了推荐系统的基础。
例如,假设您正在查看文章 A。系统可以在其索引中查找每个喜欢文章 A 的用户。然后从该列表中,它可以创建每个喜欢文章的用户喜欢的所有文章的列表A 条。很有可能会有很大的重叠(即一些文章被多人点赞)。您的算法会跟踪每篇文章获得的点赞数,然后显示获得最多票数的前 N 个。
这个简单的系统在许多情况下都非常有效,但并不完美。您会发现异常受欢迎的文章占主导地位,即使它们与您正在查看的文章无关。有一些方法可以防止广受欢迎的文章占据主导地位。一种方法是使用浮点数作为文章的分数。不是将每个“喜欢”的分数加 1,而是添加 1 / sqrt(users_number_of_likes)。因此,喜欢 100 篇文章的用户只会给任何单个文章打分 1/10,但只喜欢 4 篇文章的用户会给每个文章打分 1/2。虽然这听起来不“公平”,但它确实会削弱非常受欢迎但不相关的项目的影响。
正如我所说,这是最简单的方法。如果您正在寻找“相关”文章,而不是基于用户输入,那么您必须为每篇文章分配关键字,或者您需要某种方法来检查文章并提取相关关键字。
有很多方法可以做你想做的事。您选择哪一种取决于您的数据的性质、您是否在进行协同过滤、您希望花费多少时间来开发它以及您希望得到的结果有多好。