第四章:需求预测基础
各位工程师朋友,大家好。今天我们来聊聊需求预测。说实话,库存管理里最让人头疼的就是这个环节。预测准了,皆大欢喜;预测偏了,要么库存积压,要么断货挨骂。我做了十几年供应链,见过太多因为预测不准翻车的案例。
需求预测说白了就两大类:定性法和定量法。定性法靠人的判断,定量法靠数据说话。两者各有各的用武之地,我们一个一个来看。
4.1 定性预测法
定性预测,就是没有历史数据,或者数据不可靠的时候,靠专家、靠市场调研来拍脑袋。嗯,这个「拍脑袋」其实是有讲究的。
4.1.1 德尔菲法
德尔菲法,名字听着高大上,其实核心就是「多轮匿名投票」。我参与过一个新产品上市的项目,当时没有任何历史销售数据,就用德尔菲法。
具体怎么做?
- 找一群专家,比如销售总监、产品经理、行业分析师
- 每个人独立给出预测,不互相讨论
- 收集结果,统计出中位数和四分位距
- 把统计结果反馈给所有人,再让他们重新预测
- 重复几轮,直到意见收敛
为什么要匿名?因为怕权威专家一开口,其他人就不敢说话了。我见过一个项目,大老板先说了个数字,下面的人全跟着说差不多,结果预测偏差了40%。
4.1.2 市场调研法
市场调研,就是直接问客户:「你打算买多少?」听起来简单,但坑很多。
我曾经帮一家消费品公司做调研,客户嘴上说「肯定会买」,实际购买率只有30%。为什么?因为客户回答时没有成本约束,说「买」又不花钱。
所以做市场调研时,我建议用「购买意向量表」:
- 1分:肯定不会买
- 2分:可能不会买
- 3分:不确定
- 4分:可能会买
- 5分:肯定会买
只有选4分和5分的客户,才计入潜在需求。而且还要打个折扣,一般打7-8折比较靠谱。
4.2 定量预测法
有历史数据了,我们就可以上定量方法。这里我重点讲两个最常用的:移动平均和指数平滑。
4.2.1 移动平均法
移动平均,就是取最近N期的平均值作为下一期的预测。简单粗暴,但有效。
公式长这样:
F(t+1) = (A(t) + A(t-1) + ... + A(t-N+1)) / N
其中F是预测值,A是实际值,N是期数。
N怎么选?这是个关键问题。N越大,曲线越平滑,但对变化反应越慢。N越小,反应快,但容易受随机波动影响。
加权移动平均的代码示例:
def weighted_moving_average(data, weights):
"""
data: 历史数据列表
weights: 权重列表,从最近到最远
"""
n = len(weights)
if len(data) < n:
return None
recent = data[-n:]
forecast = sum(r * w for r, w in zip(recent, weights)) / sum(weights)
return forecast
# 示例:最近3期,权重分别为0.5, 0.3, 0.2
data = [120, 130, 125, 140, 135]
weights = [0.5, 0.3, 0.2]
result = weighted_moving_average(data, weights)
print(f"下一期预测值:{result:.1f}")
4.2.2 指数平滑法
指数平滑,可以理解为移动平均的升级版。它给所有历史数据都分配权重,但越近的数据权重越大,而且权重呈指数衰减。
公式:
F(t+1) = α * A(t) + (1-α) * F(t)
α是平滑系数,取值0到1之间。α越大,模型对最近数据越敏感。
α怎么选?我个人的习惯是:
- 数据波动小:α取0.1-0.3
- 数据波动大:α取0.3-0.5
- 数据有趋势:考虑用霍尔特指数平滑(双指数平滑)
4.3 预测误差分析
预测完了,得看看准不准。误差分析不是为了批评谁,而是为了改进模型。
常用的误差指标有这几个:
| 指标 | 公式 | 说明 |
|---|---|---|
| MAE | Σ|A-F|/n | 平均绝对误差,直观易懂 |
| MSE | Σ(A-F)²/n | 均方误差,放大大误差的影响 |
| RMSE | √MSE | 均方根误差,单位与原始数据一致 |
| MAPE | Σ|(A-F)/A|/n × 100% | 平均绝对百分比误差,适合比较不同量级的数据 |
我个人最常用的是MAPE,因为它能直观反映误差百分比。比如MAPE=10%,意味着平均预测偏差10%。
但要注意,MAPE有个致命缺陷:如果实际值A接近0,百分比会变得无穷大。所以遇到有零值的数据,我建议用MAE或者sMAPE(对称MAPE)。
下面我用一张图来总结本章的知识体系:
最后说一句,没有完美的预测方法。我见过有人花三个月调参数,把历史拟合误差降到2%,结果未来预测偏差20%。为什么?因为过拟合了。
我的建议是:先用简单方法,比如移动平均,跑起来再说。等积累足够数据,再逐步优化。别一开始就上复杂模型,容易把自己绕进去。
- 定性法适合新产品、无历史数据场景
- 定量法适合有稳定历史数据的场景
- 误差分析要关注系统性偏差,不只是看数值大小
- 模型越简单,越容易落地和维护
公众号:蓝海资料掘金营,微信deep3321