供应链需求预测技能
技能概述
本技能提供端到端的供应链需求预测分析能力:从数据读取与清洗、特征工程、多模型预测,到库存优化建议与可视化报告输出。
触发条件
以下类型的用户请求应激活本技能:
- "帮我预测下个季度的需求/销量"
- "根据历史数据分析未来库存需求"
- "我有销售数据,帮我做需求预测"
- "计算安全库存和补货点"
- "生成需求预测报告"
- "供应链库存优化建议"
- "这个 SKU 的销量趋势和预测"
数据输入规范
支持的数据格式
标准 CSV/Excel 格式(最常见):
| 字段名 | 说明 | 必选 | |--------|------|------| | date / 日期 | 日期(支持 YYYY-MM-DD, YYYY/MM/DD, YYYYMM) | 是 | | sku / 品号 / product_id | 产品编号 | 推荐 | | sales / 销量 / demand / 需求量 | 历史销售量 | 是 | | price / 价格 | 单价 | 否 | | promotion / 促销 | 促销标记(0/1 或 Y/N) | 否 | | stock / 库存 | 当前库存量 | 否 | | lead_time / 提前期 | 补货提前期(天) | 否 |
数据要求
- 历史数据建议至少 12 个时间点(月/周/日均可)
- 时间序列需连续,允许缺失值(脚本会自动填补)
- 多 SKU 数据需包含产品标识列
预测方法选择指南
| 数据量 | 季节性 | 推荐方法 | |--------|--------|----------| | < 24 个时间点 | 无 | 移动平均 / 指数平滑 | | < 24 个时间点 | 有 | Prophet(自动处理季节性) | | 24–100 个时间点 | 可选 | ARIMA / Prophet | | > 100 个时间点 | 有 | Prophet / XGBoost / LightGBM | | > 200 个时间点 + 多特征 | 有 | XGBoost / LSTM |
默认策略: 当数据量不明确时,优先使用 Prophet(鲁棒性最强,对季节性和节假日处理友好)。
工作流程
Step 1:理解需求与数据
- 读取用户提供的数据文件(使用 Read 工具或 Python 脚本)
- 询问或识别以下关键信息:
- 预测目标(SKU/产品/整体需求)
- 预测粒度(日/周/月)
- 预测周期(预测未来几期)
- 是否有已知的促销/节假日计划
- 业务关注重点(最小化缺货?最小化库存?)
Step 2:数据探索与清洗
执行 scripts/eda_and_clean.py 进行数据质量检查:
python scripts/eda_and_clean.py --input <数据文件路径> --output cleaned_data.csv
脚本会输出:
- 数据基本统计(均值、标准差、缺失率)
- 时间序列完整性检查
- 异常值检测(IQR 方法)
- 季节性分解图
- 清洗后的数据文件
Step 3:运行预测
执行 scripts/forecast.py 进行多模型预测:
# 自动选择最优方法(推荐)
python scripts/forecast.py --input cleaned_data.csv --periods 12 --auto
# 指定方法
python scripts/forecast.py --input cleaned_data.csv --periods 12 --method prophet
# 可选方法: moving_average, exponential_smoothing, arima, prophet, xgboost, lightgbm, lstm
输出:
forecast_results.csv:预测值及置信区间forecast_plot.html:交互式预测可视化
Step 4:库存优化计算(可选)
执行 scripts/inventory_optimizer.py 计算安全库存与补货建议:
python scripts/inventory_optimizer.py \
--forecast forecast_results.csv \
--lead-time 7 \
--service-level 0.95
输出:
- 安全库存量(各 SKU)
- 再订货点(ROP)
- 经济订货量(EOQ,需提供成本参数)
- 补货建议表
Step 5:生成分析报告
执行 scripts/generate_report.py 生成完整 HTML 报告:
python scripts/generate_report.py \
--cleaned cleaned_data.csv \
--forecast forecast_results.csv \
--output demand_forecast_report.html
报告包含:
- 历史销售趋势分析
- 季节性和周期性分解
- 多模型预测结果对比
- 预测准确率评估(MAPE、MAE、RMSE)
- 库存优化建议(如提供相关参数)
- 关键 SKU 预警(需关注的高风险品项)
依赖安装
首次使用前,运行以下命令安装依赖:
pip install pandas numpy matplotlib plotly scikit-learn xgboost lightgbm prophet statsmodels torch openpyxl
若安装 Prophet 遇到问题:
pip install prophet --no-build-isolation
# macOS: conda install -c conda-forge prophet
若不需要深度学习(LSTM),可跳过 torch:
pip install pandas numpy matplotlib plotly scikit-learn xgboost lightgbm prophet statsmodels openpyxl
输出文件说明
| 文件 | 说明 |
|------|------|
| cleaned_data.csv | 清洗后的标准化数据 |
| forecast_results.csv | 预测结果(含置信区间) |
| forecast_plot.html | 交互式预测图表 |
| demand_forecast_report.html | 完整分析报告 |
| inventory_recommendations.csv | 库存优化建议表 |
参考资料
references/methods_guide.md:各预测方法的原理、适用场景和参数调优指南references/metrics_guide.md:预测准确率指标解释(MAPE、MAE、RMSE、Bias)references/inventory_formulas.md:安全库存、EOQ、ROP 等公式说明assets/sample_data.csv:标准输入格式示例数据
常见问题处理
数据量不足(< 12 个时间点): → 使用简单移动平均,明确告知用户预测置信度有限,建议收集更多数据
数据存在大量缺失值(> 30%): → 向用户确认缺失原因(停产?门店关闭?),根据业务逻辑决定是填补还是截断
存在明显异常值: → 展示给用户确认是真实业务事件(大促、疫情)还是数据错误,再决定是否保留
预测误差偏大(MAPE > 30%): → 检查是否有未纳入的外部影响因素,建议加入促销、节假日等特征变量
微信扫一扫