概要

实时推荐系统对电子商务行业的成功至关重要。在Office Depot *的实例上,大规模训练推荐系统的深度神经网络(DNN)具有挑战性。本文主要分享了Office Depot和Intel团队在Amazon Web Services(AWS)上使用Analytics Zoo [1]和Apache Spark构建高效实时的基于DNN的产品推荐系统从而增加该网站每次访问收入的实现。

背景

Office Depot(纳斯达克股票代码:ODP)是一家领先的B2B综合分销公司,成立于1986年,在美国有1800人的专业销售队伍、1350个零售网点和数十个第三方物流合作伙伴,为中小企业提供产品、服务和技术解决方案。通过旗下品牌Office Depot、OfficeMax*、Compucom*和Grand&Toy为客户提供他们所需的工具和资源,专注于他们创业、成长和经营业务的热情。

Office Depot希望从传统的基于规则的供应商推荐解决方案转向自主开发更智能的深度学习推荐解决方案,该解决方案可以根据客户的实时会话行为做出个性化的推荐决策。在这项工作中,我们面临着使用大量大规模clickstream数据训练深度神经网络(DNNs)的挑战。在Office Depot电子商务平台上销售的活跃产品超过30万件,每月产生超过1亿个不同的会话控制。目前,Office Depot采用Apache Spark生态系统作为大数据平台,使用Sparse MLlib开发机器学习模型,但在现有的Apache Spark生态系统上,我们很难大规模地训练和利用深度学习模型。

新开发的DNNs通过捕获许多行业中用户项数据集的非线性关系,已不断被证明能作为成功的推荐系统。经验证据表明,使用深层DNNs可以提供更好的推荐性能[2,3,4]。因此,在现有的大数据平台和管道上应用DNNs的推荐系统对于像Office Depot这样的电子商务行业来说至关重要。

在这个博客中,我们会详细介绍如何使用Analytics Zoo和Apache Shark上的分布式Keras,在AWS上大规模构建端到端的推荐流系统。

Analytics Zoo 解决方案

Analytics Zoo[1], Intel开源的一个统一的分析和人工智能平台,将Spark、TensorFlow、Keras和BigDL[5] 程序无缝地整合到一个集成的管道中;然后整个管道可以透明地扩展到一个大型Hadoop/Spark集群中进行分布式深度学习训练和推理,而无需额外的GPU基础设施。

图1 office depot推荐系统的端到端流程

推荐系统在AWS上运行的端到端流程包括训练和推理 (图1)。

  1. 首先,系统会在AWS上使用Spark对clickstream数据进行预处理,使用Spark原生StringIndexer和Pipeline对所有产品和用户进行索引,产生对应的ID作为模型训练的特征,并进一步使用Mleap保存pipeline模型。

    val userIndexer = new StringIndexer().setInputCol(“strUserId”).setOutputCol(“userId”)
    val itemIndexer = new StringIndexer().setInputCol(“strItemId”).setOutputCol(“itemId”)
    val pipelineEstimator: Pipeline = new Pipeline()
    .setStages(Array(userIndexer, itemIndexer))
    val plModel: PipelineModel = pipelineEstimator.fit(df)

  2. 系统进一步将特征转换成Analytics Zoo推荐模型需要的RD[Sample]。对于session recommender, 每个session的特性都预先设定了一个为10的长度。

  3. 使用Analytics Zoo大规模训练不同的DNNs,包括神经协同过滤(NCF)网络、广域和深度(WND)网络和基于循环神经网络的session recommender(RNN,图2),并将模型保存在AWS S3上。目前,Analytics Zoo为不同的用例提供了3个内置的recommender models。
    图2 基于RNN的Session recommender

    val model = SessionRecommender[Float](itemCount, itemEmbed, maxLength)
    model.compile(loss=“mse”, optimizer= “adam”)
    model.fit(data, nbEpoch=20)
    model.saveModel(modelPath)

  4. 最后,系统加载了第一步已经保存的管道模型,将产品转化为ID,然后加载第三步保存的推荐模型,使用BigDL [5] 的LocalPredictor在WebService上进行推理。为每个客户的产品推荐是基于特定产品添加到其购物车中的概率排名。推理流通过利用play framework有效地扩展。用LocalPredictor推理并不依赖Spark,从而大大加快了响应延迟。

    val model = LocalPredictor(Module.loadModuleFloat)
    model.recommenderForUsers(data, 5)

结果和讨论

模型通过离线性能比较和在线A/B测试进行评估。

Model ALS NCF Wide and Deep Session recommender
Top 5 Accuracy 16.2% 46.7% 45.2% 52.3%

图表1 不同推荐系统的离线性能比较

离线性能比较(图表1)表明,通过采用基于DNN的Analytics Zoo解决方案的端到端流程,我们发现与ALS等传统推荐算法相比,准确性有了显著提高。与ALS相比,NCF通过捕获用户和产品之间的非线性关系,将前5位精度从16.2%提高到46.7%。与NCF相比,WND模型前5位精度具有一定的竞争力。为了了解用户与产品之间的非线性关系,我们基于DNN再增加了一个宽度模型来学习用户的属性,包括忠诚度指标,Office Depot卡用户标识等。用户属性的噪声,也被添加到WND中的训练过程中,以至于WND的精度相比NCF有一点下降。

根据Wu[4]的发表论文指出,电子商务系统中的每个用户session都可以被作为一系列的网页 来建模,深度RNN可以通过使用多个隐藏层来学习跟踪用户浏览网站(图2),每个隐藏层都模拟了如何访问网页组合以及按什么顺序访问。通过使用Analytics Zoo构建基于两层GRU的session recommender,我们的前5名精度相比在NCF和WND的基础上提高了6%以上。

我们已在OfficeDepot的官方网站上部署了session recommender,并针对当前基于规则的推荐器系统运行了两周多的在线A/B测试。与当前的recommender相比,session recommender显示销售额和平均订单价值分别上升了1%和1.6%。

结论

本文简要介绍了Office Depot在构建基于DNN的推荐系统以增加在线销售方面面临的挑战。然后,我们提出了一个运行在AWS上,使用Analytics Zoo构建了端到端深度学习管道,其中我们采用了Analytics Zoo内置的基于DNN的recommender来建模。最后,我们展示了在线和离线评估结果,发现基于RNN的session recommender极大的提升了销售额和平均订单价值。类似的session recommender也可能会在电子商务的其他案例中发挥关键作用。更多的示例和API在Analytics Zoo Model Recommendation 。

参考文献

  1. Analytics Zoo
  2. X He, L Liao, H Zhang, etc., 2015, Neural Collaborative Filtering
  3. H-T Cheng, 2016, Wide & Deep Learning: Better Together with TensorFlow
  4. S Wu, W Ren, C Yu, etc. 2016, Personal Recommendation Using Deep Recurrent Neural Networks in NetEase
  5. BigDL
  6. J Dai, Y Wang, X Qiu, etc., 2018, BigDL: A Distributed Deep Learning Framework for Big Data

译文出处:https://software.intel.com/en-us/articles/real-time-product-recommendations-for-office-depot-using-apache-spark-and-analytics-zoo-on

Office Depot使用Apache Spark和 Analytics Zoo上的分布式Keras实现实时产品推荐相关推荐

  1. 5月14日社区技术直播【Analytics Zoo上的分布式TensorFlow训练AI玩FIFA足球游戏】

    主题: Analytics Zoo上的分布式TensorFlow训练AI玩FIFA足球游戏 时间: 2020.5.14 19:00 参与方式: 扫描下方海报二维码加入钉钉群 或者 届时点击直播间直接观 ...

  2. 【Spark】一条 SQL 在 Apache Spark 之旅(上)

    1.概述 转载学习加深印象:一条 SQL 在 Apache Spark 之旅(上) Spark SQL 是 Spark 众多组件中技术最复杂的组件之一,它同时支持 SQL 查询和 DataFrame ...

  3. Apache Spark 3.0 结构化Streaming流编程指南

    目录 总览 快速范例 Scala语言 Java语言 Python语言 R语言 程式设计模型 基本概念 处理事件时间和延迟数据 容错语义 使用数据集和数据帧的API 创建流数据框架和流数据集 流数据帧/ ...

  4. Apache Spark【从无到有从有到无】【编程指南】【AS5】结构化流编程指南

    目录 1.概观 2.快速示例 3.编程模型 3.1.基本概念 3.2.处理事件时间和延迟数据 3.3.容错语义 4.使用数据集和数据框架的API 4.1.创建streaming DataFrames ...

  5. deepfashion 深度学习_基于Alluxio加速混合云下的Intel Analytics Zoo开源深度学习平台...

    本文描述了Alluxio如何在混合云环境中,加速oneAPI支撑的英特尔Analytics Zoo开源平台深度学习模型训练.本文会讨论有关新架构和工作流的细节,以及Alluxio的性能优势和基准测试结 ...

  6. Analytics Zoo 入门

    活动链接:SPARK中文峰会7月4日(二)|Ray On Spark 演讲嘉宾简介:邱鑫,英特尔高级软件工程师,BigDL和Analytics Zoo核心贡献者. 以下内容根据演讲视频以及PPT整理而 ...

  7. 解读至强的小秘密之 Analytics Zoo,打通大数据平台与 AI 应用的直通车

    人工智能(AI)的发展,离不开算力.算法和数据这个"铁三角"组合的驱动,它们之间的平衡发展,对 AI 技术的快速进步和实践落地起到了至关重要的作用.因此,在先进算法为 AI 应用提 ...

  8. 新手福利:Apache Spark 入门攻略

    时至今日,Spark 已成为大数据领域最火的一个开源项目,具备高性能.易于使用等特性.然而作为一个年轻的开源项目,其使用上存在的挑战亦不可为不大,这里为大家分享 SciSpike 软件架构师 Ashw ...

  9. Why Apache Spark is a Crossover Hit for Data Scientists [FWD]

    Spark is a compelling multi-purpose platform for use cases that span investigative, as well as opera ...

最新文章

  1. Teams的Incoming Webhook
  2. 【慢慢学Android】:11.对话框大全
  3. php orm 内存泄漏,Lavarel Eloquent ORM常驻进程下的内存溢出问题
  4. hnu暑期CCF培训之多项式加法
  5. 华为机试HJ83:二维数组操作
  6. maven的Lifecycle生命周期
  7. zookeeper保证单一视图
  8. ua解析接口_在线免费解析抖音短视频(维护中)
  9. ubuntu 查看和关闭后台程序
  10. 希尔伯特:数学世界的亚历山大(2009-06-11 21:33:43)
  11. 判定两个点是否在一条直线的同一侧_帮帮学堂丨高中物理的常用方法、题型特点及应用注意点!建议收藏!...
  12. 大厂面经丨Nginx 面试 40 问
  13. Electron修改窗口标题
  14. react中ref使用方法解析
  15. Debian 12采用 Ubuntu三重缓冲
  16. 实验输出菱形图案 (5 分)
  17. python将html转换为pdf,如何使用Python将HTML转换为PDF
  18. python实现飞行控制仿真(一)——PyFME(Python Flight Mechanics Engine)
  19. docker:打包正在运行的容器,快速拖环境跑路
  20. 平心静气,去火,去火 之二

热门文章

  1. java.lang.RuntimeException: Unable to start activity ComponentInfo解决方案
  2. Docker的原理,详细
  3. 高项 22 综合测试管理
  4. 输入法的历史和搜狗对扩展编程的支持展望
  5. 科海思电镀废水除重金属树脂案例CH-90
  6. 盗版xp 安装使用MSE(Microsoft Security Essentials微软杀毒软件)的方法
  7. 如何在chrome设置主页
  8. Dell 330显卡驱动在2003server安装问题
  9. C++ 的静态成员变量为什么一定要在类外定义
  10. JAVA计算机毕业设计学籍管理系统Mybatis+源码+数据库+lw文档+系统+调试部署