写点什么

京东 618:揭秘大促销背后的个性化推荐

  • 2015-06-17
  • 本文字数:2594 字

    阅读完需:约 9 分钟

写在前面:京东作为国内最大的自营 B2C 平台,目前个性化推荐成交的订单数已占到总量的 13%。这其中,数据驱动的个性化推荐系统发挥着越来越重要的作用。在 7 月 17~18 日即将举行的 ArchSummit 深圳 2015 “电商和零售业的转型”专题论坛上,京东推荐搜索部技术总监刘尚堃也将分享《京东数据驱动下的个性化推荐》。在一年一度的“6·18”大促销活动到来之际,InfoQ 走进京东,带你领略背后的技术之谜。

受访嘉宾介绍:刘尚堃,京东推荐搜索部技术总监。2011 年加入京东组建了京东搜索团队,2013 年在继续负责搜索引擎相关工作的同时,开始组建广告算法团队,通过一年的算法优化,京东快车广告系统为公司过亿的收入。2013 年年底负责京东推荐系统和搜索系统包括架构、算法、产品在内的全部工作。2014 年带领团队全方位向千人千面推荐和搜索产品目标迈进。

InfoQ:首先请介绍下自己及您的团队所负责的事情。

刘尚堃:我 2011 年初加入京东,开始组建搜索团队,并带领团队用 C++ 研发了一套分布式搜索引擎,在此之前京东的搜索是基于开源系统构建的。2012 年底系统上线之后,京东的转换率有 2%的提升,性能提升了 100%。在这个过程中团队也得到了磨练。2012 年开始组建了广告团队,并开发了”京东快车”,2013 年年中该广告系统已经给京东创造了上亿元的营收。在后来的对比中发现,京东 45% 的品类点击超过淘宝。2014 年广告团队剥离出去独立运作,我开始负责搜索和推荐团队,现在部门有大概 80 人的规模。

InfoQ:您能介绍一下京东的分布式搜索引擎系统的开发过程及其系统架构吗?

刘尚堃:简单说一下吧。如上图所示,从上到下。首先是搜索引擎的前台部分,有一个意图分析的模块对用户的类型以及请求 query 进行分析。然后进入搜索过程,搜索分两部分,一部分是业务逻辑层,一部分是分布式的 search 引擎阵列。最下面的是数据更新,全量更新与实时增量更新。经过多年的打磨,现在基于 Hadoop 的数据全量更新每天进行一次,实时增量更新则是滚动进行。我们刚刚采用流水线推送技术进行全量更新,性能比过去提升了 20%。

此外,搜索引擎也会连接到用户画像,对其进行更精准的匹配。接下来就是数据分析的部分了。一般我们每周会进行 3 次小流量的算法改进,主要是对 GMV(Gross Merchandise Volume)和转化率的调整测试。

InfoQ:有一个问题我问过不同的相关公司,也想再问下您,商品推荐、广告推荐与内容推荐有哪些异同?在技术实现上各有什么特点?

刘尚堃:其实商品推荐更侧重用户的购买行为,即把大量的商品定位到海量的人群中去,促成订单的成交,这可以用明确的财务指标来衡量;广告的重点是吸引用户点击,以满足商家的推广与展示需求;内容推荐的衡量比较负责,需要看用户兴趣、内容新颖度、以及点击率等多维度指标。

因此,商品与广告的财务指标更容易激起团队的成就感与激情。

这三者的技术实现是有一些通用的步骤可循。以我们京东的推荐系统为例,首先是召回模型,即底层架构和计算平台,比如数据提取、分布式任务的调度与计算等;上面是离线模型,主要是对用户画像、协同过滤以及关联度匹配,这一层用户实时行为对结果的影响更大;再之上是排序模型部分,主要是规则排序、机器学习等。比如我们近期上线了 leaning to rank 对排序优化提升了 20%;再之上是 A/B 测试的框架以及业务架构。

广告推荐更类似于离线部分以及排序里的 CTR(Click-through Rate)预估。有一个很大的不同在于,广告系统里的产品池远小于商品推荐的规模,因此更侧重 RPM(注:广告请求每千次展示收入,(Estimated earnings / Number of ad requests) * 1000),客户关注的是 ROI(Return On Investment)。

InfoQ:京东快车系统在持续优化的过程中,遇到了哪些比较有代表性的或者说有意思的问题?这些问题是怎么解决的?

刘尚堃:现在广告系统叫”精准通”。2014 年之后独立运作了我了解不多,我说一下 2014 年之前的吧。我们广告系统刚上线的时候,广告商品的库存量比较小,这时候定向投放的相关性会比较差,但是又不能过度增加其曝光量,否则会破坏京东用户的体验。为了保证二者的平衡,我们采取减少曝光、保证用户体验和广告主利益,但是牺牲了部分收入的做法。

这类似于”饥饿营销”,也源于我们当时的谨慎。由于精准度较高,商家的热情一下子被拉起来了。但是广告资源有限,后期随着广告资源的不断丰富,我们才逐渐放开了这个限制。

InfoQ:今年 QCon 北京的时候我们就深度学习方面的内容采访了一下李成华博士。您能否谈谈深度学习 / 机器学习在京东现有业务系统中的应用?

刘尚堃:现在深度学习的主要应用是智能机器人方面,我们团队有一位从 Google 过来的博士在做。客服机器人第一步是对用户的问题与 20 多个大类进行匹配是最难的,这一步主要用了很多 DNN(Deep Neural Network)的算法。

InfoQ:作为一个用户量超大的网站,您所负责的系统架构有没有经过大的调整或重构?

刘尚堃:现在更多的是只对系统的痛点部分进行改进。比如,以前全量数据传输比较慢,我们后来用流水线推送进行改进。我们更像是在高速公路上一边跑一边随时随地换轮胎。每次的改进都是一次突破,所有的优化都是立足在架构层面的,比如使得我们的调用更加透明、系统性能更为稳定,使业务开发更加迅速。底层的优化根据我们的具体需求在持续地改进。

InfoQ:在最近这两年的 618 活动中,千人千面计划的实施取得了哪些突破?618 活动对系统和你的团队有哪些挑战?

刘尚堃:京东的 618 可能有点不一样。千人千面作为用户画像的部分,在促销活动中所起的作用主要是对商品的排序。

目前这已经是我第五次做 618 这样的活动了。这个跟你们理解的不大一样,该做的事情平时和 618 之前我们都做完了,团队已经成长起来,我们也都习以为常。否则我也不能坐这里接受你们的采访,而应该在上面忙活着。

InfoQ:明天就是 618 了,您所负责的推荐与搜索系统对历次 618 活动的销售预测情况如何?有什么可以透露的消息吗?

刘尚堃:谈到技术,说的最多的是我们要扛过去啊,其实这是对系统最基本的要求。技术的支撑作用是毋庸置疑的。

现在技术更主要的是推动作用。我们的工程师针对今年的 618 开发了一个促销搜索的 PC 端产品,可以对促销商品的真实性、优惠力度、排序等比较接地气的功能,这里面技术实现了很多。

我们对 618 的原则是,只要能卖出去就不怕赔。今年的预测应该会超过去年淘宝的双十一。到时候在 ArchSummit 深圳 2015 大会上我在给大家做更详细的分享。

2015-06-17 11:478574
用户头像

发布了 64 篇内容, 共 25.7 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容

ThreadLocal内存泄漏分析与解决方案,Java完全自学手册下载

Java 程序员 后端

Spring注解驱动,java面试项目中遇到的问题

Java 程序员 后端

Spring(二),java基础面试题应届生

Java 程序员 后端

Spring(六),终于找到一个看得懂的JVM内存模型了

Java 程序员 后端

She Builds Summit | 感受她的科技力量!

亚马逊云科技 (Amazon Web Services)

开源 职场

SymmetricDS 数据库双向同步开源软件入门,我要自学网java基础百度云

Java 程序员 后端

ThreadLocal到底是什么?它解决了什么问题?,kalilinux渗透教程视频

Java 程序员 后端

SQL注入漏洞防护看这一篇就够了!,万字长文

Java 程序员 后端

Spring常用API:Spring类及相关面试点,rabbitmq分布式事务实现原理

Java 程序员 后端

代码检查规则:Python语言案例详解

百度开发者中心

Python 方法论 学习笔记

Spring(二十),Java中级开发笔试题及答案

Java 程序员 后端

Spring的XML解析原理,这一次全搞懂再走!,springmybatis整合原理

Java 程序员 后端

技术+案例详解无监督学习Autoencoder

华为云开发者联盟

神经网络 算法 图片 无监督学习 Autoencoder

Struts 学习笔记1 -Struts Framework 概览,BAT面试&高级进阶

Java 程序员 后端

Spring常用注解(绝对经典),非科班面试之旅

Java 程序员 后端

Spring框架底层原理-IoC,java架构师指南pdf下载

Java 程序员 后端

Spring框架(四)SpringMVC基础,2021最新大厂Java面经

Java 程序员 后端

质效中台助力实现质量度模型规模化落地

百度Geek说

架构 中台 测试 QA

Spring源码学习~循环依赖(面试必问系列,java最新框架技术

Java 程序员 后端

Spring源码解析(二)AOP,java基础课程百度云

Java 程序员 后端

Spring(六)(1),mongodb入门书籍

Java 程序员 后端

SQL语句基本语法及函数方法,java编程入门视频教程下载

Java 程序员 后端

SSM整合,kafka教程分享

Java 程序员 后端

ThreadLocal内存泄漏分析与解决方案(1),linux文件系统原理

Java 程序员 后端

ThreadLocal基本使用和内存泄漏分析,kafka性能调优

Java 程序员 后端

Spring核心——Bean的定义与控制,linuxshell脚本教程

Java 程序员 后端

低代码开发平台是什么意思?低代码开发平台优势!

低代码小观

低代码 开发 开发工具 开发平台 企业开发系统

Spring系列:自动注入(autowire,redis笔记

Java 程序员 后端

SQL 中判断条件的先后顺序,会引起索引失效么?,java虚拟机的原理

Java 程序员 后端

String Bean 注入方式,2021年Java程序员职业规划

Java 程序员 后端

双11攻略来啦:参与Oracle VS openGauss 在线研讨,与盖国强老师、李国良教授面对面!

墨天轮

oracle opengauss 对话

京东618:揭秘大促销背后的个性化推荐_服务革新_魏星_InfoQ精选文章