📦 需求预测概述

📚 第1章 · 模型选型与调优实战

📌 定义

需求预测 是利用历史数据、统计模型与机器学习算法,对未来特定时期内的产品/服务需求量进行量化估计的过程。它融合了时间序列分析、因果推断与业务洞察。

  • 时间维度: 短期(日/周)、中期(月/季)、长期(年)
  • 粒度: SKU级别、品类、区域、渠道
  • 方法: 统计模型(ARIMA, ETS)、ML(XGBoost, LSTM)、深度学习

⚡ 重要性

需求预测是供应链的“神经中枢”,直接影响:

  • 库存优化: 降低缺货与积压,减少20%~30%库存成本
  • 生产排程: 提升产能利用率,减少紧急换线
  • 物流效率: 合理配置仓储与运输资源
  • 财务健康: 精准现金流与营收规划
🏭 供应链应用场景 典型业务环节
场景预测目标典型粒度业务价值
📦 库存补货安全库存 / 再订货点SKU·日/周缺货率降低40%
🏭 生产计划产线负荷 / 物料需求产品族·周产能利用率+18%
🚚 运输调度运力需求 / 路线流量区域·日运输成本↓12%
🛒 促销规划促销弹性 / upliftSKU·周ROI提升25%
🌾 原材料采购长鞭效应缓冲品类·月采购波动降低30%
* 基于多家制造与零售企业实践数据
🧠 预测系统架构 ML驱动 pipeline
📡 数据采集 ⚙️ 特征工程 🧠 模型训练 📊 部署监控 🔄 在线学习 / 反馈闭环 ⏱️ 实时/批量 📈 准确率/偏差
⚠️ 预测挑战 & 常见误区

🧗 核心挑战

  • 数据质量 — 缺失值、异常点、历史偏误
  • 需求波动 — 季节性、促销、突发事件
  • 长鞭效应 — 信息扭曲导致库存放大
  • 多粒度耦合 — 自上而下 vs 自下而上
  • 模型选择 — 统计 vs ML vs 深度学习

🚫 常见误区

  • ❌ “预测越准越好” — 忽略业务成本与可解释性
  • ❌ “历史重复未来” — 忽视结构性变化
  • ❌ “复杂模型一定优于简单模型” — 过拟合陷阱
  • ❌ “只关注点预测” — 忽略预测区间与不确定性
  • ❌ “一次性建模即可” — 缺少持续监控与重训练
🧪 实战代码片段 LightGBM 快速原型
# 需求预测 LightGBM 示例 (特征工程简化)
import lightgbm as lgb
import pandas as pd
from sklearn.metrics import mean_absolute_error

# 加载历史销售数据 (假设df包含日期, sku, 销量, 价格, 促销等)
df = pd.read_csv('sales_history.csv')
# 特征构造: 滞后特征, 滚动均值, 星期几, 月份
df['lag_1'] = df.groupby('sku')['销量'].shift(1)
df['rolling_mean_7'] = df.groupby('sku')['销量'].transform(lambda x: x.rolling(7, min_periods=1).mean())
df['dayofweek'] = pd.to_datetime(df['日期']).dt.dayofweek

train = df[df['日期'] < '2024-01-01']
valid = df[(df['日期'] >= '2024-01-01') & (df['日期'] < '2024-03-01')]

features = ['lag_1', 'rolling_mean_7', 'dayofweek', '价格', '促销标识']
X_train, y_train = train[features], train['销量']
X_valid, y_valid = valid[features], valid['销量']

model = lgb.LGBMRegressor(n_estimators=200, learning_rate=0.05, max_depth=5)
model.fit(X_train, y_train, eval_set=[(X_valid, y_valid)], callbacks=[lgb.early_stopping(10)])

preds = model.predict(X_valid)
print(f'验证集 MAE: {mean_absolute_error(y_valid, preds):.2f}')