需求相对稳定时,选用数据模型来精打细算
先说个哲学性的话题:为什么可以预测?我们之所以能够预测,是基于:(1)时间序列的延续性(也叫连贯性);(2)变量之间的相关性(也叫类推性)。也就是说,发生过的跟尚未发生的有某种关系。
当需求的不确定性很高时,不管是延续性还是相关性,我们都不容易量化。但是,我们的头脑是最复杂的“AI”系统,能够建立变量之间非线性、难以描述的联系,这就是凭经验、“拍脑袋”。我们找有经验的人,就是因为他们的头脑里沉淀有更多的数据,他们的脑细胞也更可能让他们建立起这样的联系。
当需求的不确定性低时,特别是有了一定的需求历史后,历史与未来的延续性、相关性更容易建立,反映在一些简单而实用的模型中,这就是我们这里要讲的数据分析和数据模型。计划者的任务,就是找出和应用这样的关联性(预测模型),对未来做出预判,指导供应链执行来提前准备。
相关性指变量之间存在的关系,可以类推。比如促销预算越高,买的广告、流量越多,产品的销量一般也会越高;预售期卖得好的产品,正常销售一般也会卖得好;在试点区卖得好的产品,在所有区域也会卖得不错。我们常说不怕不识货,就怕货比货,这“货比货”就是基于相关性,在数据有限的情况下,比如新产品的预测中,扮演重要角色。小步快走、尽快纠偏,也是通过有限时间、有限客户的需求,来推断整体的需求预测,其后的逻辑也是相关性。
你现在知道了,让营销判断,其实是借助他们以往的经历,比如以前做促销的时候,花了多少钱,买了多少流量,卖掉多少产品,来判断这次花多少钱,能卖多少货。这不是单纯地“拍脑袋”,这也是以数据分析为基础。试想想,每次做活动、要预算的时候,营销也得拿出点数据给老总,来证明为什么要100万元而不是60万元的预算。用得比较多的逻辑呢,就是相关性。
对于相关性,我们常用的模型就是线性回归法,即变量之间存在一定的线性关系,线性回归根据变量的多少又分为一元、二元、多元线性回归。线性回归听上去很高大上,其实我们每天都在用:投入多,产出就多,就是基本的线性回归思路。线性回归涉及一些基本的数理统计,在我的《需求预测和库存计划:一个实践者的角度》一书中有详细的描述(第57~77页),这里就不再重述。
延续性体现在时间序列中,就是呈现一定的模式(见图1-15):(1)趋势——随着时间发展,需求呈现上升或者下降的趋势;(2)周期性——需求呈现交替性的波峰、波谷,季节性就是其中一种;[1](3)随机变动——在外界因素的影响下,需求展现出忽高忽低的变化,但整体上平稳。
如果只看图1-15中的实际值,我们是很难预测未来需求的。但当我们把其中的趋势和季节性分解出来以后,就找到了数据中的大部分规律:趋势是可以预测的,季节性也是。[2]剩余部分就是残余,亦即趋势和季节性数据模型没法解释的部分,我们把它归因于随机因素,一般依赖安全库存、供应链执行来应对。
图1-15 时间序列的分解示意
这些随机变动中,真正可能“害死”我们的是那些为数不多的波峰、波谷:前者可能造成短缺,后者可能导致过剩。说是随机,其实很多波峰、波谷不是随机产生的,而是因为发生了一些能够显著改变需求的行为,有些是客户驱动的,有些是我们自己主导的,有些由竞争对手导入——当我们不知道背后的驱动因素的时候,就把它们归之为“随机”。这就需要销售、产品、客户端的判断,对那些没发生但有可能发生的促销、活动、产品切换、市场竞争、政策变动等提前预判,完成需求预测的“由判断结束”。
看得出,对于这样的时间序列,大部分的预测工作通过数据模型即可完成,只有很少的部分需要判断。在需求计划薄弱的企业,计划往往没有能力提取需求历史中的规律性部分,于是就不分青红皂白地依赖一线销售提需求,耗费了一线的大量资源,反倒让一线没法聚焦那些真正需要管理的内容。结果就是既做不到“从数据开始”,也做不到“由判断结束”,预测准确度低下也就不难理解了。
对于图1-15中的随机变动、趋势和周期性,我们有相应的预测模型,下面予以简单介绍。
当需求没有明显的趋势、季节性的时候,我们认为变动主要是随机的,可以用移动平均法和简单指数平滑法来预测。这是两种最简单,应用也最广泛的预测模型,特别是后者。
移动平均法就是用过去一段时间的需求,求平均值,作为下一期的预测。当每期的权重相同时,叫简单移动平均法;当权重不同时,就叫加权移动平均法。比如用简单移动平均法按照3个月进行预测的话,7月的预测就等于4、5、6三个月需求的平均值。这里的关键是:究竟用多长的需求历史?这是移动平均法的择优,一般用复盘的方式来确定。比如我们已经知道最近13周每周的实际需求,我们可以用更老的需求历史,来复盘预测过去13周的需求,看3周移动平均的误差最小,还是6周或8周,等等。具体的操作,以及如何计算预测误差,评估预测准确度,在我的《需求预测和库存计划:一个实践者的角度》一书中有详细的描述(第13~17页)。
简单移动平均法假定每期的需求历史占比相同。这并不一定对,因为直觉告诉我们,最新的需求历史往往更有参考性。这就衍生出加权移动平均法,比如上一期的权重是30%,倒数第二期的为25%,倒数第三期的为20%等,所有权重加起来等于1。至于权重如何分配,这又是模型择优的任务,可通过计算不同权重分配下的预测准确度来确定。
你马上发现,看上去很简单的移动平均,其实要用好的话,一点也不简单:我们得确定用多长的需求历史(也就是我们通常说的,多长的需求历史有代表性),我们还得确定权重分配。在实际应用中,很多企业都是靠经验,选定一定时长的需求历史,要么简单平均,要么加权平均,当然是有优化完善的空间的。
我们接着介绍的简单指数平滑法,其实是一种特殊的加权平均法:权重以几何数级衰减,越近的需求历史权重越大,越远的权重越小。究竟权重多大,衰减的速度多快,取决于平滑系数。该系数介于0~1,取值越大,最新需求历史的权重越大,预测模型越灵敏;取值越小,权重的衰减速度越慢,预测模型也越稳定。
在操作上,简单指数平滑法只用两个数据点:上期的实际值、上期的预测值,下期的预测是这两个值的加权平均。这逻辑就如踢足球:如图1-16所示,作为防守队员,你得预测下一步往哪儿跑——你是由预测驱动的,这取决于球现在停在哪里(上一期的实际值),以及你现在停在哪里(上一次的预测值)。有两个极端:一个是球跑到哪儿你就跟到哪儿,也就是百分之百地用上次的实际值作为预测值(平滑系数=1);另一个是不管球在哪儿,你按照你的老战略,也就是百分之百地沿用上次的预测(平滑系数=0)。你知道,两个极端都会让你输得很惨,你得在两者之间寻求平衡,这就是简单指数平滑法的择优,通过选择合适的平滑系数来实现。
图1-16 简单指数平滑法的逻辑就如防守队员的防守逻辑
跟移动平均法的择优逻辑一样,我们一般用复盘的方式,摘取一段有代表性的需求历史,用更老的数据来复盘预测,计算不同平滑系数下,每种简单指数平滑法的准确度,选择预测准确度最高,也就是预测误差最小的方法。
简单指数平滑法听上去很玄妙,其实操作起来很简单,自20世纪50年代发展起来以后,已经相当成熟。我们这里不再赘述方法论本身,我想说的是,为什么简单指数平滑法那么重要。
简单指数平滑法好,是因为逻辑上它更符合实际情况,比如越近的需求历史越有参考价值。这很重要,意味着它能更快地捡起新近发生过的事,及时更新预测。比如销售在前端做促销,但没有告诉你,而简单指数平滑法一看昨天的需求高了,就建议你今天多补些货过去。再比如你的生产线上昨天有个关键备件坏了,这种备件很少坏,属于典型的长尾,而它现在坏了,可能意味着这批设备开始老化,相应地,简单指数平滑法会把这个信号及时纳入预测中,提醒你得注意多备货了。
简单指数平滑法好,还因为它“简单”:只需要平滑系数一个参数即可。我们通过调整平滑系数,就可优化预测模型。比如业务变动大的时候,平滑系数就更大;业务比较稳定的时候,平滑系数可取更小的值。整体上,这一方法比移动平均法的预测准确度更高。
或许有人会问,既然有“简单”指数平滑法,那就也有“不简单”的指数平滑法了?是的,这就是我们接着要介绍的霍尔特模型、霍尔特–温特模型——分别来预测趋势、趋势加季节性的模型。
我们知道,简单指数平滑法适用于没有明显的趋势、没有明显的季节性的情况。因为如果有的话,简单指数平滑法就会有系统性的偏差,比如需求有增长或下降趋势时,简单指数平滑法会一直偏低或偏高(移动平均法也是)。
时间长了,需求往往会呈现一定的模式,不再光是随机变动。比如你开了个新店,或者导入了新产品,随着时间推进,口碑越来越好,业务呈现一定的上升趋势;再比如很多业务有一定的季节性,这时就需要更合适的模型来预测。
当时间足够长的时候,季节性的因素就往往不可避免。这个世界上,很难找到没有季节性的需求。有的是自然因素驱动,比如寒暑易节,热饮冷饮的业务交替变化,电力消耗、煤气消耗的变化;有的是人为因素驱动,比如季度考核导致季末冲量,6·18、“双11”等大促销。甚至连有些政府项目也有季节性:前半年走流程,审批预算;后半年做项目,突击花钱。
作为应对,霍尔特模型增加了一个平滑系数,来对付趋势问题;霍尔特-温特模型增加了两个平滑系数,一个应对趋势,一个应对季节性问题。
指数平滑法非常强大,还在于其自适应性。比如就趋势来说,我们可以用线性回归找出一条直线来模拟,其斜率是固定的,比较僵化;在霍尔特模型里,斜率本身是可调整的,我们用一条折线来模拟,拟合度自然要比一条直线高,预测准确度也更高。再比如我们常用的季节性模型中,季节性因子的权重是固定的(四个季度的权重加起来是1,但每个季度的权重是不变的);霍尔特-温特模型中,我们有专门的平滑系数,来动态调整季节性因子,这都让模型的拟合度更高,预测准确度也更高。
现在,我们在指数平滑法体系内,有了三类模型,能对付我们遇到的大部分需求预测问题,不管是随机变动,还是趋势性变动,或是季节性变动。[3]我们还可以调整相应的平滑系数,让这些模型更好地匹配实际业务。这也是为什么在预测领域,指数平滑法是应用最广的方法,没有之一。在每一种计划软件里,你都能看到指数平滑法的影子,而且是主要的背景算法。人工智能、机器学习,也都离不开指数平滑法。
对于规律性的东西,没有人知道得比数据还多。借助这些常用的预测模型,我们可以发掘数据中已知的规律,在预测上精益求精,优化交付和库存周转。当然,预测方法深似海,这里只是点到为止。更多的细节,比如指数平滑法的初始化,平滑系数的择优,实施中要注意的问题等,可参考我的《需求预测和库存计划:一个实践者的角度》一书。
此外,我还想强调三点。
其一,在预测方法上,简单的模型往往比复杂的更有效,你能懂的模型往往强过你不懂的。这里提到的移动平均法和指数平滑法,应该能够对付我们遇到的绝大多数问题。如果有人一开口就是傅里叶变换、机器学习、神经网络什么的,你得非常谨慎才对:那些都很重要,但它们更多的是喂饱你的第五个包子,你得先把简单的四个吃了。要选择合适的模型,避免系统和组织的两层皮问题:你没法理解的,就不会信任;不信任的话,就不会去用。
其二,预测模型要优化。优化本身并没有听上去那么难,一般是通过复盘,选择准确度更高的模型,Excel表里就可以做,关键是要做起来。这是计划职能可以独立控制的。对很多企业来说,通过简单的优化,把预测准确度提高几个百分点并不难——在预测方法的择优上,这些企业就如从没吃过药的原始人,只要给他们颗阿司匹林,就会有效果。可不要小看这几个百分点,那可能意味着几个百分点的净利润。
其三,预测模型知道它们知道的,不知道它们不知道的,所以一定要和职业判断相结合。请相信直觉:如果模型的结果看上去不对,它十有八九是错了。这是因为数据可能有问题,公式可能会套错,参数可能会选错,特别是在刚开始用模型的时候。业务和专业经验不可替代,这就是为什么不能光靠计算机来做计划。
实践者问
能把那些公式给我们,让我们写到程序里,来预测和补货吗?[4]
刘宝红答
公式没什么特别,比如指数平滑法都是半个多世纪前的研究,从理论上讲相当成熟,也不难。要说难,难在两个方面:(1)数据模型的结果很大程度上取决于数据本身的质量,而数据清洗这样的事,没法完全交给公式或计算机;(2)数据模型完全依赖数据,知道它知道的,不知道它不知道的,即缺少了判断的成分。就这样,光靠公式,“从数据开始”有点勉强(因为数据清洗工作等欠缺),“由判断结束”则完全做不到。你知道,这样的计划结果不会理想。
对于上面介绍的简单指数平滑法、霍尔特模型、霍尔特–温特模型等一系列时间序列预测法,大家都可以到一个网站(https://www.real-statistics.com/free-download/)上下载成套的模板和公式。这个网站是Charles Zaiontz博士开发的。这个人堪称极客般的存在,能把复杂的数理统计解释得非常清楚。
[1] 比如经济周期下,需求随之增长或降低。季节性是在一段时间内的规律性变动,而周期性往往没有固定的起止时间。要注意,季节性虽然有“季节”两字,却并不一定非得在一年内才能体现。在餐饮、零售、电商等行业,一周内的业务也会呈现“季节性”变化,比如某些天的需求会比别的天高。
[2] 我们也可以用Excel来分解数据。这里是一份英语的介绍:Time Series Decomposition Using Excel,https://www.searchlaboratory.com/us/2013/09/time-series-decomposition-using-excel/。
[3] 需要补充的是,指数平滑法是一个体系,可归纳为12种方法。这12种是由两个维度组合而来的:一个维度是趋势,另一个是季节性。趋势细分为4种:没有趋势、线性趋势、衰减趋势、指数增长趋势。季节性分为3种:没有季节性、叠加型季节性、乘积型季节性。4×3,就得到12种组合。这里讲的三种是最早发展起来,也是最为常用的三种,主要由卡耐基·梅隆大学的霍尔特教授和他的弟子温特发明。
[4] 这是一个电商公司的老总的问题。他的公司能做到每年几个亿的营收,已经有了相当大的规模。他和团队主要有计算机背景,所以想以计算机的方式来对付计划问题。我跟他讲,这些公式就如计算机语言、机械设计原理一样,本身并没有多少玄妙之处,真正的挑战是怎么用,这取决于数据质量和使用者的数理统计能力。