推荐系统基础知识整理

  • 基于规则的推荐系统
  1. 优点:
    1. 简单直观;解释性强
    2. 开发以及维护简单
  2. 缺点:
    1. 结果单一
    2. 马太效应:马太效应是出自《圣经 马太福音》的一个典故,社会学中的一种强者越强弱者越弱的现象,也就是说推荐系统是否会使被关注的事物更加被关注,被忽视的事物更加被忽视。常用的协同过滤就有马太效应。比较简单的测试指标就是信息熵。
    3. 较为依赖主观经验
  • 热门推荐
  1. 优点(同上)
  2. 缺点:
    1. 结果单一
    2. 马太效应
  3. 热门推荐需要考虑的因素:
    1. 时效性:热门推荐的时效性很好理解。
    2. 推荐物品的质量:推荐物品的质量表示推荐给用户需要考虑用户对该物品是否感兴趣。
    3. 用户与用户行为的权重:用户和用户行为的权重表示某个用户多次访问与某个用户很少访问两者是有很大的区别的
  • 基于内容的推荐系统

利用用户的已知属性或者兴趣偏好,与物品内容的属性进行匹配,以此为用户推荐新的感兴趣的物品。

  1. 基于用户画像的推荐
  2. 基于关键词向量的推荐
  3. 优点:
    1. 用户之间是相互独立的
    2. 可解释型较强
    3. 可以推荐新的物品
  4. 缺点:
    1. 缺乏新颖度
    2. 很难对新用户进行推荐。这里可以考虑给热门推荐;或者根据用户的地域信息给出相应的推荐;或者根据用户实时行为数据进行实时推荐
  • 协同过滤
  1. 基于近邻的协同过滤:他关注的是用户之间的相似度或者是物品之间的相似度。
    1. Item-based
      1. 定义:基于Item-based推荐表示的是根据物品的相似性,某个用户买了某个物品后,通过物品的相似性得到一些与该物品相类似的商品推荐给该用户。
      2. 应用场景:
        1. 当Item的数量远小于User的数量时,考虑用Item-based
        2. 当Item的比较稳定时,考虑用户Item-based
    2. User-based
      1. 定义:基于user-based推荐表示的是根据用户的相似度,某个用户购买了相关的商品时,与该用户相似的用户也购买了那些物品推荐给他。
      2. 应用场景:
        1. 当user的数量远小于Item的数量时,考虑用User-based
        2. 当Item不是特别稳定时,考虑用User-based
  2. 基于模型的协同过滤:将物品和用户映射到相同的语义空间进行计算相似度。主要用到的方法就是矩阵分解
    1. 因子分解
    2. SVD,SVD++
    3. ALS矩阵分解(Spark MLlib)

  应用矩阵分解的原因是由于用户和物品构成的矩阵在实际的应用场景中,往往都是稀疏的或者存在缺失值的情况。这个时候很难补充或者很难准确的给出相应的物品推荐,并且复杂度较高。通过矩阵分解可以解决这类问题。在FM算法当中也有用到类似的原理。

推荐系统的思维导图如下:

  • 相似度的计算方法
  1. 余弦相似度
  2. 皮尔森相关系数
  3. jaccard相似系数

 

  • 推荐系统的一般步骤 
  1. 召回
    1. 根据用户长期稳定的兴趣和即时的目标,得到可以推荐给用户的物品候选集
    2. 结合具体的业务逻辑进一步得到候选集
  2. 排序
    1. 得到候选集后,需要对候选集中的物品进行排序。
    2. 传统的排序方式:相关系数,重要性
    3. point-wise,pair-wise,list-wise
    4. 这里排序的模型可以考虑使用的特征类型:用户特征、物 品特征、用户-物品交互 特征、场景特征等 

  3. 过滤/规则匹配
    1. 过滤一些bad case
    2. 根据用户的历史行为过滤一些用户已经购买过的物品
  • 推荐系统的评价指标   
  1. 正确率,召回率,F1值,ROC曲线,AUC值
  2. 转化率相关的指标
  3. 销售额
  4. 排序相关的指标
  5. 用户体验相关的指标(这块不好衡量)
  6. 覆盖率:用户的覆盖率和物品的覆盖率