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

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

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

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


推荐系统排序算法及架构说明


内容介绍:

一、排序模块在推荐系统中的位置

二、排序算法的介绍

三、离线排序模型训练架构

四、在线排序模型训练架构

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

 

一、排序模块在推荐系统中的位置

推荐系统的排序算法在整个推荐系统中的位置就是一个用户呢进入到平台后有很多商品,通过召回模块把用户可能喜欢的商品先粗筛出来,缩小排序模型的范围,接下来要解决的问题是要在粗筛出的500个商品中选出10个在屏幕中展示出来,此时便需要排序的算法模型,排序算法会针对这500个商品和用户的特点与特征进行排序,最终找出排名第一、排名第二一直到排名第十的商品,所以排序模块主要做的是细排。

 image.png


二、排序算法的介绍

排序模型也是非常多的,上述算法并不是全部的排序算法,随着深度学习的发展,整个的排序算法已经从浅层的算法逐渐的往深度学习迁移,但是目前比较经典的排序算法还是以下罗列的这四种。

1、LR

目前业内最经典的线性二分类算法,特点是容易上手,对于计算力要求低,模型可解释性好。

2、GBDT+LR

在 LR 基础上通过 GBDT 和特征编码增强数据特征的可解释性。是目前行业内应用最

3、FM

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

4、DeepFM

将深度学习和经典机器学习结合的一种分类方法,是最近开始流行的一种算法

LR 是目前应用非常广泛的一种办法,但是他的效果并不是特别突出,现在有很多互联网公司会用 GBDT+LR 的方案,即 Facebook 在2014年 paper 里提到的基于视频推荐的组合,它的好处就是 GBDT 可以做很多特征编码,然后增强数据特征的可解释型,可以完成一部分特征工程,然后再去结合 LR 线性模型,达到分类的效果。

补充一点:在排序过程中可以看成是一个分类问题,就是把一个视频或者商品推荐的用户,可以做成二分类的形式,所以这些算法本质上是二分类的算法。

FM 算法近些年特别是这两年在很多的客户场景中得到极大的应用,效果也不错,他也是通过内积的方式增强特征表现,可以发现 GBDT+LR 算法的本质上对于LR算法的提升,就是在计算的过程中帮助用户解决了一部分特征工程的工作,增强了数据表现力。DeepFM 也是现在被广泛应用的一个深度学习的算法,它可以与深度学习的经典算法相结合。

但是如果是一开始去尝试搭建一套推荐系统,建议大家先从简单的算法去尝试,比如说 LR,因为这种算法比较好解释,也比较好调节效果,后续的话会建议大家逐渐使用 GBDT+LR 或者 FM,逐渐向复杂的模型迁移。这些算法已经内置到 PAI 平台,可以轻松应用,所以在平台上不用考虑这种问题。

 

三、离线排序模型训练架构

1、特点:

l 样本生成流程,整体流程基于 DW/Maxcompute 完成。

l PAI 完成 PS-SMART/DeepFM 等离线训练流程,生成模型文件到 OSS,定期更新到 PAT-EAS 服务。排序属于计算密集型作业,每天训练一次(可调整评率,比如6小时训练一次),基于最近一段时间的行为数据。

l 样本基于用户行为事件构建,根据事件类型点击,评论,分享,加入用户及物料表特征 Join 生成大宽表,作为训练及测试数据(过去 N 天训练,过去 M 天测试).

2、流程

排序模型的训练产生:训练过程分为离线训练和在线训练,这两者的区别是离线训练用的是简易的数据,比如说今天使用的模型是通过今天以前的数据训练出来的,它的好处就是可以把历史的大量数据全集合到云上的数仓体系,然后基于整体全样本的特征和数据进行离线的训练。

这样的话,在做一个验证,生成的模型呢,然后进行验证,验证成功后第二天可以推荐给用户去用,可以保证一定的安全性。目前几乎所有的互联网客户都是采用的是离线排序模型的训练方法,这是因为如果进行实时训练会有比较大的价格挑战。


四、在线排序模型训练架构

1、特点:

l 基于 Flink 框架实现流式模型训练能力

l 基于事实生成的模型去实时评估模型效果

l 具备线上模型回滚和版本管控功能

2、流程

在线模拟训练相比离线训练的好处在于就是离线训练使用的是7.1或者7.2的数据去进行做的,但没有对线上实时产生的一些行为数据进行利用,相对来讲对于数据的时效性利用比较差,比如某平台只允许14岁以下的少年进行活动,平台上充斥着大量这个年龄段的客户,而这个时候的模型还是按照t-1去完成的,却无法对于整个线上业务做一个及时的感知。

而通过在线训练就可以比较好的解决这种问题,在线模型训练的流程图是这样的:

image.png

在线模拟训练意味着可以使用实时上传数据,把用户基于平台产生的行为数据经过 Flink 做实时特征加工,然后用实时机器学习模型训练框架去完成训练,图示黄色部分是离线的,蓝色部分是在线可以看到在线训练模型其实也离不开离线离线模型的作用是它生成一个基础模型,也就说在线训练数据虽然是实时进来的,模型并不是从零开始,而是从离线训练好的模型进行优化,可以看到离线模型会输入到在线的这个FTL的训练的过程中,这个时候通过实时的数据去实时的更新模型,另外还有实时的验证数据,可以把 Kafka 预留的数据时间窗口再进行前移完成验证,并得实时线上动态模型指标

整套系统的24小时在不间断地运行,而评估呢也是一直进行,当评估的指标达到一定水平,达到一定的上限,就会自动把模型导出并上线;如果实时更新模型的指标一直没有达到要求,就会一直训练该模型,但是不上线

相关文章
|
6天前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
129 0
|
4天前
|
架构师 网络协议 算法
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
|
6天前
|
机器学习/深度学习 搜索推荐 算法
高并发推荐系统架构设计-1 基本介绍
【5月更文挑战第5天】推荐系统是信息过滤工具,通过处理物料数据和行为日志,运用预处理、特征工程、算法模型学习用户兴趣,实现个性化推荐。在线架构包括AB分流、多路召回、模型排序和业务规则重排序。旧版线上架构由C++编写的API和engine服务组成,HTTP请求经SLB、Nginx、FastCGI到达服务程序,召回和排序服务处理推荐。存在并发瓶颈问题。
40 1
|
6天前
|
算法 搜索推荐 数据挖掘
MATLAB模糊C均值聚类FCM改进的推荐系统协同过滤算法分析MovieLens电影数据集
MATLAB模糊C均值聚类FCM改进的推荐系统协同过滤算法分析MovieLens电影数据集
|
6天前
|
算法 搜索推荐 测试技术
python排序算法及优化学习笔记1
python实现的简单的排序算法,以及算法优化,学习笔记1
36 1
|
6天前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
77 1
|
6天前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
250 0
|
6天前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
798 0
|
6天前
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
51 1
|
6天前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(五)OpenFeign的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(五)OpenFeign的使用
53 0