我一直很好奇这些系统是如何工作的。例如,Netflix或亚马逊如何根据过去的购买记录和/或评级确定要推荐什么内容?是否有任何算法可供参考?
只是为了避免误解,我问这个问题并没有实际的理由。我只是出于纯粹的好奇心而问。
(另外,如果有关于这个主题的现有问题,请指引我。" 推荐系统" 是一个难以搜索的术语。)
我一直很好奇这些系统是如何工作的。例如,Netflix或亚马逊如何根据过去的购买记录和/或评级确定要推荐什么内容?是否有任何算法可供参考?
只是为了避免误解,我问这个问题并没有实际的理由。我只是出于纯粹的好奇心而问。
(另外,如果有关于这个主题的现有问题,请指引我。" 推荐系统" 是一个难以搜索的术语。)
在其最基本的形式中,大多数推荐系统都是通过以下两种方式之一来工作。
基于用户的推荐:
如果用户A喜欢物品1、2、3、4和5,
而用户B喜欢物品1、2、3和4,
那么用户B很可能也会喜欢物品5。
基于物品的推荐:
如果购买物品1的用户也不成比例地购买物品2,
而用户A购买了物品1,
那么用户A可能会对物品2感兴趣。
以下是你应该了解的算法:
- 集合相似度(Jaccard系数和Tanimoto系数)
- n维欧几里得距离
- k均值算法
- 支持向量机
这是一个商业上非常重要的应用程序,Netflix 推出了一项100万美元的奖金计划,以提高其推荐系统 10% 的准确率。
几年后,人们已经接近目标(我认为他们现在的准确率已经达到了9%),但由于许多原因,这很难。 Netflix Prize 最大的因素或最初的改进可能是使用了称为 奇异值分解 的统计技术。
我强烈建议您阅读《纽约时报》的文章“如果你喜欢这个,你肯定会爱那个”,其中详细讨论了 Netflix Prize 特别是推荐系统。
基本上,亚马逊等公司的原理是相同的:他们寻找模式。 如果有人购买了《星球大战三部曲》,那么他们比普通客户更喜欢打击恶魔猎人巴菲(纯属虚构的例子)。
O'Reilly的书《集体智慧编程》有一个很好的章节介绍它是如何工作的,非常易于阅读。
所有的代码示例都是用Python编写的,但这并不是一个大问题。
明尼苏达大学的GroupLens研究组专注于研究推荐系统,并慷慨地分享他们的研究成果和数据集。
他们的研究每年都在扩展,现在涵盖了在线社区、社交协同过滤以及呈现复杂数据时的用户界面挑战等具体问题。
推荐系统主要有两种类型,工作方式不同:
1. 基于内容。这些系统基于特征信息进行推荐。这些信息是关于项目(关键字、类别等)和用户(偏好、档案等)的。
2. 协同过滤。这些系统基于用户-项目互动。这些信息包括评级、购买次数、喜欢等。
这篇文章(由我所在公司发布)提供了这两种系统的概述、一些实用示例,并建议何时实施它们。