标签:学习 机器 消息 重复 点击 内容 工程 nbsp 时间
先看一下Netflix的简单推荐架构图:
主要分为:离线层,近线层和在线层
时至今日,推荐系统已经成为许多产品的核心功能。一个好的推荐系统应该拥有的特质:
1.实时响应请求
2.及时、准确,全面记录用户反馈
3.可以优雅降级
4.快速试验多种策略
针对数据的使用时间进行划分,可分为三部分:
1.离线:使用历史数据,提供历史数据的推理
2.近线:使用实时数据,可提供实时数据的推理
3.在线:使用实时数据,提供实时服务
下面我们不同视角观察推荐系统如何进行工作:
1.数据流
用户在交互界面产生行为事件数据(浏览,点击等),一边进入离线分布式存储,供离线计算,另一边进入近线消息队列,供流计算使用。
离线数据被训练成模型,在线通过调用模型结果进行推荐。
近线数据训练的模型,更新离线模型的结果,再在在线进行推荐。
2.在线层
实时响应用户请求,将推荐的结果返回给用户
在线层一般是restful API的形式,后端则是RPC服务调用。以用户ID等信息去请求,以json的形式返回排序的结果。
一般会放哪些逻辑在在线层呢?
1.模型的结果
2.额外的干预逻辑和权重调节
如果在线层没有从模型中拿到结果,或者拿到的结果被额外的逻辑过滤掉了,那么就要准备一个兜底的结果。
在线层还要实时收集用户使用产品时的事件,送到近线层进行处理,再调用近线层的模型结果。比如,剔除重复的推荐内容。
3.离线层
离线层一般会收集某个周期内所有用户数据,按照业务需求对数据进行ETL,之后再提供给各类机器学习模型进行学习,最终将得到的模型结果供在线层去调用。
4.近线层
近线层一般会延迟提供推荐结果,用户本次使用产品时,产生的事件会存入消息队列中,然后被消费进行模型计算,模型结果再与离线的模型结果进行融合,更推荐的结果更具有时效性。
标签:学习 机器 消息 重复 点击 内容 工程 nbsp 时间
原文地址:https://www.cnblogs.com/bladerunnerwhd/p/14753408.html