首先还是简单说一下范围、目的和目标。
本来应该至少有历史销售数据、库存数据、生产数据三个部分的。在需求预测部分先只说历史销售数据;而历史销售数据至少有客户下单数据、首次承诺数据、发货数据三种选择。笔者偏向于以发货数据为基础进行预测。
----客户下单的数据不是更代表客户的真实需求吗?而计算预测准确率则往往以首次承诺数据为准,那么为什么还是选择发货数据呢?一个解释是:发货数据综合了客户的实际需求以及(潜在)要求的服务水平,但这实际上只是说明了发货数据是一个可选择的输入。更重要的原因是:另外两个数据不好处理。客户下单的数据多种多样,有的客户习惯于在下单时留些余量,包括数量和时间;还有的客户随时想要就要,都是急单;有的客户是定量法,有的客户是定时法+MPQ;有的客户月底直接把计划给他们的数据丢过来占着产能和材料,发货前再临时调整。这些个性化的信息往往只是停留在销售人员个人的经验之中,一来收集需要工作量和时间成本,二来也不是每个人都愿意告诉他人。首次承诺日期也有不足之处,例如对于客户需求变更,需要把变更后的首次承诺放进去,因为这个行为除了可以用来考核销售员以外没有什么作用,又往往是销售员自己填写,所以经常会有不易识别的错误数据混进去(如客户拆单,结果又不影响计算预测的时候),销售人员之间有风格差异,而且这些错误不一定有邮件或者传真作为证据,即使是当事人也会记得不准确。综合评价下来,并不比发货历史数据更好。
销售预测是为了得到一套更好用的计划,而不是以其准确度来评价的。数据清洗工作则是为了销售预测更方便,基于这个预测做出来的计划更实用。
假设客户的真实需求是f(x),市场波动自身是g(x),预测结果的偏差是ε(x)的时候,如果ε(x)< g(x),可以暂时认为进一步处理的意义较小。因此找到g(x)的某些特征,将之作为目标的边界,是清洗时要做的事情之一;同样的,清洗工作也有时间限制的要求。
要得到g(x),首先想到的是求发货数据的标准差。因为g(x)特性的不同,标准差也并非全都适用,这一点不属于本篇的内容,本篇仍以标准差为例。
在课本中,数据结构是这样的:
T1 |
T2 |
T3 |
T4 |
T5 |
T6 |
STD |
Average |
|
PDG |
128572 |
105487 |
111567 |
152017 |
105790 |
150802 |
19730 |
125706 |
而实际的数据结构是这样的(为避免过于复杂,未分客户):
T1 |
T2 |
T3 |
T4 |
T5 |
T6 |
T7 |
T8 |
T9 |
T10 |
T11 |
T12 |
|
PDG1 |
2298 |
850 |
2522 |
1160 |
11 |
2840 |
4480 |
9820 |
6760 |
1747 |
||
PDG2 |
1920 |
998 |
1306 |
1156 |
1920 |
|||||||
PDG3 |
4464 |
3442 |
2318 |
2880 |
1296 |
|||||||
PDG4 |
490 |
|||||||||||
PDG5 |
2400 |
4200 |
1200 |
1800 |
1800 |
|||||||
PDG6 |
6912 |
13248 |
10368 |
1920 |
2860 |
1920 |
5059 |
3072 |
6816 |
4992 |
为什么会出现这样的情况呢,我们需要回归到销售的上家客户的采购行为会有定量和定期两大类策略。这需要被分辨出来,进一步的,可以就其中的混合方式做成连续规则。如果把标准差/平均值作为一个维度,次数/总次数作为另一个维度,可以得到以下结果:
SKU |
STD/AVG |
CNT/Terms |
PDG1 |
0.88 |
0.83 |
PDG2 |
0.27 |
0.42 |
PDG3 |
0.37 |
0.42 |
PDG4 |
0.00 |
0.08 |
PDG5 |
0.45 |
0.42 |
PDG6 |
0.62 |
0.83 |
标准差/平均差在0.4以下的时候,定量是主要模式;g(x)需要同时考虑客户端消耗量和发货周期的变化,存在三方库时需要考虑三方库的消耗量,而近期消耗量往往占比较高。
标准差/平均差较大的时候,定时是主要模式,g(x)主要考虑预测颗粒度和客户端消耗量,存在三方库时也需要考虑三方库的消耗量。特别的,当次数/总次数接近于1的时候,通常存在MilkRun甚至JIT(现在被改名JIS了?)这种定时的极端模式。
以上也会影响销售预测时颗粒度和预测方法的选择,这是后面章节的内容了。
另外还要考虑一些周期性因素(如去年的趋势线)和产品生命周期带来的影响。
接下来开始清洗行动(必要时中间可能有次序调整):
1、手工调整特例数据,主要是退货、换货、调账和转库;清除不必要的零值;处理节假日,如上表中T6列。
2、决定初始颗粒度,通常是1天。
3、上期趋势线权重系数平整化(如可能)。
4、产品生命周期影响系数(如可能)。
5、按SKU做ABC分类(如果未分类),按SKU按客户做数据透视,和均值、标准差的计算
6、按SKU抓出所有发货量超出均值正负0. 67倍标准差的发货内容。
7、按ABC分类,可能的影响(大/小客户,停线/失销/呆滞)和发生频次分别进行打分,取其积,得到重要度排序。
8、对上面重要度较高的项目,分SKU调整(通常是增加,除了A类5Km以内的JIT)颗粒度和按客户(包括送达地点的不同)拆分进行迭代,直至重要度排序达到极限。
9、如必要且时间允许,可以调查排序靠前的订单发生情况(这里常见是销售或是其他人员的处理错失,只要每次都问同类数据,几次后一半会改正的)。
永远不要把有限的时间投入到无限的逼近中去。
特别提醒:清洗过程中一定要注意存盘和备份。