推荐系统召回算法及架构说明|学习笔记

简介: 快速学习推荐系统召回算法及架构说明

开发者学堂课程【跟阿里云技术专家学习智能推荐系统: 推荐系统召回算法及架构说明】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/662/detail/11075


推荐系统召回算法及架构说明


内容介绍:

一、召回模块在推荐系统中的位置

二、召回算法的介绍

三、协同过滤

四、向量召回架构说明

五、召回算法的输入输出结果


一、召回模块在推荐系统中的位置

image.png

召回模块主要完成一件事,就是粗筛。当用户进到平台中后,可能有潜在的超大规模的Item,需要去筛选a可能喜欢的 Item 缩小范围。

比如平台上有10万个 Item,用户进来之后会筛选出500个他可能会喜欢的 Item,但这个时候并不知道a更喜欢什么 Item,那么接下来就要进行排序模块,判断出 a 到底喜欢什么。

 

二、召回算法的介绍

1、GraphSage

图神经网络召回算法,基于深度学习框架构建的图算法。可以基于用户和商品特征及行为产出 user embedding 和 item embedding

2、ALS

矩阵分解经典方法,可以基于行为数据表,产出user embedding表和item embedding 表

3、FM-Embedding

通过内积方式增强特征表现力,PAI 的 FM 算法基于 Flink 实现,可以做到流批一体化训练

4、协同过滤

基于统计的方式找到相似的 item 关联关系以及 user-item 的关联关系

上述算法并不是全部的召回算法,本视频在此讲述最为常用的四个算法。首先对上述算法进行分类,前三个为一类,协同过滤算法属于另一类。

前三个算法可以叫做召回相关算法,协同过滤算法可以叫做向量召回相关算法,向量召回相关算法又可以分为很多种类。协同过滤算法其实是一种基于统计的算法,它会找出兴趣相同的一些人,或者说找出可以被同时购买的一些商品,比较经典的例子就是啤酒和尿布的故事,我们发现在大型超市,啤酒和尿布经常被一起购买,他们经常会被一起加入购物车,这是基于大量的数据统计得到的结果,所以协同过滤可能不能完全算是一种算法,它可能就是一种统计方式,会返回一个结果,说明哪些商品会被一起购买,比如手机和手机壳,摩托车和摩托车头盔等一些商品进行组合。

前三个召回更偏向机器学习的一些深层模型,比如说 ALS 其实是一个经典的矩阵分解方法,当输入一个用户的行为表之后,会把这个用户行为表中的数据作为一个矩阵进行转换,最后得到结果是User的embedding和Item的embedding,其中embedding就是一个向量,即user embedding生成一个user的向量,代表这个user的一些属性,Item embedding生成一个Item的向量,代表该Item的属性,然后可以简单的计算User embedding与Item embedding去判断user是否喜欢这个Ite。

FM-Embedding 也是类似的逻辑,当把用户交互的行为数据(behaviour)输入进去之后,会生成 User embedding 与 Item embedding。

而 GraphSage 算法其实是一种图神经网络召回方法,这种方法在整个的泛互联网领域应用的还不是特别多,但是在一些比较大的互联网公司,比如说淘宝这个方法应用的就非常多。

近期 PAI 团队也推出了开源的阿里 graph 框架,GraphSage 就是可以基于阿里 graph 图神经网络框架去开发,GraphSage 算法也经常会被用于电商的招聘场景,它的原理也是输入一个用户的行为表,然后返回User embedding与Item embedding,这三个算法在进入到 PAI 里时,会给大家展示一下其输入和输出的样式。对于上述前三种方法呢,大家想了解底层的细节与方法逻辑,可以直接在搜索引擎去搜它的名字,很容易找到数学推导方式。


三、协同过滤

image.png

比如说有用户 ABC,用户 A 喜欢 Rice、Lamb、Milk,用户 B 喜欢 Noodle、Fish、Red wine,用户 C 喜欢 Rice、Milk,所以会发现 A 和 C 会有些相似的口味,他们都喜欢吃饭,然后都爱喝牛奶,但可以发现 A 还喜欢吃 Lamb,则我们就说 A 和 C 有相似的口味,这个时候A喜欢的某个东西,C 没有尝试过,我们就可以假设 C 也喜欢 A 的另一种食物,就可以把它作为 C 的召回结果。

 

四、向量召回架构说明

向量召回架构简图如下:

image.png

有一些用户的 ID 以及一些物品 ID,然后存有一些用户行为数据,比如说用户对于某个商品是否点击过,是否有买过等作为用户行为数据表,进来之后呢无论通过哪种召回方式(GraphSage 召回、矩阵分解召回、FM 召回),最终得到的是两个向量表,A的向量表和B的向量表,这些向量表在实际的生产中可以在 redis 里暂存,在实际的使用过程中需要把这些向量全部存到 Faiss 服务器里,Faiss 服务器是Facebook 的 AI 团队开展的专门针对于向量检索的这样的服务器,它的好处是运行速度非常快,甚至可以在一毫秒之内返回几百万级别的向量检索,并且可以提供多种向量检索模式,检索的性能非常好,常会应用到推荐召回领域。举例来说,比如我们想给用户推荐物品的时候,就是拿着用户的 User ID 和与其对应的向量进入到 Faiss 引擎中去查哪些物料的向量与该用户向量的欧式距离最近。

将 top10个拿出来,这10个物料就是该用户的最终结果。即把物料的向量全部放到 Faiss 里,然后在用户进来的时候,拿着用户 Id 去 redis 里把它的向量取出来,然后把向量送到 Faiss 里去做笛卡尔积或者其他更优的结合策略的距离计算,最终返回出距离最近的结果。

 

五、召回算法的输入输出结果

1、协同过滤

其原始输入是这样的,有一些用户的 ID,有一些商品的 ID,以及一些行为,比如0就表示查看,2表示收藏,1就是购买等等,最终经过协同过滤在计算之后会生成一个结果,即目标商品、KT 结构,每个 KT 对中的第一个 K 就是商品 ID,比如1000这个商品跟24277这个商品他俩同时被购买的概率是1,1000这个商品跟18612这个商品同时被购买的概率是0.5,而1大于0.5,所以说当一个用户买了一个1000这个商品的时候,把24277推荐给该用户,相对于18612他更有可能被同时购买。

即1000和24277可能是手机和手机壳之间的关系,他俩关系很密切,被一起购买的几率很大,但18612可能是手机上一个小贴纸,不是一个刚需,不一定非要购买,1000和18612被一起购买的概率会低一些。当把所有的商品与其相似的物品都计算出来之后,就可以进行召回。比如用户购买过某件商品,我们可以推荐出他可能会再购买的商品。

2、ALS 矩阵分解

对 ALS 矩阵分解的几何数据进行举例,该例子是基于音乐偏好的数据完成的打分,每个 User 具有一个 ID,每个 Item 代表歌,之前对于每首歌做过一个评分,分数越高代表对歌曲的喜爱程度越高,最终结果会是一个 user 的向量,一个 Item 的向量。ALS 输入的是一个表,即一个 User,一个 Item,以及行为(分数)。

3、GraphSage

GraphSage 图神经网络的召回模式的输入与上述的 ALS 不同,GraphSage 输入三个表,这三个表分别代表了行为及另外两个表,而这两个表就是这个算法的好处,可以不光考虑到用户的行为,还可以兼顾到用户的特征和商品的特征,可以看到其中一个表里每个用户可以带一个 feature 字段,这个字段里的每一个冒号分隔的都是一种特征,比如该用户的身高、年龄、区域等特征,另一个表代表的是 Item 的特征。

GraphSage 算法相比于 ALS 考虑的更多,不光考虑了用户和商品的交互,比如说对于视频的点赞、收藏,还额外考虑到用户本身的一些特征,以及视频本身的特征,比如用户的年龄、身高、样貌,视频的时长、标签等等。最终呢生成的也是向量,第一个是 user 的向量,第二个就是 Item 的向量。

相关文章
|
4月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
174 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
5月前
|
机器学习/深度学习 数据采集 搜索推荐
Python基于深度学习算法实现图书推荐系统项目实战
Python基于深度学习算法实现图书推荐系统项目实战
|
2月前
|
机器学习/深度学习 算法 搜索推荐
django调用矩阵分解推荐算法模型做推荐系统
django调用矩阵分解推荐算法模型做推荐系统
43 4
|
6月前
|
搜索推荐 算法 小程序
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
|
3月前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
94 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
4月前
|
搜索推荐 前端开发 算法
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
本文介绍了一个基于用户画像和协同过滤算法的音乐推荐系统,使用Django框架、Bootstrap前端和MySQL数据库构建,旨在为用户提供个性化的音乐推荐服务,提高推荐准确性和用户满意度。
307 7
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
|
5月前
|
搜索推荐 人工智能
人工智能LLM问题之推荐系统的架构流程图如何解决
人工智能LLM问题之推荐系统的架构流程图如何解决
人工智能LLM问题之推荐系统的架构流程图如何解决
|
5月前
|
搜索推荐 算法 大数据
基于内容的推荐系统算法详解
【7月更文挑战第14天】基于内容的推荐系统算法作为推荐系统发展的初期阶段的重要技术之一,具有其独特的优势和广泛的应用场景。然而,随着大数据和人工智能技术的发展,传统的基于内容的推荐系统已经难以满足日益复杂和多样化的推荐需求。因此,未来的推荐系统研究将更加注重多种推荐算法的融合与创新,以提供更加精准、个性化的推荐服务。
|
5月前
|
算法 搜索推荐
推荐系统,推荐算法01,是首页频道推荐,一个是文章相似结果推荐,用户物品画像构建就是用户喜欢看什么样的文章,打标签,文章画像就是有那些重要的词,用权重和向量表示,推荐架构和业务流
推荐系统,推荐算法01,是首页频道推荐,一个是文章相似结果推荐,用户物品画像构建就是用户喜欢看什么样的文章,打标签,文章画像就是有那些重要的词,用权重和向量表示,推荐架构和业务流
|
17天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。