码迷,mamicode.com
首页 > Web开发 > 详细

《推荐三十六式》工程篇之Netflix的个性化推荐架构

时间:2021-05-24 06:10:56      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:学习   机器   消息   重复   点击   内容   工程   nbsp   时间   

先看一下Netflix的简单推荐架构图:

主要分为:离线层,近线层和在线层

技术图片

 

时至今日,推荐系统已经成为许多产品的核心功能。一个好的推荐系统应该拥有的特质:

1.实时响应请求

2.及时、准确,全面记录用户反馈

3.可以优雅降级

4.快速试验多种策略

 

针对数据的使用时间进行划分,可分为三部分:

1.离线:使用历史数据,提供历史数据的推理

2.近线:使用实时数据,可提供实时数据的推理

3.在线:使用实时数据,提供实时服务

 

下面我们不同视角观察推荐系统如何进行工作:

1.数据流

用户在交互界面产生行为事件数据(浏览,点击等),一边进入离线分布式存储,供离线计算,另一边进入近线消息队列,供流计算使用。

离线数据被训练成模型,在线通过调用模型结果进行推荐。

近线数据训练的模型,更新离线模型的结果,再在在线进行推荐。

2.在线层

实时响应用户请求,将推荐的结果返回给用户

在线层一般是restful API的形式,后端则是RPC服务调用。以用户ID等信息去请求,以json的形式返回排序的结果。

一般会放哪些逻辑在在线层呢?

  1.模型的结果

  2.额外的干预逻辑和权重调节

 如果在线层没有从模型中拿到结果,或者拿到的结果被额外的逻辑过滤掉了,那么就要准备一个兜底的结果。

在线层还要实时收集用户使用产品时的事件,送到近线层进行处理,再调用近线层的模型结果。比如,剔除重复的推荐内容。

3.离线层

离线层一般会收集某个周期内所有用户数据,按照业务需求对数据进行ETL,之后再提供给各类机器学习模型进行学习,最终将得到的模型结果供在线层去调用。

4.近线层

近线层一般会延迟提供推荐结果,用户本次使用产品时,产生的事件会存入消息队列中,然后被消费进行模型计算,模型结果再与离线的模型结果进行融合,更推荐的结果更具有时效性。

 

《推荐三十六式》工程篇之Netflix的个性化推荐架构

标签:学习   机器   消息   重复   点击   内容   工程   nbsp   时间   

原文地址:https://www.cnblogs.com/bladerunnerwhd/p/14753408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!