再看经典召回算法

2020 年 10 月 21 日 AINLP

在学习和应用推荐算法的过程中,发现越来越多的文章在描述深度学习应用在推荐系统上的方法,不可否认深度学习的发展给推荐系统带来了巨大的进步,但是传统的经典算法仍然是非常值得学习的,毕竟可以作为一个比较高的baseline,同时也是快速上手和搭建推荐系统的好方法,因此这篇文章就主要总结和梳理一下传统的经典召回算法。

一般经典的召回方法即采用多路召回的方式,如下图所示。

通俗的来说多路召回就是从不同的角度采用一定的方法针对给定用户来从候选物品库中挑选一定数量的物品,最终把每路挑选出来的物品合起来一同交给排序模型进行排序,从而推荐给该用户。多路召回的特点就在于“多路”,满足了挑选物品的多样性,捕捉用户兴趣的多样性,可以根据需要保证你想要召回的物品总能通过某一路挑选出来。下面就详细介绍和分析一下每一路召回方法。

▌热门召回

根据字面意思可以看出和个性化无关,即挑选热门物品即可,比如挑选出点击率高或下载量大的Top K个物品。

▌基于兴趣标签的召回

对用户兴趣标签进行优先级划分,然后依次根据用户的兴趣标签挑选对应标签的物品。比如A用户的兴趣有看书,健身,爱狗人士,而根据A用户的喜爱程度排序则为爱狗人士,健身,看书,那么可以从物料库中挑选出和狗相关的Top K个物品,如果不够则依次从下一个兴趣标签挑选物品,直到总共选出Top k个物品。

或者可以对用户每个兴趣标签划分挑选物料的比例,保证用户的多个兴趣标签都有对应的物品。 

▌基于年龄地域等人群召回

该方法主要利用人群基本特征(年龄,性别,城市等)对用户进行分组,然后找到同一人群的共同物品偏好,从而进行相似推荐。比如年龄20至30,性别男,城市一线城市分为一组,发现在这一类人群中洗面奶的购买量很大,那么就可以对具有相同人群推荐该洗面奶。 

▌基于协同过滤的召回

协同过滤最典型的两个方法,一个是基于物品的协同过滤,一个是基于用户的协同过滤,用来直观区分和理解这两种方法的点是:可以把他们分别看作为一个是通过计算物品的权重来进行相似推荐,而另一个是通过计算用户的权重来进行相似推荐,具体可以看下面的详细分析。除了以上两种经典的协同过滤方法外,还有基于矩阵分解的协同过滤方法,比如ALS,SVD,SVD++等。

虽然通过这些协同过滤方法得到的推荐物品也可以直接进行推荐,但在精细化的推荐场景中一般把协同过滤得到的推荐物品放在召回集再进一步进行排序,按照先后顺序推荐给用户更个性化的物品。

下面可以具体看下这几种方法的特点:

(1)基于物品的协同过滤

基本思路就是给定一个物品,通过计算物料中其他物品和该物品的相似权重,从而可以推荐给用户喜欢过的物品的相似物品。而通过计算物品相似权重方法的不同,总结可以分为以下几种: 

1.根据点击,购买或下载共现来计算物品的权重。也就是当一个用户购买过A,购买过B,也购买过C,那么对物品A来说就会出现两个共现对(A,B),(A,C)。如果另一个用户购买过A,也购买过B,那么就又有一个共现对(A,B)。假设把共现对从某个角度理解成相似,那么对于物品A来说,物品B的相似权重就为1+1=2,物品C的相似权重就为1。当然相似权重的计算方法还有许多,但这种通过共现对计算相似权重的思想万变不离其宗。 

2.基于Word2Vec方法计算物品权重。这种方法主要从物品的序列角度来考虑物品的相似性。也就是用户通过购买,点击或下载行为,会产生按照购买先后顺序排列的物品序列,而假设这种物品序列存在着相似关系,也就是离得近的物品会更相似些。通过这种序列关系来对物品之间的相似权重进行建模。其中最常用的方法就是通过word2vec来对物品序列进行建模,学习到每个物品的权重向量,通过物品权重向量之间的欧氏距离来表示物品的相似性。 

3.根据DeepWalk产生序列来计算物品权重。这种方法和上面第二种不同之处在于物品序列不是通过用户购买先后顺序构造,而是通过不同用户和不同物品的购买关系构建出图,通过DeepWalk方法来产生出物品序列。 

4.结合TF-IDF方法的基于物品协同过滤。这种方法主要是把用户购买或点击的物品记录当作一篇文章,而每个物品相当于文章中的词语,然后计算每个物品的tf-idf值,通过值的大小来反映用户对物品的个性化偏好,之后再通过基于物品协同过滤方法找到用户个性化偏好高的物品的相似物品。 

(2)基于用户的协同过滤

和基于物品的协同过滤思路类似,给定一个用户,通过计算该用户和其他用户的相似权重,从而可以推荐给该用户的相似用户喜欢的物品。 

(3)基于矩阵分解的协同过滤

该方法主要是利用用户对物品的打分矩阵进行矩阵分解,然后再通过矩阵相乘弥补原始打分矩阵中空白,通过这种方式预测出用户对未打过分物品的打分。具体的详细介绍以及实现步骤可以看之前写的“万物皆可embedding”这篇文章。 

▌总结

总体来说,多路召回的好处就是召回的物品考虑到用户兴趣的多样化,一般不会出现某一领域的集中召回,但是由于每一路都需要确定一个Top K中的K这个参数,调参的空间过大。同时对于不同的用户都是固定的K值,不够合理化,因为每一个召回路不同的用户偏好不同,也可能用户在某一召回路不应该有候选物品出现,但是固定的K参数是的必须在该召回路筛选出前K个物品。

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方"AINLP",进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

欢迎加入推荐系统技术交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注推荐系统

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
3

相关内容

协同过滤(英语:Collaborative Filtering),简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人透过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。协同过滤又可分为评比(rating)或者群体过滤(social filtering)。其后成为电子商务当中很重要的一环,即根据某顾客以往的购买行为以及从具有相似购买行为的顾客群的购买行为去推荐这个顾客其“可能喜欢的品项”,也就是借由社群的喜好提供个人化的信息、商品等的推荐服务。除了推荐之外,近年来也发展出数学运算让系统自动计算喜好的强弱进而去芜存菁使得过滤的内容更有依据,也许不是百分之百完全准确,但由于加入了强弱的评比让这个概念的应用更为广泛,除了电子商务之外尚有信息检索领域、网络个人影音柜、个人书架等的应用等。
【经典书】线性代数,Linear Algebra,525页pdf
专知会员服务
77+阅读 · 2021年1月29日
专知会员服务
114+阅读 · 2021年1月11日
【博士论文】搜索引擎中的实体推荐关键技术研究
专知会员服务
44+阅读 · 2020年12月9日
专知会员服务
20+阅读 · 2020年9月8日
个性化推荐系统技术进展
专知会员服务
65+阅读 · 2020年8月15日
基于知识图谱的推荐系统研究综述
专知会员服务
328+阅读 · 2020年8月10日
专知会员服务
159+阅读 · 2020年7月26日
专知会员服务
87+阅读 · 2020年1月20日
最全推荐系统Embedding召回算法总结
凡人机器学习
30+阅读 · 2020年7月5日
推荐系统(一):推荐系统基础
菜鸟的机器学习
25+阅读 · 2019年9月2日
推荐召回算法之深度召回模型串讲
AINLP
22+阅读 · 2019年6月14日
推荐系统算法合集,满满都是干货(建议收藏)
七月在线实验室
17+阅读 · 2018年7月23日
机器学习(36)之协同过滤典型算法概述【精华】
机器学习算法与Python学习
4+阅读 · 2018年1月20日
【推荐系统】详解基于内容的推荐算法
产业智能官
23+阅读 · 2018年1月11日
推荐系统之用户行为分析
架构文摘
7+阅读 · 2017年12月17日
爱奇艺个性化推荐排序实践
机器学习研究会
7+阅读 · 2017年11月12日
推荐系统经典技术:矩阵分解
机器学习研究会
10+阅读 · 2017年10月10日
详解个性化推荐五大最常用算法
量子位
4+阅读 · 2017年7月8日
Arxiv
0+阅读 · 2021年2月4日
Self-Attention Graph Pooling
Arxiv
5+阅读 · 2019年4月17日
Arxiv
4+阅读 · 2019年4月17日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
VIP会员
相关VIP内容
【经典书】线性代数,Linear Algebra,525页pdf
专知会员服务
77+阅读 · 2021年1月29日
专知会员服务
114+阅读 · 2021年1月11日
【博士论文】搜索引擎中的实体推荐关键技术研究
专知会员服务
44+阅读 · 2020年12月9日
专知会员服务
20+阅读 · 2020年9月8日
个性化推荐系统技术进展
专知会员服务
65+阅读 · 2020年8月15日
基于知识图谱的推荐系统研究综述
专知会员服务
328+阅读 · 2020年8月10日
专知会员服务
159+阅读 · 2020年7月26日
专知会员服务
87+阅读 · 2020年1月20日
相关资讯
最全推荐系统Embedding召回算法总结
凡人机器学习
30+阅读 · 2020年7月5日
推荐系统(一):推荐系统基础
菜鸟的机器学习
25+阅读 · 2019年9月2日
推荐召回算法之深度召回模型串讲
AINLP
22+阅读 · 2019年6月14日
推荐系统算法合集,满满都是干货(建议收藏)
七月在线实验室
17+阅读 · 2018年7月23日
机器学习(36)之协同过滤典型算法概述【精华】
机器学习算法与Python学习
4+阅读 · 2018年1月20日
【推荐系统】详解基于内容的推荐算法
产业智能官
23+阅读 · 2018年1月11日
推荐系统之用户行为分析
架构文摘
7+阅读 · 2017年12月17日
爱奇艺个性化推荐排序实践
机器学习研究会
7+阅读 · 2017年11月12日
推荐系统经典技术:矩阵分解
机器学习研究会
10+阅读 · 2017年10月10日
详解个性化推荐五大最常用算法
量子位
4+阅读 · 2017年7月8日
Top
微信扫码咨询专知VIP会员