共计 2387 个字符,预计需要花费 6 分钟才能阅读完成。
简介:本文从零售业需求预测痛点、商店商品模型预测的实际演示,介绍 Databricks 如何助力零售商进行需要、库存预测,实现老本把控和营收增长。
作者:李锦桂 阿里云开源大数据平台开发工程师
本文从零售业需求预测痛点、商店商品模型预测的实际演示,介绍 Databricks 如何助力零售商进行需要、库存预测,实现老本把控和营收增长。
本文分为以下四局部:
1. 消费者需求预测对零售业的重要性
2. 数据的筹备与可视化
3. 基于 DDI 建设预测单个商店 - 商品模型
4. 将预测模型扩大到每个商店 - 商品的预测
一、消费者需求预测对零售业的重要性
首先,需求预测对零售商至关重要。如果商店的商品过多,货架和仓库的空间缓和,产品容易过期,财务资源被库存解放。零售商无奈利用制造商带来的新机会,从而错过生产模式的转变。
因为商店内商品过少,客户无奈从上商店内买到须要的商品。岂但会造成零售商的支出损失,而且随着工夫的推移,消费者的悲观情绪,会驱使消费者转向竞争对手。
综上所述,预测消费者需要的准确性和及时性,对零售商十分重要。
二、数据的筹备与可视化
上面咱们应用批发数据模仿如何应用 DDI 的 notebook 和 Facebook prophet 来对消费者的需要进行建模和预测。
当初咱们须要的数据曾经上传到了 OSS 的 Bucket 外面,接下来,开始对消费者的需要进行建模和预测。当数据上传到 OSS 上之后,能够在 DDI 的 Notebook 上对数据进行剖析和建模。
本次应用的数据集是 2012 年到 2017 年,10 个商店中的 50 商品销售数据。数据蕴含四列。第一列是日期;第二列是商店的 ID(1-10);第三列是商品的 ID(1-50);第四列是当日商品的销售量。
试验目标是预测将来三个月,这些商品在各个商店的销量,对商店将来的库存备货提供领导。
在默认配置下,YARN 调配的 executor CPU 为 1core,memory 为 2G,为了让咱们的剖析更快一些,咱们能够适度调高调配的 cpu 外围数和调配的内存大小。
通常,在读取大量 CSV 格局的数据之前,会事后定义 Schema。这项简略预处理,能够免去 Spark 主动揣测数据类型的沉重工作,让 Spark 更加疾速的读入数据。
定义 Schema 之后,将训练数据读取到 spark 的 DataFrame 中。
读取 DataFrame 之后,通过相熟的 SQL 语句对数据进行剖析,能够应用 dataframe 的 createOrReplaceTempView 办法,创立一个长期的视图。
创立 view 之后,对 dataframe 中的数据进行剖析。首先剖析销售数据随年份的走势。从图表能够看出,在过来几年,商店的销售额稳步增长,总体出现线性增长的趋势。在预测下一年的销售额时,能够参考过来几年的增长率。
三、基于 DDI 建设预测单个商店 - 商品模型
与此同时,商品销售往往有很强的季节性,特地是服装行业。T 恤在冬季的销售额必定高于羽绒服的销售额。因而,在预测商品的销售额时,季节性是不可疏忽的因素。
如上图所示,从 2013 年到 2017 年,商品销量一直上涨。一年之中,商品的销售额出现很强的周期性。
在 12 月或 1 月时,商品销量达到波谷,随着月份一直攀升,7 月销量达到波峰。所以在进行建模时,月份是很重要的特色之一。
在上图中,0 代表的周一,1 代表周二……销售额在每周七天,也呈现出很强的周期性,在周日的销售额达到最高,周一跌到最低,而后缓缓回到高位。
Prophet 是 facebook 开源的一个工夫序列预测算法。Prophet 的应用非常简单,只须要输出已知的工夫序列的工夫戳和相应的值以及须要预测的工夫序列的长度,Prophet 就能输入将来的工夫序列走势。
接下来,对所有商店和商品的组合进行预测之前。先抉择 store 1 和 item 1 进行预测,相熟 Prophet 的应用。
预测第一步,组装历史数据用于模型训练。Prophet 的模型比较简单,相当于 Prophet 的对象。在这个对象里,把 growth 定义为线性。
在数据摸索阶段,失去的论断是,一个商品的销量,岂但有周与周之间的周期性,而且有月份之间的周期性。所以 weekly,yearly 作为 true。而后应用 fit 办法,对模型进行训练。
训练之后,能够应用这个模型预测将来 90 天的走势。
从上图能够看到,商品整体销量呈逐年减少的趋势。商品销量受节令和节假日变动影响显著。
最初,把实在数据和将来 90 天的预测数据它拼接到一起。实在数据从 2017 年到 2018 年的 1 月。将来 90 天的预测数据,从 2018 年 1 月到 4 月。如上图所示,带有黑点的数据是实在数据。
通过获取历史数据和预测数据的准确性。能够预测一些准确性指标,比方 MAE、MSE 和 RMSE。
四、将预测模型扩大到每个商店 - 商品的预测
接下来,开始建设更加欠缺的模型对商店(10 个商店)和商品(50 件商品)的所有组合进行预测。建设模型的第一步是筹备数据。
训练数据次要有四列。对应的是每一种商店商品的组合,在特定日期的销量。而后,针对这些数据进行建模。
创立一个 Prophet 对象,建设模型。weekly 和 yearly 被设为 true,而后预测将来 90 天的趋势。
从预测数据中,抽取出一些须要的字段和历史数据。将历史数据和预测数据拼接到一起,设置后果数据中的商店 ID 和商品 ID,返回数据集。将模型训练利用到每个商店和商品组合,将预测后果写入 OSS。
接下来,把 OSS 中的预测后果,加载到 spark 里。抉择工夫戳,商店和的预测值。抉择日期应大于 2018 年 1 月 1 号。依据工夫和商店组合。预测的商店销售额,如上图所示。
接下来,开始计算每个模型的测试指标。首先,定义一个 UDF 用于计算模型的测试指标。获取训练日期,计算训练指标,进行组装。
上图是针对 10 家商店的 50 种商品造成的预测后果。最终实现了每个商店和商品的组合,以及销售额的模型建设与预测。
原文链接
本文为阿里云原创内容,未经容许不得转载。