使用Databricks进行零售业需求预测的应用实践【Databricks 数据洞察公开课】

简介: 本文从零售业需求预测痛点、商店商品模型预测的实践演示,介绍Databricks如何助力零售商进行需求、库存预测,实现成本把控和营收增长。

作者:李锦桂 阿里云开源大数据平台开发工程师


本文从零售业需求预测痛点、商店商品模型预测的实践演示,介绍Databricks如何助力零售商进行需求、库存预测,实现成本把控和营收增长。


本文分为以下四部分:

1.消费者需求预测对零售业的重要性

2.数据的准备与可视化

3.基于DDI建立预测单个商店-商品模型

4.将预测模型扩展到每个商店-商品的预测


一、消费者需求预测对零售业的重要性

首先,需求预测对零售商至关重要。如果商店的商品过多,货架和仓库的空间紧张,产品容易过期,财务资源被库存束缚。零售商无法利用制造商带来的新机会,从而错过消费模式的转变。


由于商店内商品过少,客户无法从上商店内买到需要的商品。不但会造成零售商的收入损失,而且随着时间的推移,消费者的失望情绪,会驱使消费者转向竞争对手。


综上所述,预测消费者需求的准确性和及时性,对零售商非常重要。


二、数据的准备与可视化

下面我们使用零售数据模拟如何使用DDInotebookFacebook prophet来对消费者的需求进行建模和预测。


现在我们需要的数据已经上传到了OSSBucket里面,接下来,开始对消费者的需求进行建模和预测。当数据上传到OSS上之后,可以在DDINotebook上对数据进行分析和建模。


本次使用的数据集是2012年到2017年,10个商店中的50商品销售数据。数据包含四列。第一列是日期;第二列是商店的ID1-10);第三列是商品的ID1-50);第四列是当日商品的销售量。


实验目的是预测未来三个月,这些商品在各个商店的销量,对商店未来的库存备货提供指导。


在默认配置下,YARN分配的executor CPU1corememory2G,为了让我们的分析更快一些,我们可以适度调高分配的cpu核心数和分配的内存大小。

1.png

通常,在读取大量CSV格式的数据之前,会预先定义Schema。这项简单预处理,可以免去Spark自动推测数据类型的繁重工作,让Spark更加快速的读入数据。

2.png

定义Schema之后,将训练数据读取到sparkDataFrame中。

3.png

4.png

读取DataFrame之后,通过熟悉的SQL语句对数据进行分析,可以使用dataframecreateOrReplaceTempView方法,创建一个临时的视图。

5.png

创建view之后,对dataframe中的数据进行分析。首先分析销售数据随年份的走势。从图表可以看出,在过去几年,商店的销售额稳步增长,总体呈现线性增长的趋势。在预测下一年的销售额时,可以参考过去几年的增长率。


三、基于DDI建立预测单个商店-商品模型

与此同时,商品销售往往有很强的季节性,特别是服装行业。T恤在夏季的销售额肯定高于羽绒服的销售额。因此,在预测商品的销售额时,季节性是不可忽略的因素。

6.png

如上图所示,从2013年到2017年,商品销量不断上涨。一年之中,商品的销售额呈现很强的周期性。


12月或1月时,商品销量到达波谷,随着月份不断攀升,7月销量到达波峰。所以在进行建模时,月份是很重要的特征之一。

7.png

在上图中,0代表的周一,1代表周二……销售额在每周七天,也呈现出很强的周期性,在周日的销售额达到最高,周一跌到最低,然后慢慢回到高位。


Prophet是facebook开源的一个时间序列预测算法。Prophet的使用非常简单,只需要输入已知的时间序列的时间戳和相应的值以及需要预测的时间序列的长度,Prophet就能输出未来的时间序列走势。

8.png

接下来,对所有商店和商品的组合进行预测之前。先选择store 1item 1进行预测,熟悉Prophet的使用。

9.png

预测第一步,组装历史数据用于模型训练。Prophet的模型比较简单,相当于Prophet的对象。在这个对象里,把growth定义为线性。

10.png

在数据探索阶段,得到的结论是,一个商品的销量,不但有周与周之间的周期性,而且有月份之间的周期性。所以weeklyyearly作为true。然后使用fit方法,对模型进行训练。

11.png

训练之后,可以使用这个模型预测未来90天的走势。

12.png

从上图可以看到,商品整体销量呈逐年增加的趋势。商品销量受季节和节假日变化影响显著。

13.png

最后,把真实数据和未来90天的预测数据它拼接到一起。真实数据从2017年到2018年的1月。未来90天的预测数据,从20181月到4月。如上图所示,带有黑点的数据是真实数据。

14.png

通过获取历史数据和预测数据的准确性。可以预测一些准确性指标,比如MAEMSERMSE


四、将预测模型扩展到每个商店-商品的预测

接下来,开始建立更加完善的模型对商店(10个商店)和商品(50件商品)的所有组合进行预测。建立模型的第一步是准备数据。

15.png

训练数据主要有四列。对应的是每一种商店商品的组合,在特定日期的销量。然后,针对这些数据进行建模。

16.png

创建一个Prophet对象,建立模型。weeklyyearly被设为true,然后预测未来90天的趋势。

17.png

从预测数据中,抽取出一些需要的字段和历史数据。将历史数据和预测数据拼接到一起,设置结果数据中的商店ID和商品ID,返回数据集。将模型训练应用到每个商店和商品组合,将预测结果写入OSS

18.png

接下来,把OSS中的预测结果,加载到spark里。选择时间戳,商店和的预测值。选择日期应大于201811号。根据时间和商店组合。预测的商店销售额,如上图所示。

19.png

接下来,开始计算每个模型的测试指标。首先,定义一个UDF用于计算模型的测试指标。获取训练日期,计算训练指标,进行组装。

20.png

上图是针对10家商店的50种商品形成的预测结果。最终完成了每个商店和商品的组合,以及销售额的模型建立与预测。


应用实践演示视频:https://developer.aliyun.com/live/248894



产品技术咨询

https://survey.aliyun.com/apps/zhiliao/VArMPrZOR  

加入技术交流群

image.png

相关实践学习
数据湖构建DLF快速入门
本教程通过使⽤数据湖构建DLF产品对于淘宝用户行为样例数据的分析,介绍数据湖构建DLF产品的数据发现和数据探索功能。
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
相关文章
|
12月前
|
存储 分布式计算 数据挖掘
【数据湖仓架构】数据湖和仓库:Databricks 和 Snowflake
【数据湖仓架构】数据湖和仓库:Databricks 和 Snowflake
|
12月前
|
存储 SQL 分布式计算
【数据湖仓】数据湖和仓库:Databricks 和 Snowflake
【数据湖仓】数据湖和仓库:Databricks 和 Snowflake
|
机器学习/深度学习 存储 数据采集
使用Databricks进行营销效果归因分析的应用实践| 学习笔记
快速学习使用Databricks进行营销效果归因分析的应用实践
155 0
使用Databricks进行营销效果归因分析的应用实践| 学习笔记
|
存储 机器学习/深度学习 弹性计算
使用 Databricks 和 MLflow 进行机器学习模型训练和部署的应用实践| 学习笔记(二)
快速学习使用 Databricks 和 MLflow 进行机器学习模型训练和部署的应用实践
378 0
使用 Databricks 和 MLflow 进行机器学习模型训练和部署的应用实践| 学习笔记(二)
|
消息中间件 存储 SQL
使用Databricks+Confluent进行实时数据采集入湖和分析【Databricks 数据洞察公开课】
本文介绍网约车模拟数据从产生,发布到流数据服务 Confluent,通过Databricks Structured Streaming进行实时数据处理,存储到LakeHouse,并使用spark和spark sql进行分析的应用实践。
612 0
使用Databricks+Confluent进行实时数据采集入湖和分析【Databricks 数据洞察公开课】
|
机器学习/深度学习 存储 数据采集
使用 Databricks 进行营销效果归因分析的应用实践【Databricks 数据洞察公开课】
本文介绍如何使用Databricks进行广告效果归因分析,完成一站式的部署机器学习,包括数据ETL、数据校验、模型训练/评测/应用等全流程。
603 0
使用 Databricks 进行营销效果归因分析的应用实践【Databricks 数据洞察公开课】
|
机器学习/深度学习 存储 弹性计算
使用Databricks+Mlflow进行机器学习模型的训练和部署【Databricks 数据洞察公开课】
介绍如何使用Databricks和MLflow搭建机器学习生命周期管理平台,实现从数据准备、模型训练、参数和性能指标追踪、以及模型部署的全流程。
867 0
使用Databricks+Mlflow进行机器学习模型的训练和部署【Databricks 数据洞察公开课】
|
存储 SQL JSON
Delta Lake基础介绍(开源版)【Databricks 数据洞察公开课】
针对社区版本Delta Lake提供的几大核心特性进行讲解,并通过示例演示如何使用这些特性。
806 0
Delta Lake基础介绍(开源版)【Databricks 数据洞察公开课】
|
存储 数据采集 机器学习/深度学习
深度解析数据湖存储方案Lakehouse架构【Databricks 数据洞察公开课】
从数据仓库、数据湖的优劣势,湖仓一体架构的应用和优势等多方面深度解析Lakehouse架构。
1051 0
深度解析数据湖存储方案Lakehouse架构【Databricks 数据洞察公开课】
|
SQL 存储 分布式计算
Delta Lake的演进历史及现状【Databricks 数据洞察公开课】
从大数据平台架构的演进、Delta Lake关键特性、版本迭代、重要功能等多方面,介绍Delta Lake的演进和优势。
754 0
Delta Lake的演进历史及现状【Databricks 数据洞察公开课】