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

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

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

课程地址: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 的向量。

相关文章
|
8月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
4月前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
1094 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
自然语言处理 JavaScript Java
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS架构介绍
HarmonyOS采用分层架构设计,从下至上分为内核层、系统服务层、框架层和应用层。内核层支持多内核设计与硬件驱动;系统服务层提供核心能力和服务;框架层支持多语言开发;应用层包括系统及第三方应用,支持跨设备调度,确保一致的用户体验。
1137 81
|
10月前
|
人工智能 前端开发 Java
DDD四层架构和MVC三层架构的个人理解和学习笔记
领域驱动设计(DDD)是一种以业务为核心的设计方法,与传统MVC架构不同,DDD将业务逻辑拆分为应用层和领域层,更关注业务领域而非数据库设计。其四层架构包括:Interface(接口层)、Application(应用层)、Domain(领域层)和Infrastructure(基础层)。各层职责分明,避免跨层调用,确保业务逻辑清晰。代码实现中,通过DTO、Entity、DO等对象的转换,结合ProtoBuf协议,完成请求与响应的处理流程。为提高复用性,实际项目中可增加Common层存放公共依赖。DDD强调从业务出发设计软件,适应复杂业务场景,是微服务架构的重要设计思想。
|
12月前
|
负载均衡 算法
架构学习:7种负载均衡算法策略
四层负载均衡包括数据链路层、网络层和应用层负载均衡。数据链路层通过修改MAC地址转发帧;网络层通过改变IP地址实现数据包转发;应用层有多种策略,如轮循、权重轮循、随机、权重随机、一致性哈希、响应速度和最少连接数均衡,确保请求合理分配到服务器,提升性能与稳定性。
2490 11
架构学习:7种负载均衡算法策略
|
11月前
|
存储 监控 算法
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
在数字化办公时代,公司监控上网软件成为企业管理网络资源和保障信息安全的关键工具。本文深入剖析C++中的链表数据结构及其在该软件中的应用。链表通过节点存储网络访问记录,具备高效插入、删除操作及节省内存的优势,助力企业实时追踪员工上网行为,提升运营效率并降低安全风险。示例代码展示了如何用C++实现链表记录上网行为,并模拟发送至服务器。链表为公司监控上网软件提供了灵活高效的数据管理方式,但实际开发还需考虑安全性、隐私保护等多方面因素。
222 0
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
939 4
|
存储 算法 安全
分布式系统架构1:共识算法Paxos
本文介绍了分布式系统中实现数据一致性的重要算法——Paxos及其改进版Multi Paxos。Paxos算法由Leslie Lamport提出,旨在解决分布式环境下的共识问题,通过提案节点、决策节点和记录节点的协作,确保数据在多台机器间的一致性和可用性。Multi Paxos通过引入主节点选举机制,优化了基本Paxos的效率,减少了网络通信次数,提高了系统的性能和可靠性。文中还简要讨论了数据复制的安全性和一致性保障措施。
792 1
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
480 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
机器学习/深度学习 算法 搜索推荐
django调用矩阵分解推荐算法模型做推荐系统
django调用矩阵分解推荐算法模型做推荐系统
199 4