大家好,我是来自京东搜索与大数据平台部的王超,很高兴和大家介绍京东在这次618大促中在技术方面做的较大的一个尝试,那就是在京东各大平台的主会场和首页的重要位置上,实现了“智能卖场”。
这次介绍我会分以下章节介绍,首先介绍这次京东智能卖场使用的场景,什么是智能卖场;二是介绍我们智能卖场中的整体算法和系统设计;最后是介绍我们的测试过程和实验结果。
所谓的智能卖场,就是把之前由人工排布的会场元素,变成由算法来排序。
这里面我们实现了不止是传统的商品排序,还实现了楼层、活动、品牌、类目、优惠券及店铺等各种会场元素的算法排序,根据每个人的个人兴趣,给你展现出为你最感兴趣的618会场,而不是像以往一样,所有人是千篇一律的一样的促销活动。
这里展示了一些截图,就是这次618京东在PC上的主会场、首页,以及App上的主会场、首页等位置,在重要区域都实现了个性化智能卖场的概念。
PC主会场上可以看到,每个大的区块是一个楼层,里面是同一大类的促销活动,我们实现了楼层间的个性化排序,把你最可能感兴趣的楼层排到最上面,比如“手机”就是我看到的第一层。并且,在楼层内部,这些每个图片加链接形式的分会场,我们称之为“活动”,也是实现了个性化排序,我们对每个楼层内的几十个活动进行个性化排序,最终露出前N个活动。
中间的截图是PC首页上,使用了个性化排序的品牌模块。
右边是手机app京东的618主会场上,整个楼层都和内部的活动也都是采用了我们的个性化算法进行排序。
个性化算法和系统框架
我们做智能卖场的目的,是看到了对会场做个性化的巨大机会与需求,从商家角度讲,随着京东在各个市场上的扩展,大促期间期望能参与进来的商家越来越多,尤其在app上,在 小小的屏幕上 对所有人展示固定的几个商品或活动,已经远远满足不了商家的需求;而从用户角度讲,在这样小的区域内,所有人看到的都一样,那肯定无法满足所有人需求。
因此,我们认为通过对用户进行个性化精准投放,是一种可以大大提高销售转化率和满足用户需求,达到商家和用户双赢的一种方法。
并且我们认为,在京东是可以做起这个事情的,从算法和人工对比看,算法方案在以下几方面是 具备优势 的:
我们现在就先介绍 整体的算法框架和特征体系 :
整体上讲,我们的模型使用到 三类特征 : 用户画像 , 内容画像 和 实时反馈数据 。
用户画像就是我们对上亿级别的用户过去几个月或一两年内的行为数据进行挖掘,打标出的性别、年龄、购买力、品类偏好、品牌偏好、产品词偏好等标签。
内容画像,就是对要排序的各类元素,我们都抽象出各自的内容上的特征,如品类,品牌、产品词,以及挖掘出的适用年龄,性别,以及长期反馈型的特征,如销量占比、转化率等。
把以上两类画像中的一些标签类特征做 结合 ,就能计算出交互类特征,从而实现个性化内容匹配。
此外,我们在算法中还特别引入了 实时反馈类的特征 来捕获大促期间用户行为和内容的快速变化。
在 用户维度 ,我们实时收集用户最近几个小时内的点击、购买行为,可以实现分钟级的延迟。
内容维度上,我们也会收集到内容的实时点击和部分购买行为,点击行为可以实现分钟级内的延迟。
整体系统框架上,我们和传统的推荐系统比较类似。可能 最大的不同 就是在召回上,我们会根据前端要展示的楼层或模块ID,来召回对应资源池内的内容元素。这里我们需要特别保证的是在选品系统和线上内容缓存之间要做到实时同步,我们通过实时消息通知和定期全量同步两种机制来保证。
内容同步过来后,我们会有pipeline抽取内容中的特征。
在 排序阶段 ,我们设计的排序模型、穿插和业务逻辑对内容进行排序。
在最前面,为了我们内部实验的需求,以及和人工对比,我们也有AB分流系统。
在排序模型上, 初期 为了调试方便,并且也是由于缺少线上训练样本,我们还是采用了人工调参加简单的线性规则的方式来给内容打分。
后期当具备一定流量后,我们在部分模块上,如楼层模块,就开始采用了机器学习方法来训练模型,我们采用的是比较经典的一些方法, GBDT + 点击预估模型 ,在排序层,优化目标还是最大化点击效果。
相对人工调参,机器学习的模型在部分场景上还是有一定提升的,楼层模块点击率可以有50%左右的提升。
在实现过程中,还有其他一些 关键环节 :
业务逻辑上,之前提到我们会过滤掉无货或下架的内容;此外,我们还是要兼顾一些业务上的需求,重要的就是要平衡楼层、内容的曝光比例,保证一些冷门的类目也能有一定曝光机会,或限制一些特别热门的类目的曝光比例。
我们还特别考虑到如何对 冷启用户 进行优化。因为在大促期间,尤其是高峰期,大量用户是没有行为数据,或是非常稀疏。比如在PC上,这类请求要 占到50%以上 。这里我们就只能用非个性化的特征,尤其是实时反馈类的特征就起到了很大作用。
AB测试及效果
最后介绍下我们智能卖场 从无到有的一个迭代过程 。
没有和以往人工模式的对比,我们是没法信服和证明算法模式的优势的。所以从始至终,我们都是保持有人工方案和流量作为对比的,并且在618之前,我们借助了多次平时的小型会场、节日的机会来测试我们的算法、系统。
最早我们在今年春节其实就开始过“智能卖场”概念的尝试,那时在年货节上部分品类可以达到100%以上的点击率提升。
在之后我们扩大了对智能卖场的支持范围,扩大到品牌、楼层、活动,甚至是优惠券、店铺,都在做个性化排序的尝试。其中对部分品类的测试,我们和人工对比都达到了50~100%以上的点击率或转化率提升。 正是基于这些实验结果 ,我们才决定在这次618,就在主会场和首页的核心位置上大规模采用“智能卖场”模式。
此外,即使在618期间,我们也是持续有和人工流量的对比,不过算法流量是占绝大部分。
最终结果页证明了 智能卖场的巨大价值 ,这里可以以部分数字为例,PC首页和主会场上的品牌模块是效果最为显著的模块之一,在6/1-6/17日期间,相对人工,日均点击率提升了138%,UV价值(GMV/UV日均提升超过200%;在App首页会场入口模块,在6/18-6/20期间,UV价值最高有100%以上的提升。
Q&A
王超:我们这次618的大数据的生产环境就已经全部跑在京东云上了。对于中小企业,建议使用cdh,有比较完整的配套软件服务,而且社区也很完善,使用者众多,遇到的很多问题在网上都可以找到答案 。
王超:这方面我们确实也是第一次尝试,首先京东这次618不是只有一天,在之前几天就已经有一些预热活动了,以及PPT中提到的更早些的小促,在这些预测活动中我们测试了和618当天场景非常类似的场景,搭建的会场、活动模式都比较相似;此外,我们特别搭建了一套分钟级别的实时数据指标监控系统,就是为了能在大促期间能实时捕获到异常。
王超:我们用户画像中不同标签有不同做法,其中性别、年龄标签用到类似look-alike的做法,用种子用户的特征,来给其他相似用户或item打标;还有些标签,比如品牌偏好,是计算这个用户行为里的品牌在整体用户群体中的权重,以及在其自己所有行为里的品牌的权重的一个结合;
存储上,我们目前是有两层存储结构,在hbase中存储所有用户画像,在redis中缓存热点用户的,由于是缓存是分片结构设计的,存储量还可以接受。
王超:在智能卖场中,我们主要使用的就是PPT提到的用户画像和内容画像匹配的方式来做的,再加上各种特征组合,使用人工调权或点击预估模型打分,用户画像计算的方法刚才已经有些介绍了;
在其他一些推荐场景中,我们也会用到关联召回的方法;
总体上来讲,我们用到的推荐方法还是很多的,不同场景不太一样。
王超 : 京东搜索与大数据平台部门架构师及总监,先后负责京东商城的推荐和搜索业务,负责京东618智能卖场项目的整体规划和架构设计。在加入京东之前,曾担任雅虎美国的主任软件工程师,先后负责雅虎个性化新闻推荐系统和雅虎视频搜索的优化。本科和硕士毕业于北京大学计算机系。
感谢杜小芳对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。