从 0 到 1,一号店通用推荐平台的搭建

路过蜻蜓 8年前
   <p>一号店精准化推荐部门通过不断探索,逐渐搭建了实时的、高可用的、推荐过程可追溯的通用推荐平台,目前该平台正在公司范围内被越来越多的人使用。 本文从一号店通用推荐平台产生的背景谈起,详解该平台的整体架构设计、推荐流程可视化系统设计、推荐结果可视化系统设计等,并在最后进行了总结。</p>    <h2><strong>前言</strong></h2>    <p>个性化推荐系统是目前电商网站的热门技术领域,它是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程。一个好的个性化推荐系统不仅能为用户提供个性化的服务,同时还能实时地响应用户的个性化需求,并且能提供推荐商品可预测性、可解释性。</p>    <h2><strong>通用推荐平台产生的历史背景</strong></h2>    <p>在传统电商网站中,给用户推荐商品的栏位丰富多彩。例如在一号店PC端首页会根据用户的购买记录推荐用户可能感兴趣的商品,我们称之为猜你喜欢栏位,如图1所示。</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/d98fd3261c468547278d2a77c03d010b.jpg"></p>    <p style="text-align: center;">图1 一号店PC端首页用户猜你喜欢栏位</p>    <p>在一号店的PC端商品详情页会根据用户当前正在浏览的商品,推荐跟该商品相似的商品,我们称之为买了还买栏位,如图2所示。</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/b8f13fffc93ca0ce1a6dba588a8b8bf0.jpg"></p>    <p style="text-align: center;">图2 一号店PC端买了还买栏位</p>    <p>随着电商业务的快速膨胀,推荐栏位越来越多,业务逻辑变得越来越复杂,逻辑变更的紧急需求也越来越多,在这种场景下开发人员会疲于应付繁杂的推荐需求和维护复杂的业务逻辑,代码冗余度很大。我把这种现状用图3来表达。</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/e73b246667e56737868fc9ce7193d06c.jpg"></p>    <p style="text-align: center;">图3 通用推荐平台搭建前推荐栏位的问题</p>    <p>针对这种背景,一号店精准化部门开发了一个可在线、可视化配置栏位和修改栏位逻辑的推荐可视化平台,用于实时响应推荐前台栏位需求。</p>    <p>同时为了让推荐结果有可解释性,我们将推荐栏位的逻辑计算日志通过自主研发的数据回流框架,以HDFS的形式沉淀,并通过数据清洗等步骤写入到HBase中,通过WEB界面展示给网站运营方,来解释线上的栏位是如何推荐商品的,这个平台称为推荐可追溯平台。</p>    <p>推荐流程可视化系统提供了以什么样的逻辑给用户推荐商品的功能,推荐可追溯系统可以重现商品的推荐过程,这两个平台在一起协同工作,很推荐流程可视化系统提供了以什么样的逻辑给用户推荐商品的功能,推荐可追溯系统可以重现商品的推荐过程,这两个平台在一起协同工作,很好地解决了图3所示的推荐栏位问题。我们把这两个系统合在一起称为通用推荐平台。</p>    <h2><strong>通用推荐平台整体设计</strong></h2>    <p>通用推荐平台的整体架构设计如图4所示。</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/b07e989da71e1ee7589b64df796104ba.jpg"></p>    <p style="text-align: center;">图4 通用推荐平台整体架构设计</p>    <p>从图4可以看出,通用推荐平台总共包含两个系统,分别为推荐流程可视化系统、推荐结果可追溯系统。在推荐流程可视化系统里,网站运营提前做好推荐栏位配置,然后用户在访问已配置完毕的栏位时候,请求流程可视化系统中的统一推荐接口,在接口逻辑处理的过程中,会将推荐步骤通过数据回流系统写入到HBase中,供推荐结果可追溯系统使用;在推荐结果可追溯系统里,通过模拟线上栏位请求,根据请求ID和商品ID去回溯推荐过程,判断推荐过程是否有理有据。</p>    <h2><strong>推荐流程可视化系统详细设计</strong></h2>    <p>推荐流程可视化系统详细设计图如图5所示。</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/a5f464e1e78caf3d63eb2268fadd34a5.jpg"></p>    <p style="text-align: center;">图5 推荐流程可视化系统详细设计图</p>    <p>从图5可以看出推荐流程可视化系统分为前台和后台两部分,前台部分提供在线、实时推荐流程配置的功能,后台部分对外暴露统一的推荐接口,该接口里会根据被访问的推荐栏位ID,获取栏位的推荐流程配置,然后根据流程配置计算出相应的推荐商品。</p>    <p>在计算的过程中,自主研发的数据回流系统将推荐步骤通过Kafka、Camus发送到Hive中,然后经过数据清洗等步骤落入到HBase中。数据回流系统的流程图如图6所示。</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/cd474a31c015d50166f9275ee67781b1.jpg"></p>    <p style="text-align: center;">图6 数据回流框架流程图</p>    <p>图6描述了推荐步骤消息内容经过了集中压缩推送、Kafka传输、沉淀于Hive、数据清洗等流程,最终形成了一条条如同轨迹图般的推荐步骤流水日志。</p>    <h2><strong>推荐结果可追溯系统详细设计</strong></h2>    <p>推荐流程可追溯系统的详细设计图如图7所示。</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/180d382db8cd6b439f143db2b450aff1.jpg"></p>    <p>图7 推荐结果可追溯系统详细设计图</p>    <p>从图7可以看出网站运营人员通过模拟线上栏位请求,从而调用推荐流程可视化系统中的统一推荐接口获得真实的推荐商品。同时根据推荐流程可视化系统中沉淀下的推荐步骤流水日志,用商品ID和请求ID去做组合key查询,从而重现推荐步骤。这样就让我们的个性化推荐系统的推荐过程透明化、推荐结果具备可解释性,也便于第一时间解决用户投诉的推荐结果不准确的问题。</p>    <h2><strong>通用推荐平台总结</strong></h2>    <p>在通用推荐平台搭建完成之后,一号店的精准化推荐部门解决了推荐系统常见的问题(见图3),诸如重复开发工作量等,极大地提升了推荐团队开发效率和运营效率。这个平台给推荐团队所带来的积极影响,如图8所示。</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/6c1fc8e9c57182729a238590440faa59.jpg"></p>    <p style="text-align: center;">图8 通用推荐平台搭建后推荐栏位的现状</p>    <p>从图8可以看出,通用推荐平台的推荐流程可视化系统通过可视化的栏位配置,避免了开发同学的重复开发工作,并可通过可实时调节栏位配置,来响应栏位逻辑调整需求;通用精准化推荐平台的推荐结果可追溯系统通过还原推荐过程,提供了推荐结果的正确性保障。</p>    <p>最后是一组关于通用推荐平台的数据运营情况:</p>    <ul>     <li> <p>一号店PC端+移动端总共有50多个推荐栏位,有近80%的推荐栏位使用了该平台;</p> </li>     <li> <p>推荐需求的平均开发时间从之前的一周,缩短到现在的10分钟以内;</p> </li>     <li> <p>推荐结果用户满意率提高了将近50%。</p> </li>    </ul>    <p> </p>    <p> </p>    <p> </p>    <p>来自:http://mp.weixin.qq.com/s?__biz=MzIyNjE4NjI2Nw==&mid=2652557387&idx=1&sn=09b26a523605654cf5536ee5e971cbec&chksm=f39a353fc4edbc29ba5aeb877e32b1ed005fec6d2cf7140fd3cc24e6e6954868b3a39ed18b1a&scene=0</p>    <p> </p>