021-53098865

18018650584


京东推荐系统架构揭秘:大数据时代下的智能化改造



个性化推荐系统的主要优势体现为支持多类型推荐和多屏产品形态,支持算法模型A/ B 实验快速迭代,支持系统架构与算法解耦,支持存储资源与推荐引擎计算的解耦,支持预测召回与推荐引擎计算的解耦,支持自定义埋点功能;推荐特征数据服务平台化,支持推荐场景回放。

3 数据平台

京东拥有庞大的用户量和全品类的商品以及多种促销活动,可以根据用户在京东平台上的行为记录积累数据,如浏览、加购物车、关注、搜索、购买、评论等行为数据,以及商品本身的品牌、品类、描述、价格等属性数据的积累,活动、素材等资源的数据积累。这些数据是大规模机器学习的基础,也是更精确地进行个性化推荐的前提。

1.数据收集

用户行为数据收集流程一般是用户在京东平台(京东App、京东PC 网站、微信手Q) 上相关操作,都会触发埋点请求点击流系统(专门用于收集行为数据的平台系统)。点击流系统接到请求后,进行实时消息发送(用于实时计算业务消费)和落本地日志(用于离线模型计算),定时自动抽取行为日志到大数据平台中心。算法人员在数据集市上通过机器学习训练模型,这些算法模型应用于推荐服务,推荐服务辅助用户决策,进一步影响用户的购物行为,购物行为数据再发送到点击流,从而达到数据收集闭环。

2.离线计算

目前离线计算平台涉及的计算内容主要有离线模型、离线特征、用户画像、商品画像、用户行为,离线计算主要在Hadoop 上运行MapReduce,也有部分在Spark 平台上计算,计算的结果通过公共导数工具导入存储库。团队考虑到业务种类繁多、类型复杂以及存储类型多样,开发了插件化导数工具,降低离线数据开发及维护的成本。

3.在线计算

目前在线计算的范围主要有用户实时行为、用户实时画像、用户实时反馈、实时交互特征计算等。在线计算是根据业务需求,快速捕捉用户的兴趣和场景特征,从而实时反馈到用户的推荐结果及排序,给用户专属的个性化体验。在线计算的实现消息主要来源于Kafka 集群的消息订阅和JMQ 消息订阅,通过Storm 集群或Spark 集群实时消费,推送到Redis 集群和HBase 集群存储。

4 推荐引擎

推荐系统涉及的技术点比较多,考虑到篇幅有限,这里重点介绍个性化推荐中比较重要的部分之一——推荐引擎。

个性化推荐系统的核心是推荐引擎,推荐引擎的一般处理过程是召回候选集,进行规则过滤,使用算法模型打分,模型融合排序,推荐结果多样化展示。主要使用的技术是机器学习模型,结合知识图谱,挖掘商品间的关系,按用户场景,通过高维特征计算和海量召回,大规模排序模型,进行个性化推荐,提升排序效果,给用户极致的购物体验。

推荐引擎处理逻辑主要包括分配任务,执行推荐器,合并召回结果。推荐器负责召回候选集、业务规则过滤、特征计算、排序等处理。

根据推荐场景,按召回源进行任务拆分,关键是让分布式任务到达负载均衡。

推荐器:推荐引擎的核心执行组件,获取个性化推荐结果;

召回阶段:获取候选集,一般从基于用户画像、用户偏好、地域等维度进行召回, 如果是新用户的召回资源不够,会使用冷启动服务进行召回。

规则过滤阶段:对人工规则、一品多商、子母码、邮差差价等进行过滤。

特征计算阶段:结合用户实时行为、用户画像、知识图谱、特征服务,计算出召回
的候选集的特征向量。

排序阶段:使用算法模型对召回候选集打分,根据召回源和候选集的分值,按一定的策略对候选集进行重新排序。

合并:归并多个推荐器返回的推荐结果,按业务规则进行合并,考虑一定的多样性。

举例来说,京东App首页“猜你喜欢”的实现过程如下图。

首先根据用户画像信息和用户的近期行为及相关反馈信息,选择不同的召回方式,进行业务规则过滤;对满足要求的候选商品集,提取用户特征、商品特征、用户和商品的交叉特征;使用算法模型根据这些特征计算候选商品的得分;根据每个商品的得分对商品进行排序,同时会丰富推荐理由,考虑用户体验,会对最终排好序推荐结果进行微调整,如多样性展示。