推荐系统中召回策略

推荐系统一般分为两个阶段,即召回阶段和排序阶段。召回阶段主要是从全量的商品库中得到用户可能感兴趣的一小部分候选集,排序阶段则是将召回阶段得到的候选集进行精准排序,推荐给用户。

推荐系统中几种常用的召回策略。主要有协同过滤、向量化召回和阿里最近在Aicon中提到的深度树匹配模型。

1、协同过滤

协同过滤主要可以分为基于用户的协同过滤、 基于物品的协同过滤、基于模型的协同过滤(如矩阵分解)

1.1 基于用户的协同过滤(userCF)

基本思想:当召回用户A的候选集时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A未交互的物品作为候选集。

1.2 基于物品的协同过滤(itemCF)

基本思想:给用户推荐那些和他们之前喜欢的物品相似的物品。

主要分为两步:

(1) 计算物品之间的相似度。
(2) 根据物品的相似度和用户的历史行为给用户生成召回候选集。

1.3 UserCF和ItemCF的比较

1.4 协同过滤总结

  协同过滤方法通过在用户历史行为里面找相似的商品和用户,保证了基础的相关性。与此同时,因为只找相似的商品或相似用户的商品,所以系统屏蔽了大规模的计算,使整个召回的过程能够高效地完成。

  弊端:在召回的时候,并不能真正的面向全量商品库来做检索,如itemCF方法,系统只能在用户历史行为看过的商品里面找到侯选的相似商品来做召回,使得整个推荐结果的多样性和发现性比较差。这样做的结果就是,用户经常抱怨:为什么总给我推荐相同的东西!

2、向量化召回

向量化召回,主要通过模型来学习用户和物品的兴趣向量,并通过内积来计算用户和物品之间的相似性,从而得到最终的候选集。其中,比较经典的模型便是Youtube召回模型。

 2.1 Youtube召回模型

论文解读:https://www.jianshu.com/p/8fa4dcbd5588

Youtube召回模型的架构如下:

从模型结构可以看出,在离线训练阶段,将其视为一个分类问题。我们使用隐式反馈来进行学习,用户完整观看过一个视频,便视作一个正例。如果将视频库中的每一个视频当作一个类别,那么在时刻t,对于用户U和上下文C,用户会观看视频i的概率为:

其中,u是用户的embedding,这个embedding,是网络最后一个Relu激活函数的输出,vi是视频i的embedding。那么问题来了,输入时,每一个视频也有一个对应的

embedding,这个embedding是不是计算softmax的embedding呢?个人认为是两组不同的embedding,输入层的embedding分别是用户空间和视频空间的向量,最终的

输出层,二者通过一系列全联接层的线性变化,转换到了同一空间,所以对于用户和视频来说,输出层的embedding是同一空间,可以认为是兴趣空间,这样二者的内积可

以代表相似性。

使用多分类问题的一个弊端是,我们有百万级别的classes,模型是非常难以训练的,因此在实际中,Youtube并使用负样本采样(negative sampling)的方法,将class的数量减小。对于在线服务来说,有严格的性能要求,必须在几十毫秒内返回结果。因此,youtube没有重新跑一遍模型,而是通过保存用户兴趣embedding和视频兴趣embedding,通过最近邻搜索的方法得到top N的结果。该近似方法中的代表是局部敏感Hash方法。

2.2 局部敏感哈希(Locality-Sensitive Hashing, LSH)

LSH的基本思想:我们首先对原始数据空间中的向量进行hash映射,得到一个hash table,我们希望,原始数据空间中的两个相邻向量通过相同的hash变换后,被映射到同一个桶的概率很大,而不相邻的向量被映射到同一个桶的概率很小。因此,在召回阶段,我们便可以将所有的物品兴趣向量映射到不同的桶内,然后将用户兴趣向量映射到桶内,此时,只需要将用户向量跟该桶内的物品向量求内积即可。这样计算量被大大减小。

关键的问题是,如何确定hash-function?在LSH中,合适的hash-function需要满足下面两个条件:
1)如果d(x,y) ≤ d1, 则h(x) = h(y)的概率至少为p1;
2)如果d(x,y) ≥ d2, 则h(x) = h(y)的概率至多为p2;
其中d(x,y)表示x和y之间的距离, h(x)和h(y)分别表示对x和y进行hash变换。

满足以上两个条件的hash
function称为(d1,d2,p1,p2)-sensitive。而通过一个或多个(d1,d2,p1,p2)-sensitive的hash
function对原始数据集合进行hashing生成一个或多个hash table的过程称为Locality-sensitive
Hashing。

2.3 向量化召回评价

向量化召回是目前推荐召回核心发展的一代技术,但是它对模型结构做了很大的限制,必须要求模型围绕着用户和向量的embedding展开,同时在顶层进行内积运算得到相似性。在深度学习领域其实模型结构层出不穷,百花齐放,但是这样一个特定的结构实际上对模型能力造成了很大的限制。

3、深度树匹配

参考:https://blog.csdn.net/leadai/article/details/89391366

原文地址:https://www.cnblogs.com/graybird/p/11393511.html

时间: 2024-10-11 12:34:31

推荐系统中召回策略的相关文章

推荐系统中的策略与算法互补

推荐系统中的策略与算法互补算法可以做全局排序,但是一刷的推荐位的数量是固定的,有限的,那么如何保证一刷的之中内容的多样性呢?先从排序结果中依次挑出一些能代表一个或者几个维度(从大到小的几个维度)的元素,然后按照打散规则(比如不同作者相互隔开)的规则打散.算法能解决排序问题,作为互补,多样性和打散策略可以在顺序的基础上做一些体验上的丰富性和展现上的美观 更好的解决方法是:算法也算好每个位置应该放什么样式的文章以及一刷中每类文章的比例: 原文地址:https://www.cnblogs.com/bi

推荐系统中ES使用过程中遇到的问题:

推荐系统中ES使用过程中遇到的问题:1.在线业务要和离线业务分离:(不然离线的大量写或者聚合查都会导致资源紧张(cpu idle降低),进而导致在线业务查询响应变慢)2.控制full gc避免在业务高峰执行:3数据分布要均匀,如果不能保证自定义主键是均匀的,那么就使用ES默认的主键生成策略:4.来回修改ES中的同一个记录或者并发插入同一条记录,如何做到记录不重复的问题:在小于index.refresh_interval的时间内进行离线查重并排重(删除重复的,保留最新的)5.客户端要client.

推荐系统中常用算法 以及优点缺点对比

推荐系统中常用算法 以及优点缺点对比 在 推荐系统简介中,我们给出了推荐系统的一般框架.很明显,推荐方法是整个推荐系统中最核心.最关键的部分,很大程度上决定了推荐系统性能的优劣.目前,主要的推荐方法包括:基于内容推荐.协同过滤推荐.基于关联规则推荐.基于效用推荐.基于知识推荐和组合推荐. 一.基于内容推荐 基于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机 器

初尝Mcafee之在ePO中进行策略和客户端任务设置【06】

一.策略和客户端任务概述 在ePO中点击"菜单",可以看到一个策略的大分类:ePO就是通过分配策略和客户端任务给客户端代理,然后代理将这些策略和客户端任务分配给本地相应的Mcafee杀毒防护软件进行执行: 策略是针对软件的内在参数和计划任务的配置,例如VirusScan是否扫描压缩文件,VirusScan的扫描计划的设置: 客户端任务是针对软件的外在交互,例如安装,部署,更新,信息统计等: 二.策略和客户端任务的分配结构: 策略和客户端任务的分配结构有点跟Windows Server的

矩阵分解在推荐系统中的应用

矩阵分解是最近几年比较火的算法,经过kddcup和netflix比赛的多人多次检验,矩阵分解可以带来更好的结果,而且可以充分地考虑各种因素的影响,有非常好的扩展性,因为要考虑多种因素的综合作用,往往需要构造cost function来将矩阵分解问题转化为优化问题,根据要考虑的因素为优化问题添加constraints,然后通过迭代的方法进行矩阵分解,原来评分矩阵中的missing vlaue可以通过分解后得到的矩阵求的. 本文将简单介绍下最近学习到的矩阵分解方法. (1)PureSvd 怎么评价这

从“假如有以下几种价格10,20,50,请你代码实现将他们排序输出”看着设计模式中的策略模式

今天重温了一下策略模式,将自己的一些感悟与大家分享...本人只是技术渣渣,所理解的东西的难免会有很大的局限性甚至是错误,还请各位带着批判的眼光去看待....不喜请勿吐槽 定义:策略模式属于设计模式中的对象行为型模式,它将用到的算法单独抽象成一个单独的类.通常,我们在多个类完成同一件事情,仅仅完成的方式不同时,我们可以考虑使用这种设计模式. 举例:相信,很多人在看到"假如有以下几种价格10,20,50,请你代码实现将他们排序输出"这种题目的时候,很快就写出了以下代码,写之前还不忘了问一下

推荐系统中的相似度度量

相似度计算是数据挖掘,推荐引擎中的最基本问题,例如在推荐系统(Recommender Systems,简称RSs)中计算带推荐物品(Item)相似度,或是用户(User)之间的相似度以期获得兴趣口味(Taste)相似的用户时,均需要使用到相似度计算技术.经常使用的相似度计算方式较多,且各有特点, 以下就列出常用的相似度计算方式,原理,以及其优缺点. 相似度计算和距离计算是类似问题,之前粗略看了下Mahout(apache分布式数据挖掘项目)中的实现对各计算方式进行分析.结合在实际项目中的应用,介

SVD在推荐系统中的应用与实现(c++)

主要参考论文<A Guide to Singular Value Decomp osition for Collab orative Filtering> 其实一开始是比较疑惑的,因为一开始没有查看论文,只是网上搜了一下svd的概念和用法,搜到的很多都是如下的公式:其中假设C是m*n的话,那么可以得到三个分解后的矩阵,分别为m*r,r*r,r*n,这样的话就可以大大降低存储代价,但是这里特别需要注意的是:这个概念一开始是用于信息检索方面的,它的C矩阵式完整的,故他们可以直接把这个矩阵应用svd

域组策略--+域控中组策略基本设置

域控中组策略基本设置 计算机配置:要重启生效                  用户配置:注销生效 策略配置后要刷新:gpupdate /force 组策略编辑工具!  -----gpmc.msi (工具) 使用:运行--->gpmc.msc                如下键面: 文件夹重定向: 1.在域控建立一共享文件夹,权限放到最大(完全控制,无安全隐患!) 2.域账户用户登录任一台机器都能看到我的文档里的自己的东西! 禁止用户安装软件: 给域用户基本权限(Domain user),但有