常用时序预测模型的R实现 一

预测模型本身会比较干巴,所以尽量多用些现实应用实例。

一开始接触预测模型算法是因为公司澳洲分发中心的人员开支超预算了。大致是这么个情况

常用时序预测模型的R实现 一

柱状图显示的是每天发出去的订单量,蓝色是两班倒的日子,红色是周末上班的日子,绿色是普通的shift。澳洲的物流小哥每个小时正常薪资在35-50间(软妹币175到250),周末双倍,第二个shift(两班倒)则每小时加15%。具体超支多少是商业机密这儿不方便说,总之已经超到管理层肉疼了。噢对了,两班倒用的不是同一批雇员,所以另外还有一笔training cost,每个人35块一小时,要培训一周。

这张图其实已经充分说明了问题出在哪里。蓝色的柱子,高度不是应该差不多是绿色的两倍么?两班倒啊。可是并没有,事实上,histogram告诉我们,有相当一部分两班倒的日子其实完全可以用normal shift替代。

常用时序预测模型的R实现 一

虽然mask掉了具体单量,但两张图的x轴是在同一个scale上的。大约一半的double shift其实并不必要。

经过和supply chain的director坦率而友好的交流,意识到问题的根本。物流中心是基于订单量安排人手的,而订单量的预测传统上依赖finance部门。金融会计部门的同事是怎么干的呢?拿去年的订单数据来,按照今年预期的growth,统统乘以同一个比率就得了。这么简单粗暴的方式能够用那么多年,自然有其合理性。零售业销售数据是典型的additive time series,有强烈的seasonality。每年的假期基本上差不多是同一个时段,外部变量曾经也是稳定的。你跟我说你要搞啥exponential smoothing? autoregressive integrated moving average? 犯得着吗,还不见得比我去年照搬过来的模式准呢。

可是这两年,circumstances还真的变了。Amazon入侵,顾客群体年轻化,销售渠道网络化,澳洲的零售商们日子越来越难过,怎么办?折扣不断,降价不断,天天降价,欲购从速哇。好端端的seasonality就变成了一个promotion-driven的dynamic regression模型。简而言之,经济不景气的大趋势要考虑到,季节性要考虑到,而最关键的,外部变量复杂了。网站更新版本会带来流量增加,添加新型支付选项会提高转化率,还有SEM,social media marketing,EDM。。。突然冒出一大堆新的变量,每个变量还有自己的内部小模型,比如更高营销支出带来的是diminishing returns而绝非线性回归,这可不是finance的那些同事能用Excel搞定的!

再说说预测的周期。之前简略提到过,两班倒的话,并不是能够立即找到第二班的雇员来顶上去的,还有个一周左右的培训周期。面临订单高峰无法及时处置的情况,物流中心也并非只有加班这个选项。还可以加packing benches来永久性的提高单位时间的订单处理能力 -- 当然,这又有个lead time,需要数周之久,因为需要安装相应的硬件设施,购买软件许可。所以预测周期一般而言需要在两周内有比较高的精度,在三四周内有indicative的准确性。

以上是问题的大背景。

下一篇 常用时序预测模型的准备知识