0. 推荐算法分类

1. 基于内容推荐

1 原理:用户喜欢和自己关注过的物品类似的物品
2 优点:

  1. 1. 考虑到用户的独立性(与其他用户无关)
  2. 1. 可以解决物品冷启动问题

3 局限:

  1. 1. 只能根据用户现有兴趣进行推荐
  2. 1. 对多媒体(电影、音乐)推荐很难提取内容特征,一种办法是人工打标签
  3. 1. 对标签要求较高,对相关领域知识要求较高

2. 协同过滤推荐

1 原理:用户喜欢那些具有相似兴趣的用户喜欢过的商品
用户喜欢哪些和自己喜欢的商品相似的商品
2 辨析:基于内容的商品相似度是根据商品标签、内容进行计算;而ItemCF是基于共现矩阵中两个商品被用户共同喜欢或不喜欢计算。
3 优点:

  1. 1. 不需要相关领域知识
  2. 1. 可以帮助用户发现新的兴趣

4 局限:

  1. 1. 占用大量内存
  2. 1. 不好处理冷启动

3. 混合模型推荐

对其他推荐方法通过串、并联方式进行混合。

1. 协同过滤

1 概念:协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程。
2 过程:要知道用户X是否会喜欢电视机,在共现矩阵中计算其他用户与X的相似度(余弦相似度、皮尔逊相关系数),根据他们对电视机的反馈判断X是否会喜欢电视机。依据相似度获得k个相似用户,根据用户相似度和相似用户对电视机的评价,加权获得X对电视机的评价预测。
3 UserCF两个缺陷:

  1. 1. 在互联网场景下,用户数往往远大于物品数,而UserCF需要维护用户相似度矩阵以便快速找出Top n相似用户。随着业务发展,用户数增长会导致用户相似度矩阵的存储空间以![](https://cdn.nlark.com/yuque/__latex/6595d679e306a127a3fe53268bcaddb2.svg#card=math&code=n%5E2&height=19&width=17)速度增长,存储开销大
  2. 1. 对于大件商品购买等场景,用户的数据往往很稀疏,找到相似度的准确度是非常低的。

4 ItemCF和UserCF应用场景:

  1. - UserCF基于用户相似度进行推荐,使其具备更强的社交性,能快速得知与自己兴趣相似用户最近喜欢什么,适合新闻、社交等场景;
  2. - ItemCF更注重个性化,适用于兴趣变化较为稳定的应用,如技术博客、音乐等。

5 传统协同过滤缺点:

  1. 1. 热门的物品具有很强的头部效应,容易跟大量物品产生相似性;而尾部的物品由于特征向量稀疏,很少与其他物品产生相似性,导致很少被推荐(泛化能力弱)。
  2. 1. 仅利用用户和物品的交互信息,无法有效引入用户年龄、性别、商品描述、分类、当前时间等一些列有效信息特征。

6 解决办法:

  1. 1. 提出矩阵分解,在共现矩阵的基础上,使用更稠密的隐向量表示用户和物品,一定程度上弥补了过滤模型处理稀疏矩阵能力不足的问题;
  2. 1. 为了在推荐模型引入更多有用信息,推荐系统发展到以逻辑回归为核心的、能够综合不同类型特征的机器学习模型的道路上。

2. 矩阵分解算法——协同过滤的进化

1 概念:加强了模型处理稀疏矩阵的能力,提高了泛化性。(用户和物品的隐向量是通过分解共现矩阵得到的)
2 矩阵分解方法:

  1. 1. 特征值分解(要求共现矩阵是方阵,不适用)
  2. 1. SVD(要求共现矩阵是稠密的、计算复杂度高![](https://cdn.nlark.com/yuque/__latex/ce9da8c1499b050444c748df91502329.svg#card=math&code=O%28mn%5E2%29&height=23&width=58),不适用)
  3. 1. 梯度下降:![](https://cdn.nlark.com/yuque/__latex/e1e282bae47a9050f3680be89d46152c.svg#card=math&code=%5Cmin_%7Bq%5E%2A%2Cp%5E%2A%7D%5Csum_%7B%28u%2Ci%29%5Cin%20K%7D%28r_%7Bui%7D-q_i%5ETp_u%29%5E2%2B%5Clambda%20%28q_i%5E2%2Bp_u%5E2%29&height=43&width=265)

3 消除偏差:不同用户对分数的理解不同,消除偏差的方法是添加bias:
推荐系统 - 图1
4 优点:

  1. 1. 泛化性强(一定程度解决了数据稀疏的问题)
  2. 1. 空间复杂度低(![](https://cdn.nlark.com/yuque/__latex/0ca5e4e27ca8dc4c891d2c8598529ed1.svg#card=math&code=O%28mn%29&height=20&width=50)到![](https://cdn.nlark.com/yuque/__latex/947e0abdeaa3b9ee562a8149635dccd5.svg#card=math&code=O%28%28m%2Bn%29k%29&height=20&width=93))

5 局限:仍没有假如用户年龄、性别、商品描述等有用信息。

3. 逻辑回归——融合多种特征的推荐模型

1 概念:逻辑回归模型将推荐问题转换成了一个点击率(CTR)预估问题。
2 优点:可解释性强,计算速度快,引入了用户年龄、性别、商品描述等有用信息。
3 局限:不能进行特征交叉,表达能力有限。

4. FM到GBDT+LR

1 作用:进行特征交叉
2 局限:

  1. 1. FM不容易扩展到三阶交叉
  2. 1. GBDT无法并行训练

5. 特征工程

1 常用特征:

  1. - 用户行为数据:分为显性反馈行为(评分、点赞)和隐形反馈(点击、播放)。
  2. 1. 将代表用户行为的物品id序列转换成multi-hot向量
  3. 1. 预训练好物品的embedding,将用户涉及的物品的embedding进行平均
  4. - 用户关系数据:分为人与人关系、人与物关系
  5. 3. 将用户关系作为召回层的一种物品召回方式
  6. 3. 通过用户关系建立关系图,使用Graph Embedding生成用户和物品的embedding
  7. - 属性、标签类数据:如人的性别、年龄,物的类别、价格等
  8. 5. multi-hot转换成特征向量
  9. 5. embedding
  10. - 内容类数据:图片、评论等
  11. 7. 使用NLPCV将其转换为标签
  12. - 上下文信息:时间、地点等
  13. - 统计类特征

2 特征处理方法:

  1. - 连续性特征:
  2. 1. 归一化(消除量纲影响)
  3. 1. 离散化(注意与分箱不同,类似one-hot) (防止连续值带来的过拟合,及处理特征值分布不均匀)
  4. 1. 非线性处理(如log函数,提升模型表达能力,更好地捕获特征与目标的非线性关系)
  5. - 类别型特征:
  6. 4. one-hotmulti-hot
  7. 4. embedding成稠密向量

6. 召回层

1 召回层和排序层:

  1. - 召回层:将海量候选集快速缩小为几百、几千的规模
  2. - 排序层:对缩小后的数据集进行精准排序

2 多路召回:采用不同的策略、特征或简单模型,分别召回一部分候选集。

  1. - 包括“热门”、“流行”、“兴趣标签”、“朋友喜欢”、“协同过滤”等 (不同策略得到的相似度、热度等不具备可比性)
  2. - 利用深度学习生成的embedding作为召回层的方法(具备评分的连续性,可以把embedding间的相似度作为唯一判断标准)

3 召回方法:

  1. 1. 热门、流行
  2. 1. 用户标签(基于内容推荐)
  3. 1. 协同过滤
  4. 1. FM(使用矩阵分解学习隐向量)
  5. 1. EmbeddingFM无法考虑用户属性等有用信息,Embedding可考虑到)

7. 冷启动

1 用户冷启动:根据用户注册信息、第三方数据,构建新用户属性决策树或进行粗粒度相似度计算推荐
2 物品冷启动:根据物品标签、内容特征进行推荐