Skip to content

Latest commit

 

History

History
84 lines (70 loc) · 5.75 KB

rec_algorithm.md

File metadata and controls

84 lines (70 loc) · 5.75 KB

推荐系统常见算法总结

By Fire

按自己的理解进行的分类。标注星号☆的是阿里云平台目前有的(2018.1.29)。

1.基于静态信息的推荐

通过用户登录来源或者相关账号绑定,获取用户之前的社交网站上的信息。与2人口统计学获取特征相区别。

1.1 直接获取用户喜好信息

  • 基本原理:利用用户之前的社交网站的信息直接获取用户喜好信息。
  • 例子:
    1. 用户使用微信登录,获取用户发过的朋友圈公开信息,提取与被推荐物品高度相关的信息,进行推荐。
    2. 用户使用微博登录网易云,发现发过喜欢begin again电影的状态,于是推荐主题曲lost star.
    3. 用户用微博登录,切关注了xx领域某个类别的一个大v号,则可以推荐该类别。
  • 优点:推荐准确。
  • 缺点:这种信息不好获取,且不是都能获取。需要一定的物品信息。

1.2 获取用户社交关系信息

  • 基本原理:利用用户之前的社交网站的信息直接获取用户好友信息。
  • 例子:用户使用微博/微信等登录,获取关注者、好友等信息,把好友的喜好推荐给用户。
  • 优点:推荐比较准确。
  • 缺点:好友信息不容易获取,且好友的喜好信息不一定有。

2.基于用户特征的推荐(基于人口统计学的推荐)☆

  • 基本原理:通过用户的属性特征进行建模,比如年龄,性别等,把用户分为不同的人群,然后对同一类人群把该类人群的共同喜好推荐给新用户。
  • 优点:
    1. 不需要历史行为数据;
    2. 不需要物品的属性信息。
  • 缺点:
    1. 区分粒度很粗,效果不会特别好。

3.基于物品内容的推荐 ☆

  • 基本原理:通过物品的属性特征进行建模,计算物品相似度,然后基于用户行为推荐相似物品。
  • 优点:
    1. 比较直观,物品属性维度越多越准确;
    2. 覆盖率广。
  • 缺点:
    1. 需要物品的属性信息;
    2. 物品相似度衡量只考虑物品本身,有一定局限,因为很多推荐内容有很强的主观性,比如音乐书籍电影;
    3. 需要一定的用户历史喜好信息。

4.协同过滤 ☆

  • 基本原理:根据用户的历史行为数据计算用户或者物品的相似度(比如使用余弦相似度),然后进行推荐。
  • 优点:
    1. 不需要任何的用户或者内容的属性特征信息
    2. 推荐效果的惊喜度、准确度、多样性较好
    3. 随着用户行为增多,推荐效果也会提升
  • 缺点:
    1. 需要大量、准确的用户行为数据;
    2. 冷启动问题(新用户/物品没有行为,也找不到类似用户)
    3. 灰羊问题(个别口味特殊的用户找不到口味类似的用户)
    4. 因为采用历史行为数据,不易修改,不够灵活
    5. 覆盖率较低(数据稀疏问题,很多物品没有行为)

4.1 基于用户的CF

基于用户行为计算用户之间的相关性,再通过当前用户行为找到相似度高的用户,然后把他们喜欢的物品推荐给当前用户。

4.2 基于物品的CF

基于用户行为计算物品之间的相关性,再通过当前用户对物品的行为对喜欢的物品找到相似度高的物品,然后推荐给当前用户。

5.因子分解 ☆

6. 深度学习

  1. 基于电影海报的深度学习方法: 其实也是基于内容的,只是用深度学习来获取海报图像的内容。
  2. youtube视频推荐: 整个推荐系统分为候选集生成(也称为搜索/召回)和排序两个阶段。其中召回阶段负责基于用户画像及场景数据从海量的视频库(百万级别)中将相关度最高的资源检索出来,作为候选集; 排序阶段负责基于更加精细的特征对候选集(百级别)进行排序,最终呈现给用户的只是很少一部分数据。
  3. Deep Interest Network|开源代码:代码质量一般,看issue效果也不敢保证,未尝试。
  4. Wide&Deep

7.其它

  • MovieTaster-使用Item2Vec做电影推荐: 把Word2Vec迁移到item-based CF.这篇博文是根据豆瓣的豆列来做的。从自然语言序列迁移到物品集合,丢失了空间/时间信息,还无法对用户行为程度建模(喜欢和购买是不同程度的强行为)。好处是可以忽略用户-物品关系,即便获得的订单不包含用户信息,也可以生成物品集合。而论文的结论证明,在一些场景下序列信息的丢失是可忍受的。