再看经典推荐算法之召回算法
在学习和应用推荐算法的过程中,发现越来越多的文章在描述深度学习应用在推荐系统上的方法,不可否认深度学习的发展给推荐系统带来了巨大的进步,但是传统的经典算法仍然是非常值得学习的,毕竟可以作为一个比较高的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个物品。
「 更多干货,更多收获 」多业务融合推荐实践与思考.pdf
微博推荐算法实践与机器学习平台演进.pdf如何构建一个生产环境的推荐系统(附代码)推荐系统的公平性:用户侧和生产侧推荐系统工程师技能树
2020年9月十大热门报告盘点【电子书分享】美团机器学习实践.pdf
全网最全短视频直播电商资料包(附下载链接)关注我们
智能推荐 个性化推荐技术与产品社区 |
长按并识别关注 |
一个「在看」,一段时光????
再看经典推荐算法之召回算法相关推荐
- 深度召回模型在QQ看点推荐中的应用实践
导语:最近几年来,深度学习在推荐系统领域中取得了不少成果,相比传统的推荐方法,深度学习有着自己独到的优势.我们团队在QQ看点的图文推荐中也尝试了一些深度学习方法,积累了一些经验.本文主要介绍了一种用于 ...
- 推荐系统[八]算法实践总结V0:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排).系统架构.常见问题.算法项目实战总结.技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排 ...
- Personal Rank——个性化推荐召回算法python
慕课推荐系统笔记 1.个性化召回算法Personal Rank背景与物理意义 1.首先介绍基于图的个性化召回算法-personal rank的背景. (1)用户行为很容易表示为图 图这种数据结构有两个 ...
- QQ音乐推荐召回算法的探索与实践
文章目录 一.业务介绍 1.业务介绍 2. QQ音乐推荐场景特点 3. QQ音乐推荐解决方案 二.融合音乐知识图谱召回 三.序列与多兴趣召回 3.1 空间和时间建模方案 3.2 多兴趣提取方案 3.3 ...
- 一些经典的召回算法模型
1. Airbnb论文:Real-time Personalization using Embeddings for SearchRanking at Airbnb Embedding 向量最终能表达 ...
- 负样本的艺术,再读Facebook双塔向量召回算法
负样本的艺术,再读Facebook双塔向量召回算法 Facebook这篇Embedding召回的论文,之前已经有几篇文章涉及过了,分别是<Embeding-based Retrieval in ...
- slope one matlab代码,经典推荐算法之 Slope one
title: 经典推荐算法之 Slope one date: 2017/5/16 15:29:24 tags: 推荐系统 Machine Learning categories: 推荐系统 Slope ...
- 红豆Live 推荐算法中召回和排序的应用和策略
有人曾说"语音直播产品红豆 Live 的突然出现,让沉寂了一段时间的语音知识付费市场又重新燃起了生机",让语音直播这个小众市场重新吸引了大众的注意力,让声音爱好者找到知音和志同道合 ...
- 红豆Live推荐算法中召回和排序的应用和策略
本文由 「AI前线」原创,原文链接:红豆Live推荐算法中召回和排序的应用和策略 作者|胡南炜 编辑|Emily AI 前线导读:"有人曾说,"语音直播产品红豆 Live 的突然出 ...
最新文章
- 3G时代需要“移动云计算专业”
- 安卓samba软件_Android Samba Client
- HashMap负载因子
- 做食品检测1年,自学软件测试,最后心惊胆战转行
- Spring源码之bean的加载(五)准备创建bean
- oracle 连接字符串备份
- 【MMD tools for bleander,Bleander的插件】
- win10 Network Location Awareness 错误:1068依赖服务或组无法启动
- 如何设置win7计算机不更新,win7系统不要自动更新的设置步骤(图文)
- 中级软件测试工程师是什么水平,中级软件测试工程师需要满足的基本评定条件...
- Google Play上架总结(三)Google Play 上架流程
- 应用程序正常初始化失败(0xc0000135)
- 苹果笔记本电脑怎么编辑html,苹果笔记本电脑怎么操作 苹果笔记本电脑操作方法【详解】...
- 名帖84 米芾 小楷《九歌》
- python文本txt词频统计_python实例:三国演义TXT文本词频分析
- maven 出现:Failed to execute goal on project...Could not resolve dependencies for project
- springboot启动错误 Could not resolve placeholder
- JAVA大学实用教程(第四版)课后习题三、四章答案(自整理)
- SVM和Softmax分类器比较
- 天正lisp文件夹_天正文件布图在哪里
热门文章
- 数据结构 判断数组元素是否互不相同
- Grinmw.py v0.1.1发布,支持Grin Wallet API V3和Grin Node API V2
- NFT平台Polkamon将于3月31日在Polkastarter进行IDO
- 逾845.5万枚XRP从币安交易所转入未知钱包,价值超过496万美元
- 智能玩具 数据采集 首页展示 注册 登录 自动登录 二维码图片
- memcache 知识点
- Android中图片的处理(放大缩小,去色,转换格式,增加水印等)(转)
- Qtcreator中经常使用快捷键总结
- 操作系统--设备管理
- 常用功能测试点汇总(转)