深入理解:推荐系统中的召回与排序(一)向量算法隐式

从电商角度看,传统的“人找货”变成了“货找人”;从内容角度看,由信息的主动获取,到从海量信息中被动接收和挖掘有效信息。而这些都依赖于推荐系统。

对于用户而言,它作为一种“信息过滤的手段”,能够在当前信息过载的场景下,最大限度地提升用户的使用效率,建立用户对产品的信任和深度链接。

对于产品和公司而言,能够极大地提升用户活跃度与留存,提高用户转化率,这将为产品带来巨大的商业价值。

记得最早将推荐系统应用到工业界的是Amazon(亚马逊),仅仅是03年,它将传统的协同过滤算法应用在“人货匹配”的领域,开拓了电商的一条全新道路。如今的推荐系统经过技术的不断更迭,变得更加AI化、智能化。机器学习与深度学习的发展不断为其赋能,使“推荐”成为当今产品的标配。

我们进入AI的时代,产品和技术的边界,未来将变得越来越模糊,某个层面讲,有效策略的提出也往往依赖于对于技术的理解。本篇着重对于推荐模型中的召回和排序两个模块进行阐述。

一、整体框架

首先,如果要保证整个推荐系统的推荐精准度,需要依赖大量的基础样本数据,在离线条件下,将大量的样本数据“喂”给推荐模型,推荐模型将会拟合出一套普适性的算法公式,从而当每一位用户来到产品时,都能够基于用户数据带入到算法公式中,在模型的输出层得到一个结果。

这个结果是具有置信度的,将其推荐给用户,随着用户不断对推荐系统给出的结果进行反馈,用户的特征也会变得越来越丰富,从而推荐精准度也会越来越高,促成一个良性循环。

推荐系统的大致结构如上图所示,整体流程如下。

用户来到推荐页时,根据不同用户的用户数据、物品数据、所处的上下文信息等,从海量的候选物品集合中,分别经历召回层、排序层、重排序层,拉回K个用户最有可能喜欢的物品,形成最终的推荐列表(这里的物品为泛指,可以指商品、内容等)。

二、模块构成1.用户数据

第一类是用户的自有属性,包括年龄、性别、住址、职业、婚恋状态、受教育程度、消费水平等。

第二类是用户的行为数据,分为隐式反馈(如浏览、点击、收藏、购买)和显示反馈(如对物品的评分、评价)两类,但其中隐式反馈要比显示反馈更有价值,可用性更强。因为前者一定程度上能够代表用户真实的心理诉求,且数据量庞大,而后者数据较为稀疏。

2.物品数据

3.上下文信息

4.候选物品集合

一个庞大的、集海量物品为一体的“大仓库”。以电商为例,商品集可能是几十万量级甚至是百万量级。此外,推荐系统的上限,一定程度上受制于候选集的数量。换句话说,候选集的数量决定了推荐系统的天花板。

5.召回层

理想情况下,除去计算承受能力和计算速度的约束,那么我们可以直接略过召回层,直接对百万量级的商品进行排序,然后反馈给用户。

但这是不现实的,因此召回层的意义在于缩小对商品的计算范围,将用户感兴趣的商品从百万量级的商品中进行粗选,通过简单的模型和算法将百万量级缩小至几百甚至几十量级。这样用户才能有机会在毫秒的延迟下,得到迅速的商品反馈。

召回层的特点是:数据量大、速度响应快、模型简单、特征较少。

6.排序层

排序层的目的是得到精确的排序结果,也是推荐系统产生效果的重点,更是深度学习等应用的核心。从召回层召回的几百个物品,进行精准排序,根据规则对每个商品赋予不同的得分,由高至低来排序。由于精确度的要求,排序层的模型一般比较复杂,所需要的特征会更多。

排序层的特点是:数据量少、排序精准、模型复杂、特征较多。

7.重排序层

重排序层也可以称之为业务排序层,这一环连接着排序层和即将给用户展示的推荐列表。

物品在排序层排好序之后,不一定完全符合业务要求和用户体验,有时我们还需要兼顾结果的多样性、流行度、新鲜度等指标,以及结果是否符合当前产品发展阶段某些流量的倾斜策略等,实施特定的业务策略,来对当前已经排好序的物品进行再次排序。比如物品的提权、打散、隔离、强插等。

举个实际的例子,一个内容平台,假设有A、B、C三类内容,我们不想让A类型的内容连续出现3次以上,就需要加一些干扰规则,将A类内容进行打散处理,使得用户最终看到的推荐列表是符合业务上的预期的。

重排序的特点是:重业务需求、重用户体验。

三、经典的模型算法

这个部分简单谈谈几个我认为应用面非常广泛且非常核心的模型算法(后续可能会继续补充),在这里只做简要介绍,不做太多公式上的说明。

1.基于用户的协同过滤(UserCF)

首先,UserCF基于这样一个前提假设:喜欢相似物品的用户之间,存在着相似的兴趣偏好。

以电商为例,假设电商库存中有a、b、c、d四件商品,平台上一共有A、B、C、D、E五位用户,根据用户在平台上的行为和动作,我们基本能够获取到每位用户对于a、b、c、d四件商品大致的偏好程度。

如何衡量偏好程度呢?可以采用打分的方式,根据用户对于物品的显示反馈或隐式反馈,来综合得出对于物品的打分,比如对商品点赞加1分,踩一下减1分,浏览商品加1分,收藏加2分,购买加3分(这里的打分方式只是用于说明问题,实际可能会略复杂一些),这样就可以得出每个用户对于每个物品的综合打分。

但这里一定会存在用户与某个物品尚未产生交互行为的情况,那么对应的分值就为“空”,也可以取0分或者是取纵向的平均分来代替空值。

最后得到如下图的矩阵形式,这样的矩阵也称之为“共现矩阵”。

说回到UserCF,如果我们想预测用户E对于物品c的偏好,那么基于UserCF的思想,就需要找到与用户E最相似的用户,因为前面已经做出了假设,与用户E最相似的用户对于物品c的评分最有可能是用户E对于物品c的真实打分,其置信度是最高的。

那么可以通过用户向量间余弦相似度的方式来寻找最相似的k个用户,夹角越小,两个用户就越相似。

sim(i,j)=cos(i,j)

得到相似度之后,相似度就可以作为置信权重来综合对k个相似用户的打分,得到最终预测打分。

UserCF的应用场景和优缺点:

2.基于物品的协同过滤(ItemCF)

首先,ItemCF基于这样一个前提假设:用户对于不同物品间的偏好相似,那么物品间也是相似的。

它的原理与UserCF类似,还是上面那张图,可以看作是UserCF的另一面。ItemCF采用纵向的向量,作为物品的表示向量,可以通过物品向量间余弦相似度的方式来寻找最相似的k个物品,夹角越小,两个物品就越相似。

得到相似度之后,相似度就可以作为置信权重来综合k个相似物品的打分,得到最终预测打分。

ItemCF的应用场景和优缺点:

3.矩阵分解(隐向量的表达)

矩阵分解算法是基于协同过滤进化而成的,它可以认为是一种以数学的方式来优化了协同过滤算法。

前面提到,协同过滤的计算核心是生成了“共现矩阵”,那么我们可以将这个共现矩阵继续拆分,形成一个用户矩阵和一个物品矩阵,也就是得到了用户的隐向量和物品的隐向量,这样就能够用隐向量的距离来选取用户感兴趣的物品了。它的思想和embedding(下文会提到)非常相似,泛化能力极强。

共现矩阵中的每一个小单元中对应的评分,约等于,对应用户矩阵中行向量与物品矩阵中列向量每个位置对应元素的乘积之和。

如上图所示,共现矩阵是n×n维的,用户矩阵是n×k维的(图中k=2),物品矩阵是k×n维的。其中k值根据具体工程而定。其中k值越小,模型泛化能力越强。k值越大,模型泛化能力越差,但表达能力越强。

至于如何得到这样的用户矩阵和物品矩阵,采用的是机器学习中的梯度下降法,并且最小化损失函数,得到的最优近似解。具体不展开论述了。

4.逻辑回归(LR)

说到逻辑回归算法,它实在是太经典了,而且应用非常非常广泛,甚至可以说是深度学习神经网络的基础。在深度学习模型中,一般常作为神经网络的输出层。先看一下逻辑回归的图像:

可以看出,逻辑回归可以将所有的输入全部映射到0到1之间,因为0和1的存在,逻辑回归可以广泛应有于二分类问题。

在工业界,我们应用逻辑回归模型,通常是将【0~1】这个值域转化为对概率的预测,因为概率就是从0到1的。一个二分类问题就可以等价于,对于一个样本是否是正样本的概率(可以是点击率CTR)进行预测,最后根据预测的概率值,从上至下来对推荐列表排序(有时在极限情况下,我们甚至可以认为,当输入只要大于0时,输出就为1;当输入只要小于0时,输出就为0,从而简化模型)。

1)逻辑回归的优势

与传统的协同过滤不同,协同过滤仅利用了用户对物品的偏好特征,忽略了用户特征、物品特征,以及场景特征。协同过滤会丢失掉大量的尚未利用的有效信息,导致给出的结果并不是最权威的。

逻辑回归能够很好避免这一点,它能够将用户、物品、上下文、历史行为特征全部融入进模型中,并分别为每一组特征拟合出每一组权重,最后得到的结果更具有可信度。

2)逻辑回归的推荐流程

这其实涉及到one-hot编码,以及multi-hot编码。举个例子,对于结构化的数据(比如性别、星期几)都可以用向量的方式来表示,比如[1,0,0]可以代表一个男性,[0,1,0]可以代表一个女性,[0,0,1]可以代表性别未知;星期几也是同理,一周有七天,就有七个维度,[1,0,0,0,0,0,0]就可以代表星期一,依此类推。

四、召回策略1.多路召回策略

在召回层这个阶段,我们一方面希望能够召回尽量多的物品,提升召回物品的丰富度。也就是说,我们希望召回的这些物品的覆盖面尽可能全,这里有一个计算指标,叫做召回率。

另一方面,如果召回了特别多的物品,虽然满足我们对召回覆盖面的预期,但随着物品数量增多,又会极大地影响计算机的计算速度。

在两方面的权衡之下,我们通常采用一种方法叫做多路召回策略。但召回策略是强依赖于业务的,每个不同的产品处在不同的时期,所用到的召回策略也不尽相同。

多路召回策略简单地说,就是采用了多种类型的小型策略,每一种小型策略分别从候选集中召回一定数量的物品,这样我们就会得到召回物品的一个大的组合,进而将这个组合再交付到排序层进行排序。

多路召回的好处在于:

2.基于Embedding的召回

这种召回方法偏向于技术层面,我认为策略PM可以做一个大致了解,先简单谈谈什么叫做Embedding。

Embedding可以等价类比为“向量化”或“向量映射”,是一种向量的映射方式。Embedding的作用就是将一个高维稀疏的特征向量映射(或者叫转化)为一个低维稠密的特征向量,同时保留原有高维向量的显著特征。Embedding是整个深度学习框架中不可或缺的第一个层级(其实就是用于特征转换)。例如前面提到的“矩阵分解”,就可以看作是Embedding的一个变种。

那么什么是基于Embedding的召回呢?

这里有一个前提,就是说如果用户特征与物品特征这两者被抽象出的Embedding向量是相似的(向量离得最近),那么该用户就越可能喜欢该物品,从而将该物品从候选集中召回。好了,那么问题就可以等价更该为:如何为用户Embedding去寻找最相似的物品Embedding?

因此引申出了另一种方式去计算Embedding相似度,既然两者同属于一个向量空间,那么找到与用户Embedding向量最相似的物品Embedding向量就可以理解为是:基于用户向量去搜索与用户向量最邻近向量的过程,这种方式称之为“局部敏感哈希(LocalitySensitiveHashing,LSH)”。

局部敏感哈希的原理我就不在这里赘述了,原理略微偏数学一些,可能与产品扯得越来越远了,有兴趣的同学可以查查百度。不过基于Embedding的召回方式是非常有实践意义的,Youtube推荐系统在召回层就是利用了这个召回策略。

总的来说,它有几个好处。

五、排序策略

排序一直是推荐系统的核心部分,排序模块目前一般使用机器学习和深度学习的技术来提供“千人千面”的排序结果,属于典型的技术驱动的模块。如前文所提,排序模块分为两大块,一块叫做排序层(机器学习),另一块叫做重排序层(业务排序层)。

举个例子,一个视频内容平台,某一个秀身材的美女视频我点进去看了一眼,或者我不小心误触进去了,那么同样类型题材的视频就会连续不断地推给我。这不仅是算法越推越窄的问题,实际上是缺乏对新颖性和多样性的考虑,缺乏对排序的干预处理。所以在推荐系统的开发之前就需要考虑它的适应性和可调整性。

排序主要是为了解决重要性的问题。排序越靠前的内容,对于用户而言重要程度越高。对于业务和产品而言,不同时期、不同阶段对于不同用户给出的排序规则一定是不同的,下面介绍一些常用的排序策略。

1.热度策略

2.流行度降权

流行度降权的一种计算方式如下所示,r(ui)是推荐系统给出的原始分值,M(i)是物品的销量,a是一个可调节的参数,它的意义在于保护销量小于a的物品不被降权。

当然除此之外还有更多其他函数可以使用,比如分段函数,我们可以根据销量在不同的范围,分别给定不同的降权系数。

4.内容打散

如何解决相同类型内容连续不断的推荐给用户的问题呢?其实最简单的做法就是直接加入业务规则来限制。

比如曝光点击率高的优先排序,此外同一类型的内容连续不得超过3个,若超过3个,就将这些内容之后第一个不属于此分类的内容,强制插入到前面的结果中去。

这种做法一般比较麻烦且效果有限。一个比较好用的内容打散算法如下所示,它能够拉大同类内容的区分度,从而使得不同的内容实现混插。其中V(k,j)代表推荐结果中,分类k中排序为j的商品的推荐分数。V(k,j)”代表最终修正后的推荐分数。u代表离散率,越接近于0,则离散性越强。

六、总结

首先很感谢你能耐心地看到这里,不过受制于篇幅所限,很多内容无法完整展开。

其实对于推荐系统而言,说复杂也复杂,说简单其实把它看透了也是很容易理解的。

本文由@寻迹原创发布于人人都是产品经理。未经许可,禁止转载

THE END
1.科技创新前沿,CF科技网站新闻速览CF科技网站致力于成为连接科技爱好者与科技世界的桥梁,通过发布最新的科技资讯、深度报道、技术解析等内容,帮助用户紧跟科技发展的步伐,洞察行业趋势,网站内容涵盖多个热门科技领域,包括但不限于人工智能、物联网、生物技术等,旨在为用户提供一个全面、多元的科技信息平台。 http://yili.jinyuen.com.cn/post/27410.html
2.有哪些学习算法的网站推荐?免费的公益性网上程序设计题库,包含3000多道饶有趣味的程序设计题,是个提供编程、算法题目的网站,兼容https://www.zhihu.com/question/20368410/answer/726247443
3.机电类网站模板/百度查重免费针对协同过滤的两种推荐算法——userCF算法、itemCF算法来分别解决物品冷启动的问题。 userCF算法 针对推荐列表并不是给用户展示内容的唯一列表(大多网站都是这样的)的网站 当新物品加入时,总会有用户通过某些途径看到,那么当一个用户对其产生反馈后,和他历史兴趣相似的用户的推荐列表中就有可能出现该物品,从而更多的http://www.nhpp.cn/news/278227.html
4.采用ItemCF算法时间的推荐系统可能会遇到多样性不足,推荐新颖度低亲,您好很高兴为您解答:采用ItemCF算法时间的推荐系统可能会遇到多样性不足,推荐新颖度低的问题及思?答:UserCF:推荐那些和他有共同兴趣爱好的用户喜欢的物品ItemCF:推荐那些和他之前喜欢的物品类似的物品根据用户推荐重点是反应和用户兴趣相似的小群体的热点,根据物品推荐着重与用户过去的历史兴趣,即https://wen.baidu.com/question/1184421135965829299.html
5.目标跟踪入门——目标跟踪算法综述电子创新网Imgtec社区最早的可用于目标检测的CF算法是MOSSE,它的全名为Minimum Output Sum of Squared Error Filter,它作为CF的开篇算法,引出了后来更多性能更加优越的算法。 能够使得相关滤波算法能够用于实时性应用的首个算法是CSK(the Circulant Structure of Tracking-by-detection with Kernels),通过使用高斯核计算相邻两帧之间的相关性https://imgtec.eetrend.com/blog/2019/100017436.html
6.KernelCF:推荐系统的最优召回策略答案是肯定的。Ratidar Technologies LLC 在国际学术会议 CAIBDA 2022 上宣读了一篇题为Kernel-CF: Collaborative filtering done right with social network analysis and kernel smoothing 的论文,介绍了如何利用数据可视化算法和非参数统计方法计算推荐系统最优召回策略。我们下面详细的介绍相关内容:https://www.51cto.com/article/782432.html
7.基于流形近邻的协同过滤算法AET其中,EMNCF和MNCF的流形邻居数取500,EMNCF是在最小最大距离上加上0.01倍的欧氏距离。从表2中可以看出MNCF明显优于MCF,与EMNCF性能相当。 为了比较基于欧氏距离的协同过滤算法和基于最小最大距离的协同过滤算法,此处变化邻居数,加权方案取01VD,记使用欧氏距离的协同过滤方案为ECF,得到的实验结果如图2所示。 http://www.chinaaet.com/article/3000016485
8.基于用户情景推断的军事信息HybridCF推荐算法针对当前军事信息推荐方法未对用户所处时间、地理位置和用户场景做区分,以及未考虑军事用户的信息需求与所处场景的关联性,导致推荐结果固定、单一化问题,设计了基于用户情景推断的军事信息Hybrid-CF(混合协同过滤)推荐方法;融入军事用户情景要素对传统协同过滤算法进行了改进,通过计算当前情景信息与历史信息的相似度,更加https://m.cnki.net/mcnki/literature/detail?datatype=CJFD&instanceID=JZCK2024091200K
9.Mahout推荐算法编程实践demo说明OSCHINATaste 是曾经风靡一时的推荐算法框架,后来被并入 Mahout 中,Mahout 的部分推荐算法基于 Taste 实现。 下文介绍基于 Taste 实现最常用的 UserCF 和 ItemCF。 本文不涉及 UserCF 和 ItemCF 算法的介绍,这方面网上资料很多,本文仅介绍如何基于 Mahout 编程实现。 欢迎转载,请注明来源: http://blog.csdn.net/u0109https://my.oschina.net/xiaominmin/blog/1919329
10.基于物品的协同过滤推荐算法c++实现源码本文将详细解析基于物品的协同过滤(Item-Based Collaborative Filtering,简称itemCF)推荐算法的C++实现,以及如何利用MovieLens数据集进行实验。 **一、推荐系统的原理** 推荐系统主要分为两种:基于用户的协同过滤(User-Based CF)和基于物品的协同过滤(Item-Based CF)。基于物品的协同过滤算法主要依赖于用户对物品的评价https://download.csdn.net/download/homen_live/6941027
11.基于二分网络社团划分的推荐算法2 RACD的思想与实现 2.1 算法思想 User-based CF算法在电子商务网站中得到广泛应用, 但仍存在一些问题, 数据稀疏性就是其中之一.例如:假设某个电影推荐网站中包含几百万部电影, 而平均每个用户评价过的电影只有几百部, 显然, 得到的“用户-电影”矩阵十分稀疏.基于这样的稀疏矩阵给用户推荐电影, 推荐的质量并https://xuebao.neu.edu.cn/natural/article/html/2018-8-1103.htm
12.什么是智能推荐?智能推荐的原理是什么?所以,CF依赖于“群体共性”“群体智慧”挖掘出那些潜在的、可能会被用户喜欢的内容并推荐给用户。CF算法也是最早、最经典的推荐算法之一,可以这么说,CF算法是推荐算法的鼻祖。我们后续很多推荐算法都是基于CF的协同过滤思想延伸而来。有两类基于协同的推荐算法:基于用户的协同过滤算法、基于物品的协同过滤算法。https://www.niaogebiji.com/article-106383-1.html
13.视频资源和平常收纳的一些自己认为比较好的博客网站工具学习记录的一些笔记,以及所看得一些电子书eBooks、视频资源和平常收纳的一些自己认为比较好的博客、网站、工具。涉及大数据几大组件、Python机器学习和数据分析、Linux、操作系统、算法、网络等 - josonle/Coding-Nowhttps://github.com/josonle/Coding-Now/
14.推荐系统算法实战协同过滤CF算法(CollaborativeFiltering仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法。学术界对协同过滤算法 进行了深入研究,提出了很多方法,比如基于邻域的方法(neighborhood-based)、隐语义模型 (latent factor model)、基于图的随机游走算法(random walk on graph)等。在这些方法中, 最著名的、https://cloud.tencent.com/developer/article/1558722
15.codeforces全球最大算法竞赛平台Codeforces. Programming competitions and contests, programming communityhttp://codeforces.com/
16.算法等于数学吗?而这个方法和步骤从大的方面可以是软件的开发,从小的方面又可以是一个函数的独特设计。如果说程序是一个人的话,那算法就是这个人的灵魂了。我当时学习网站开发时,就把HTML看作成一个人的骨架,CSS看作成这个人的外貌长相,而JS则看成是这个人的能力。这也很好的自我安慰在计算机界能力大于外貌(//?//) https://www.jianshu.com/p/49cf29db387f
17.个性化推荐“算法”变“算计”,真能一关了之吗?而我们今天主要谈的是算法推荐。这是算法的一种应用,用于推测出用户可能喜欢的东西。算法推荐最早在海外出现应用。1998年,亚马逊平台就上线了基于物品的协同过滤算法(ItemCF算法),算法的使用让亚马逊销售额增长了不止100倍。随后越来越多的企业开始使用算法推荐,并逐渐在业内崭露头角。 https://new.qq.com/rain/a/20220318A02GCN00
18.新余市职业教育中心资助管理评审办法(二)综合测试成绩的算法 以班级为单位计算出每个学生理论和实践的平均成绩,学习成绩排名在同专业同年级里前5%(含5%),学习成绩未进入5%但达到前30%(含30%)且在道德风尚、专业技能、社会实践、创新能力、综合素质等方面表现特别突出的,可以申请,同时需要提交详细的证明材料,证明材料须由学校审核后中加盖学校公章。学习http://www.xinyu.gov.cn/xinyu/szxsgl/2023-11/16/content_148b3a3bc4a04cf695e0a028f7b403cf.shtml
19.FDSST跟踪算法2018年及以前经典实时目标跟踪算法代码合集 文件夹中为2018年及以前的几种实时并且准确度高的目标跟踪算法源码合集,大部分为matlab编程。部分算法为matlab C++混合编程。 bacf_toupload BACF算法 DSST-master DSST算法 ECO-master ECO-HC算法 fDSST_code fDSST算法 Matlab_STCv0 STC算法 OpenTLD-master TLD算法 https://www.iteye.com/resource/freexilele-10311988
20.召回策略推荐系统RES在ItemCF算法中使用,指定某个物品的若干个最近邻物品,构成该物品近邻集合。 50 相似性度量方式 计算用户或物品特征表达相似性的方式。在ItemCF算法中,每个物品会基于对它有过行为的用户表示为特征向量,向量每一维是一个<user_id, score>元组,score表示对应user_id的权重,该参数决定了使用何种函数计算物品向量之间的https://support.huaweicloud.com/usermanual-res/res_01_0020.html
21.CFGAN基于生成对抗神经网络的协同过滤推荐ItemCF:ItemCollaborationFilter,基于物品的协同过滤 算法核心思想:给用户推荐那些和他们之前喜欢的物品相似的物品。 比如,用户A之前买过《数据挖掘导论》,该算法会根据此行为给你推荐《机器学习》,但是ItemCF算法并不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。 ==>该https://www.pianshen.com/article/6294291240/
22.算法竞赛算法竞赛入门经典 作者:刘汝佳 ISBN:9787302356288 出版社:清华大学出版社 出版年:2014 机器学习算法竞赛实战 作者:王贺 ISBN:9787115569592 出版社:人民邮电出版社 出版年:2021 算法竞赛入门经典 作者:刘汝佳 ISBN:9787302206088 出版社:清华大学出版社 出版年:2009 算法竞赛入门到进阶 作者:罗勇军,郭卫斌 ISBN:9787https://www.las.ac.cn/front/book/detail?id=392ed1d8a88494cf4b6a2641fc5332b2