《深度学习推荐系统》读书笔记

重点

重要

探索与利用

推荐系统中不能一味地使用历史数据进行推荐,需要主动去试探用户新的兴趣点,主动推荐新的物品,发掘有潜力的优质商品。 给用户推荐的机会是有限的,如何权衡用户喜欢的内容和探索新兴趣这两件事,就是 “探索与利用” 试图解决的问题。

冷启动

根据数据匮乏情况,分三种

  1. 用户冷启动。新用户刚注册缺乏历史行为数据。

  2. 物品冷启动。新物品加入缺少交互记录数据。

  3. 系统冷启动。新系统构建初期,缺乏所有的历史数据。

主流的冷启动解决策略可以归为三类:

  1. 基于规则的冷启动。 基于业务或者经验制定一些推荐规则。 1) 对于新用户,可以推荐热门、最近流行、高评分等等。 2) 对于新商品,可以主动增加其曝光,尽快积累数据。

  2. 基于用户和物品的基本属性。 新用户注册,缺失的是用户交互数据,但是可以尽量获得用户的一些基本属性,比如用户年龄、性别、注册地、IP等等,物品的各类属性等等。 此时可以: 1) 根据这些基本属性制定一个决策规则树,制定更细致的推荐规则。 2) 仅用基本属性训练一个简单模型。 3) 相似用户/物品做特征迁移。可以根据基本属性计算新实体的相似实体(或者聚类),然后把相似实体的特征(特征期望值)迁移到新实体。

  3. 迁移学习。区别与第2条,这里主要针对系统冷启动。可以A领域的数据或者模型用到B领域的冷启动,随着数据的增加,增量更新模型。

探索与利用

解决 “探索与利用” 问题的主要方法:

  1. 传统的方法。仅基于物品信息,不考虑用户、上下文等信息,非个性化的。

  2. 个性化的方法。考虑用户和上下文信息,个性化的方法。

  3. 基于模型的方法。和推荐模型结合到一起,通过改变现有推荐模型的结构来解决。

“探索与利用” 机制在推荐系统中的应用

  1. 物品冷启动。

  2. 发掘用户新兴趣。

  3. 增加结果多样性。

召回层的主要策略

召回解决的核心问题是:权衡计算速度和召回率。

为了权衡计算速度和召回率,工业界主流的做法是采用多个简单策略叠加的”多路召回策略”。

常见方法:

  1. 协同过滤

  2. 基于单一特征(比如兴趣标签)

  3. 预处理好的。比如热门、最近流行、朋友喜欢。

  4. 基于知识图谱的。

  5. 基于 Embedding 的方法。

协同过滤 & Embedding 向量

原始的协同过滤:

  1. 构建用户和物品的共现(评分)矩阵

  2. UserCF:依据相似用户填充缺失值。

  3. ItemCF: 依据相似物品填充缺失值。

后来提出矩阵分解的方法来填充缺失值,矩阵分解会得到两个子矩阵,分别是用户向量矩阵和物品向量矩阵。

矩阵分解的算法有:

  1. svd

  2. 奇异值分解(要求仿真,显然不合适)

自此演进出了 Embedding 向量的模式,经典模式为:

  1. 想办法得到用户 Embedding 向量 和 物品 Embedding 向量。

  2. 用户 Embedding 向量 和 物品 Embedding 向量做內积得到评分值。

后续发展就是围绕着改进上述两个环节:

  1. 针对 Embedding 向量的改进

  2. 针对內积环节的改进(內积表达力不足)

  • AutoRec 模型,自编码器,单隐层。 输入层:评分矩阵的向量(行向量或列向量),隐层:全连接层,输出层:向量。目标函数:输入和输出的平方误差。 输出向量就是对缺失值填充后的结果。

  • NeuralCF:对內积的改进。 输入层:用户 Embedding 向量 和 物品 Embedding 向量 隐藏层:前馈网络 输出层:评分 目标函数:平方误差