今天为大家分享下京东电商推荐系统实践方面的经验,主要包括:
- 简介
- 排序模块
- 实时更新
- 召回和首轮排序
- 实验平台
文章插图
说到推荐系统,最经典的就是协同过滤,上图是一个协同过滤的例子 。协同过滤主要分为俩种:user-based 基于用户的协同过滤和 item-based 基于商品的协调过滤 。
但是,现在绝大多数推荐系统都不会直接使用协同过滤来做推荐 。目前主要用的是 learning to rank 框架 。
文章插图
这里,是推荐系统的框架,整个推荐系统可以分为两部分,在线部分和离线部分 。
- 在线部分主要负责当用户访问时,如何把结果拼装好,然后返回给用户 。主要模块有召回、排序和对结果的调整 。
- 离线部分主要是对用户日志的数据分析,应用于线上 。
和新闻、视频这类的内容推荐相比,电商推荐系统又有一些特殊的地方,比如:
优化方向(点击、销售额、时长、用户留存等) 。另外,电商中推荐的内容也会有很多种,尤其像是活动类的内容,很多推荐都是算法和人工运营共同完成的 。这就是电商推荐和新闻推荐等的区别之处 。
文章插图
我们展开看下在线推荐系统:
除了刚才说的召回和排序以及最终的调整之外,还有实践过程中的一些细节 。
- 召回:这里召回会有很多种方法,如协同过滤,热门商品、实时促销等和应用场景相关的召回,还有一些基于 KNN 的召回 。
- 过滤:召回之后,会进行过滤,主要是和应用场景相关,如已购商品过滤掉、没有库存的过滤掉,或者敏感的商品过滤掉等等这些逻辑 。
- 排序:排序目前主要用到的是 DNN 模型,某些流量比较小的地方会用到 GBDT 。
- 过滤:排序之后还会有些分页、同商品过滤等逻辑 。
▌排序模块
1. 模型结构
文章插图
【京东电商推荐系统实践】
深度学习 ranking 模型结构我们不作为重点讨论,这里列举了一种最经典的模型,它们都用到了很多 id 的 Embedding,然后这些 Embedding 规模都很大,这样训练和上线都比较耗时 。因此,我们做了一些优化,比如做分布式的训练,并且会有一套 Pipeline 来完成模型的上线 。另外,虽然模型很复杂,并且能带来很好的效果,但是特征工程还是必不可少的,很多指标的提升还是依赖于特征工程,当然也包括一些模型调整的工作 。
2. 实践
文章插图
那么如何把这些模型落地呢?我们看下整个模型的上线过程:
首先最重要的部分是模型训练平台和排序服务,因为很多深度模型计算量要求很高,为了能达到比较快的效果,需要部署单独的排序服务 。目前比较流行的是 TensorFlow serving,可以很快速的来上线一个深度模型,并充分利用对分片、单机并行,达到很高的计算效率 。
模型线上线下一致性问题对于模型效果非常重要,我们使用特征日志来实时记录特征,保证特征的一致性 。这样离线处理的时候会把实时的用户反馈,和特征日志做一个结合生成训练样本,然后更新到模型训练平台上,平台更新之后在推送到线上,这样整个排序形成了一个闭环 。
3. 实时更新
文章插图
我们的特征和模型都需要做实时的更新 。因为我们经常需要很快的 catch 一些实时的信号,比如需要实时的用户画像来抓住实时的用户兴趣的变化,还比如需要抓住实时的商品画像,因为经常会有一些活动或者爆品,我们需要快速的捕捉这些信号,并应用到推荐中 。另外还有一些实时的召回和特征,比如一些交叉的特征,实时的点击率,实时订单等特征 。
除了特征外,模型也需要实时更新,对于电商场景来说这是有一定困难的,因为订单是有延时的,延时可能是十几分钟到十几小时不等,这样实时模型更新上就会采取一些保守的策略,比如用点击率对模型做些微调,然后订单数据再通过离线来获得,这属于业务场景的限制 。
推荐阅读
- 程序员 在亚马逊的新员工都被推荐要读一读这本书
- 嘴唇干裂怎么办 推荐3款冬天护唇药膳
- 脾胃虚寒吃什么好 推荐五款暖胃食疗
- 吃什么补血 推荐五款补血滋阴药膳方
- 吃什么润肺 推荐14款滋阴润肺药膳方
- 如何养肝护肝 推荐4款温和治肝的药膳方
- 手淘推荐的流量是哪里来的 手淘推荐是什么流量入口
- 超级推荐优化技巧 超级推荐怎么优化
- 颁奖音乐推荐分享
- 超级推荐新品推广怎么使用 超级推荐图文推广怎么设置