如何搭建一个推荐系统?

不懂技术怎么做产品?15天在线学习,补齐产品经理必备技术知识,再也不被开发忽悠。了解一下>

笔者重读《推荐系统实践》,总结了其中要点,也阐述了自己的一些想法,分享给大家,供大家参考学习。

在这个信息过载的时代,个性化推荐系统是我们日常都会接触到的,最近因为要给小伙伴分享,重新过了一下《推荐系统实践》这本书的内容,也把其中一些要点整理分享出来。

首先来说说,为什么要有个性化推荐系统,主要是为了以下两点:

  1. 解决信息过载问题;
  2. 挖掘长尾物品/信息。

推荐系统通过发掘用户的行为,找到用户的个性化需求,从而将长尾物品准确推荐给需要它的用户,帮助用户找到他们感兴趣但很难发现的物品。

推荐算法评估指标

  • 准确率:准确率是针对预测结果而言的,表示给用户推荐的物品中,有多少是真正感兴趣的。
  • 召回率:召回率是针对推荐的结果,它表示的是用户感兴趣的物品中,有多少个是系统推荐的。
  • 覆盖率:反映了推荐算法挖掘长尾物品的能力,如果所有物品都至少推荐给了1个用户,则覆盖率为100%。
  • 流行度:根据推荐物品的平均流行度进行度量,如果推荐物品的流行度都比较高,则物品新颖度比较低。

常用推荐算法

协同过滤算法是基于用户行为数据设计的推荐算法,其中主要包括三类算法:「基于领域的方法」、「隐语义模型」、「基于图的随机游走算法」,这里主要给大家介绍一下「基于领域的方法」,分为User CF和Item CF两种。

基于用户的协同过滤(User Collaborative Filtering)

User CF的基础逻辑是给用户推荐和他兴趣相似的其他用户喜欢的物品,步骤如下:

  1. 找到和目标用户兴趣相似的用户集合;
  2. 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。

设有两个用户u和v,N(u)表示用户u曾经有过正反馈的物品集合,可通过以下方式计算两个用户的兴趣相似度:

Jaccard公式:

计算余弦相似度:

得到用户的兴趣相似度后,选择与用户兴趣最相似的K个用户,将他们的兴趣物品(并排除目标用户已反馈过的物品),推荐给目标用户。

算法缺点

  • 随着网站用户数目越来越大,计算用户兴趣相似矩阵越来越困难;
  • 运算时间复杂度和空间复杂度与用户数增长近似于平方关系。

因此,亚马逊推出了-item CF。

基于物品的协同过滤(Item Collaborative Filtering)

User CF的基础逻辑是给用户推荐和他之前喜欢的物品相似的物品,步骤如下:

  1. 计算物品之间的相似度;
  2. 根据物品的相似度和用户的历史行为给用户生成推荐列表。

通过计算喜欢物品 i 的用户中有多少也喜欢物品 j,来计算两个物品的相似度

得到物品的相似度后,选择与其最相似的K个物品集合,推荐给目标用户。

User CF与Item CF算法的对比

推荐系统的评估维度

评估一个推荐系统的质量,需要综合多个维度进行评估,核心维度如下:

  • 用户满意度:用户后续行为反馈,调研
  • 预测准确度:准确度/召回率
  • 覆盖率:对物品长尾的挖掘能力,注意马太效应的影响
  • 多样性:用户兴趣类型分布
  • 新颖性:排除用户历史反馈物品,排除热门物品
  • 惊喜度:非用户历史兴趣,但是满意
  • 信任度:透明度,推荐机制解释程度
  • 实时性:是否可以针对用户行为实时进行反馈
  • 健壮性:防攻击,反作弊
  • 商业目标达成情况

冷启动

除了以上所述,搭建推荐系统,还需要考虑的一个重要问题就是“冷启动”,涉及冷启动的场景主要有以下三类:

1. 用户冷启动

一个新用户,没有任何历史行为数据,怎么做推荐。

2. 物品冷启动

一个新上线的物品,没有用户对它产生过行为,怎么推荐给感兴趣的用户。

3. 系统冷启动

一个新开发的网站,没有用户数据,怎么做个性化推荐。

根据系统的场景属性,可以设计不同的冷启动方式:

  • 提供非个性化推荐;
  • 利用用户注册信息如年龄性别等做粗颗粒度推荐;
  • 利用用户社交关系;
  • 新用户要求对一系列物品进行反馈;
  • 对应新物品,利用内容属性推荐给相似物品感兴趣用户;
  • 专家搭建多维度标签体系。

设计一个健全的推荐系统,算法和策略需要综合考虑多项因素,包括服务器、计算资源成本,人力成本,可持续性和可扩展性等。

高质量的推荐系统会使用户对系统产生依赖,因此,推荐系统不仅能为用户提供个性化服务,还能与用户建立长期稳定的关系,提高用户忠诚度,防止用户流失。

希望我的梳理可以给到一些启发和参考。

 

本文由 @orca 原创发布于人人都是产品经理,未经作者许可,禁止转载。

题图来自Unsplash,基于CC0协议。

给作者打赏,鼓励TA抓紧创作!
评论
欢迎留言讨论~!