大数据、数据应用、推荐系统、神经网络、深度学习、召回算法、Embedding、协同过滤算法
简介
召回是推荐系统的第一阶段,主要根据用户和商品部分特征,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品,然后交给排序环节。
理想情况下,除去计算承受能力和计算速度的约束,那么我们可以直接略过召回层,直接对百万量级的商品进行排序,然后反馈给用户。
但这是不现实的,因此召回层的意义在于缩小对商品的计算范围,将用户感兴趣的商品从百万量级的商品中进行粗选,通过简单的模型和算法将百万量级缩小至几百甚至几十量级。这样用户才能有机会在毫秒的延迟下,得到迅速的商品反馈。
召回层的特点是:数据量大、速度响应快、模型简单、特征较少。
传统召回
基于内容的召回(Content-Based,CB)
基于内容的召回( CB召回 ),一般也叫做标签召回。这类召回的核心思想是基于item自身的属性,这些属性可以表达为tag,Cate,也可以用来表达用户ID,用户类型等,更可以通过⼀些交叉验证的⽅式,针对内容提取向量,将内容表达为连续向量的方式进行召回。在实际的应用中,如电影推荐,首先我们根据用户之前的历史行为信息(如点击,评论,观看等),CB会使用item相关特征来推荐给用户与之前喜欢的item类似的item。
优点
- 该模型不需要其他用户的任何数据,因为推荐是针对该用户的。 这使得更容易扩展到大量用户。
- 该模型可以捕获用户的特定兴趣。
缺点
- 由于item的特征表示在某种程度上是手工设计的,因此该技术需要大量领域知识。因此,模型很依赖手工设计特征的好坏。
- 该模型只能根据用户的现有兴趣提出建议。换句话说,该模型扩展用户现有兴趣的能力有限。
协同过滤(Collaborative filtering,CF)
CF同时使用user和item之间的相似性来进行推荐。 这样可以提高模型的推荐拓展性。也就是说,协同过滤模型可以根据相似用户B的兴趣向用户A推荐商品。此外,可以自动学习Embedding,而无需依赖手工设计的特征。一般来说,协同过滤推荐分为三种类型。第一种是基于用户(user-based)的协同过滤,第二种是基于项目(item-based)的协同过滤,第三种是基于模型(model based)的协同过滤。
- 基于用户(user-based)的协同过滤:主要考虑的是用户和用户之间的相似度,只要找出相似用户喜欢的物品,并预测目标用户对对应物品的评分,就可以找到评分最高的若干个物品推荐给用户。
- 基于项目(item-based)的协同过滤:和基于用户的协同过滤类似,只不过这时我们转向找到物品和物品之间的相似度,只有找到了目标用户对某些物品的评分,那么我们就可以对相似度高的类似物品进行预测,将评分最高的若干个相似物品推荐给用户。比如你在网上买了一本机器学习相关的书,网站马上会推荐一堆机器学习,大数据相关的书给你,这里就明显用到了基于项目的协同过滤思想。
- 基于模型(model based)的协同过滤:是目前最主流的协同过滤类型了,所含算法是非常之多的,如矩阵分解、关联算法、聚类算法、深度学习、图模型等等。
Embedding
以电影推荐为例,通过设计特征,我们现在可以使用多维Embedding来表示每部电影
我们再次将用户放置在相同的嵌入空间中,以最好地解释反馈矩阵:对于(用户,商品)对,我们希望用户Embedding和商品Embedding的点积在用户观看商品时接近1 电影,否则为0
在这个例子中,我们对Embedding进行了手工设计。在实践中,可以自动学习Embedding向量表示,这是协同过滤模型的强大功能。
矩阵分解
矩阵分解是一个简单的Embedding模型。 给定反馈矩阵 ,其中 是用户(或query)数量, 是item数量,该模型将学习:
- user Embedding矩阵 ,其中第i行是 的Embedding。
- item Embedding矩阵 ,其中第j行是 的Embedding。
Embedding通过学习,使得 的乘积是反馈矩阵 的良好近似。 的 项就是 和 对应的两个embedding的点积,使其尽量接近 。
优点
- 无需领域知识:不需要相关领域知识,因为Embedding是自动学习的。
- 发掘用户兴趣:该模型可以帮助用户发现新的兴趣点。 系统可能并不知道用户对给定的item的兴趣度,但是模型仍会推荐给他,因为相似的用户有着相同的兴趣点。
- 很好的初始模型:在某种程度上,该方法仅需要反馈矩阵即可训练矩阵分解模型。 而且该方法不需要上下文特征。 实际上,该方法可以用作多个召回队列中的一个。
缺点
- 冷启动问题。模型预测结果是给定的(用户,商品)相应Embedding的点积。因此,如果在训练数据中item从未出现过,则系统也无法计算其Embedding,也无法得到相应的预测结果。此问题通常称为冷启动问题。
- 使用附加特征(即queryID /itemID以外的其他特征)困难。 因此只能对训练集中存在的用户或item进行推荐。
深度召回
使用矩阵分解来学习Embedding。 矩阵分解的一些限制包括:
- 使用附加特征(即queryID /itemID以外的其他特征)困难。 因此只能对训练集中存在的用户或item进行推荐。
- 推荐的相关性。 正如前文所描述的那样,倾向于向所有人推荐热门item,尤其是在使用点积作为相似性度量时。 难以刻画特定的用户兴趣。
深度神经网络(DNN)模型可以解决矩阵分解的这些限制。 DNN可以轻松地融入query特征和item特征(由于网络输入层的灵活性),这可以帮助捕获用户的特定兴趣并提高推荐的相关性。
Softmax DNN 模型
一般而言,DNN模型是利用softmax作为最后一层的输出,它会将问题视为多分类问题,其中:
- 输入是用户query。
- 输出是一个概率向量,其大小等于语料库中item的数量,代表与每个item进行交互的概率; 例如,点击或观看视频的可能性。
更多召回模型
Youtube DNN召回:YouTube在2016年发表的论文《Deep Neural Networks for YouTube Recommendations》为背景进行YouTube的深度神经网络推荐模型的介绍。YouTube的dnn matching召回,将用户和context特征输入DNN,用隐含层最后一层作为向量表示,用Softmax每个item对应的参数作为item的向量表示,通过内积最大索引得到top k
论文地址:Deep Neural Networks for YouTube Recommendations
DSSM语义召回:DSSM模型是微软2013年发表的一个关于query/ doc的相似度计算模型,后来发展成为一种所谓”双塔“的框架广泛应用于广告、推荐等领域的召回和排序问题中。
论文地址:Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
RNN序列召回:基于用户session中的点击序列进行建模召回有很多种方式,其中使用RNN深度网络结构来刻画是其中比较有代表性的一种。相应的网络结构其实很简单,如下图所示。使用用户session中的点击序列作为模型输入,输出则为用户下次点击的item相应的得分。
论文地址:Session-based recommendations with recurrent neural networks
TDM深度树匹配召回:TDM模型是阿里巴巴于2018年提出的新一代深度召回模型,试图通过结合树结构搜索与深度学习模型来解决召回的高性能需求与使用复杂模型进行全局搜索与之间的平衡。它将召回问题转化为层级化分类问题,借助树的层级检索可以将时间复杂度降到对数级。即认为用户对某节点的兴趣是大于等于其叶子节点的,所以只需在每层选出topk,且在下一层仅计算上一层选出来的节点相应子节点的兴趣,对于规模为M的语料库,只需要遍历 2 k logM个分支就可以在完全二叉树中找到topk的推荐结果。
论文地址:Learning Tree-based Deep Model for Recommender Systems
拼接召回
参考
https://zhuanlan.zhihu.com/p/115690499
https://www.zhihu.com/question/21251105
http://www.woshipm.com/data-analysis/4542994.html
https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/102763433