你不知道的今日头条推荐系统

许多人把推荐系统视为一种神秘的存在,他们觉得推荐系统似乎知道我们的想法是什么 。Netflix 向我们推荐电影,还有亚马逊向我们推荐该买什么样的商品 。推荐系统从早期发展到现在,已经得到了很大的改进和完善,以不断地提高用户体验 。尽管推荐系统中许多都是非常复杂的系统,但其背后的基本思想依然十分简单 。
推荐系统是什么?推荐系统是信息过滤系统的一个子类,它根据用户的偏好和行为,来向用户呈现他(或她)可能感兴趣的物品 。推荐系统会尝试去预测你对一个物品的喜好,以此向你推荐一个你很有可能会喜欢的物品 。
如何构建一个推荐系统?现在已经有很多种技术来建立一个推荐系统了,我选择向你们介绍其中最简单,也是最常用的三种 。他们是:一,协同过滤;二,基于内容的推荐系统;三,基于知识的推荐系统 。我会解释前面的每个系统相关的弱点,潜在的缺陷,以及如何去避免它们 。最后,我在文章末尾为你们准备了一个推荐系统的完整实现 。
协同过滤协同过滤,是首次被用于推荐系统上的技术,至今仍是最简单且最有效的 。协同过滤的过程分为这三步:一开始,收集用户信息,然后以此生成矩阵来计算用户关联,最后作出高可信度的推荐 。这种技术分为两大类:一种基于用户,另一种则是基于组成环境的物品 。
基于用户的协同过滤基于用户的协同过滤本质上是寻找与我们的目标用户具有相似品味的用户 。如果Jean-Pierre和Jason曾对几部电影给出了相似的评分,那么我们认为他们就是相似的用户,接着我们就可以使用Jean Pierre的评分来预测Jason的未知评分 。例如,如果Jean-Pierre喜欢星球大战3:绝地武士归来和星球大战5:帝国反击战,Jason也喜欢绝地武士归来,那么帝国反击战对Jason来说是就是一个很好的推荐 。一般来说,你只需要一小部分与Jason相似的用户来预测他的评价 。

你不知道的今日头条推荐系统

文章插图
在下表中,每行代表一个用户,每列代表一部电影,只需简单地查找这个矩阵中行之间的相似度,就可以找到相似的用户了 。
你不知道的今日头条推荐系统

文章插图
然而,基于用户的协同过滤在实现中存在一些以下问题:
  • 用户偏好会随时间的推移而改变,推荐系统生成的许多推荐可能会随之变得过时 。
  • 用户的数量越多,生成推荐的时间就越长 。
  • 基于用户会导致对托攻击敏感,这种攻击方法是指恶意人员通过绕过推荐系统,使得特定物品的排名高于其他物品 。
  • (托攻击即Shilling Attack,是一种针对协同过滤根据近邻偏好产生推荐的特点,恶意注入伪造的用户模型,推高或打压目标排名,从而达到改变推荐系统结果的攻击方式)
基于物品的协同过滤基于物品的协同过滤过程很简单 。两个物品的相似性基于用户给出的评分来算出 。让我们回到Jean-Pierre与Jason的例子,他们两人都喜欢“绝地武士归来”和“帝国反击战” 。因此,我们可以推断,喜欢第一部电影的大多数用户也可能会喜欢第二部电影 。所以,对于喜欢“绝地武士归来”的第三个人Larry来说,”帝国反击战“的推荐将是有意义的 。
你不知道的今日头条推荐系统

文章插图
所以,这里的相似度是根据列而不是行来计算的(与上面的用户-电影矩阵中所见的不同) 。基于物品的协同过滤常常受到青睐,因为它没有任何基于用户的协同过滤的缺点 。首先,系统中的物品(在这个例子中物品就是电影)不会随着时间的推移而改变,所以推荐会越来越具有关联性 。此外,通常推荐系统中的物品都会比用户少,这减少了推荐的处理时间 。最后,考虑到没有用户能够改变系统中的物品,这种系统要更难于被欺骗或攻击 。
基于内容的推荐系统在基于内容的推荐系统中,元素的描述性属性被用来构成推荐 。“内容Content”一词指的就是这些描述 。举个例子,根据Sophie的听歌历史,推荐系统注意到她似乎喜欢乡村音乐 。因此,系统可以推荐相同或相似类型的歌曲 。更复杂的推荐系统能够发现多个属性之间的关系,从而产生更高质量的推荐 。例如,音乐基因组计划(Music Genome Project)根据450个不同的属性将数据库中的每支歌曲进行分类 。该项目为Pandor的歌曲推荐提供技术支持 。(Pandor提供在线音乐流媒体服务,类似Spolify)
基于知识的推荐系统基于知识的推荐系统在物品购买频率很低的情况下特别适用 。例如房屋、汽车、金融服务甚至是昂贵的奢侈品 。在这种情况下,推荐的过程中常常缺乏商品的评价 。基于知识的推荐系统不使用评价来作出推荐 。相反,推荐过程是基于顾客的需求和商品描述之间的相似度,或是对特定用户的需求使用约束来进行的 。这使得这种类型的系统是独一无二的,因为它允许顾客明确地指定他们想要什么 。关于约束,当应用时,它们大多是由该领域的专家实施的,这些专家从一开始就知道该如何实施这些约束 。例如,当用户明确指出在一个特定的价格范围内寻找一个家庭住宅时,系统必须考虑到这个用户规定的约束 。


推荐阅读