ABI需求预测

发布时间:2019-02-08 浏览次数:75

                                                                                        作者: 金思源林建源阮志豪

背景

ABI是一家啤酒公司,它的供应链非常复杂,包括了五千多家批发商、五十多家啤酒厂、二十多个分销中心和一千多个库存单位。整个供应链是否能够正常运作,取决于公司的销售、供应、物流和采购之间能否有效进行沟通。为了确保最终的客户需求始终得到满足,需求预测是组织整个供应链的关键流程。准确的需求预测有助于企业了解各类商品在各个地区的未来时间销售数量,并据此调整生产计划、优化库存管理与物流安排,消除现有的仓库缺货等状况,减少因啤酒过期或变质而造成的库存冲销,从而提高整个供应链的效率。

该公司希望能对其公司的各种啤酒在省各地区的未来销量进行预测,以便制定工作计划。为此,ABI建立了一套预测与优化系统,其中就包括需求预测模块。这个模块使用了一系列单变量时间序列模型来对每月或每周的销量进行预测。

然而,ABI物流对当前流程的预测精度并不满意。目前ABI公司对于省销量预测的12个月平均MAPEMean absolute percent error,平均绝对百分比误差)大约是35%,预测准确率是65%。因而ABI公司对于现在的预测率并不满意,希望可以使用更加先进的方法、利用更多可用的内部数据来提高销量预测的准确性。

本次研究中使用的数据来自ABI公司企业资源计划(ERP)系统的订单记录。这些订单记录包含2012-2017个市级地区共374个批发商,128种啤酒产品的相关数据。

 

 


描述性分析

2.1 啤酒销量

使用R语言的ggplot2包,我们绘制出了2011年至2017省啤酒销量的折线图如下:


从上图我们可以看到,在该省啤酒的销量具有明显的周期性,没有明显的长期趋势,这一现象与我们日常生活中对于啤酒的认知也是吻合的。首先,啤酒长期以来作为我们日常生活中必不可少的饮料之一,其销量具有稳定性。其次,啤酒的销量显然与季节相关,即表现为周期性,季节效应会在下张图中进一步分析。     

 

2.2 季节效应

我们绘制出了某省啤酒销量的季节效应图如下:

由图我们可知各月份啤酒的销量差异明显。季节变动与温度变动一致,这也和我们日常生活经验相符合,天气炎热时人们更倾向于消费啤酒,秋冬季节对啤酒的需求会下降。但是在图中也存在一个异常点,一月作为最寒冷的月份之一销量却出奇的高!我们在这里想到除了温度以外,节假日也会对啤酒销量造成影响。二月的春节无疑是中国人民最重要的节日了,这种节日怎么能少得了啤酒?聪明的批发商无疑在一月份就要开始进货了!



模型的建立


3.1 数据处理

    这里我们不考虑在该地区15-16年内有销售记录的月份小于4个月且16年总销售总量小于160HL的啤酒,我们认为这些啤酒可能已逐渐退出该地区市场。这样,我们得到共347种地区啤酒销量数据。

3.2 聚类特征的构造

首先,细分到各个地区各种啤酒的销量特征极不稳定,对其单独建模预测效果并不理想。再者,于同一品牌的不同啤酒而言, 其在销售变化上是可能是截然不同的,以品牌作为分类条件也不可行。因此,基于销售数据对啤酒进行重新划分是非常必要的。

由于我们最终要预测的是各个地区各种啤酒的销量,因此,还需将分类后的预测结果分摊到该类的各种啤酒中。这就要求每类中的啤酒在该类的市场份额在各时间段内基本稳定。

 

假设Ai ,Bi, Ci表示啤酒A,B,C在第i个时期的销售量,其中i=1,2,……,m

如果我们要把A,B聚为一类,则我们希望A,B尽可能满足等式(1)等式(2)可以推导出等式(1),而等式(3)又等价于等式(2)

 

因此,我们把每种啤酒月销量占其历史销量当成特征用以聚类,对啤酒重分类。

 

3.3 聚类效果验证

为了验证聚类后预测效果是否提升,我们对某一重点地区20126月前就有销售记录的25种啤酒进行聚类,比较聚类后的预测效果与对逐一对单种啤酒进行建模的预测效果。其中2012-201660个月的销售数据为训练集,201712个月的销售数为测试集,拟合模型为ARIMA模型。

 

a 聚类数目确定

这里采用K-means聚类算法,以啤酒2015-2016年每月销量占2015-2016年总销量比例为特征进行聚类,由于类团数量无法事先确定,理论上,越多的类团就会有更好的聚类效果,但是过多的类团将会影响数据的致密性, 增加预测模型的复杂度, 因而这里采用组内距离平方和的缩减速度进行判断。

这里,我们选择k=5进行K-means聚类



3-1 聚类分析碎石图

 

b 聚类结果可视化

聚成5类后,其中3类含有的啤酒品牌个数都是小于等于2个,故我们只考虑类1和类3

 


3-2 聚类结果可视化图

c 误差比较

对一种啤酒的预测值{p1,p2,…,p12}和实际值{o1,o2,…,o12},由于可能出现个别月份销售量为零的情况,我们定义误差计算公式为

单一啤酒预测误差

    对于聚类后的分摊,我们以类中啤酒2015-2016年的销量占类市场份额进行分摊。最后得到的结果如表3-1及表3-2所示。可以看到,聚类后再进行分摊的预测效果优于单独建模预测。

 

3-1 1模型预测误差对比

 

100003

100005

100007

100011

100036

100039

单独

11.97

33.03

58.15

57.04

18.79

39.52

聚类

12.09

11.39

35.87

21.92

13.2

18.79

 

100047

100358

100364

100503

100505

101805

单独

28.42

27.96

57.05

53.52

27.32

18.23

聚类

19.42

19.08

20.64

18.05

9.1

11.81

 

 

3-2 3模型预测误差对比

 

100012

100019

100022

100023

100037

100043

100049

100367

单独

54.19

38.9

21.91

29.42

39.41

22.4

20.94

52.72

聚类

35.89

39.58

24.41

27.08

42.94

21.51

14.48

47.11


评价与总结

我们利用了聚类技术,一定程度上提高了预测准确度。但是,多个地区,多种商品的聚类结果之间存在的差异以及聚类的数量都需要人工修正确认。通过聚类的方法虽然能够对将啤酒重分类以预测销量,但同时也损失了不同地区不同啤酒本身特定的属性,只能使用历史销量这个因素进行预测。