自下而上 vs 自上而下 vs 最优组合预测策略解析

在多层级销量预测中,自下而上、自上而下与最优组合是三种核心的预测协调策略,旨在解决不同层级(如单品、品类、总店)预测结果不一致的问题。其原理与优缺点对比如下:

策略 核心原理 优点 缺点
自下而上 (Bottom-Up) 仅在最底层(如单品/SKU)训练预测模型,高层级(如品类、总店)的预测值通过汇总底层预测结果得到。 1. 简单直观 ,易于实现。 2. 保证一致性 ,高层预测天然等于底层预测之和。 3. 保留底层细节,对单品层面的促销或事件响应更敏感。 1. 误差累积 :底层模型的预测误差在向上汇总时会传递并可能放大,导致高层预测不稳定、波动大。 2. 依赖底层模型质量:若底层数据稀疏或噪声大,整体预测质量会受限。
自上而下 (Top-Down) 仅在最高层级(如总店)训练一个聚合模型得到预测,然后按照历史比例(如销售额占比)或预测比例将总量拆分至下层各级(品类、单品)。 1. 高层预测稳健 :聚合数据通常噪声更小、模式更稳定,总预测往往更准确。 2. 天然满足资源约束:适合预算或库存总量固定的分配场景。 1. 丢失个体特征 :假设下层结构比例固定,无法捕捉单品特有的趋势或对促销事件的响应,导致下层预测可能不准确。 2. 结构僵化:历史比例可能无法反映未来的结构性变化。
最优组合 (Optimal Combination) 允许所有层级独立生成预测,然后通过一个优化模型(如基于最小二乘的线性回归)对所有层级的原始预测进行加权调整,得到一个既满足层级加总一致性,又使整体预测误差最小的修正预测集。 1. 平衡精度与一致性 :在尊重各层级独立预测信息的同时,强制其满足加总约束。 2. 提升高层预测精度 :通过组合信息,常能显著降低高层级的预测误差。 3. 灵活:可以纳入各层预测的不确定性(误差协方差)进行优化。 1. 计算复杂 :需要估计协方差矩阵并求解优化问题,实现和计算成本较高。 2. 依赖底层预测质量:若底层预测质量极差,优化效果可能有限。

策略选择与代码示例

选择策略需权衡业务重点、数据质量和计算资源。若业务强依赖单品计划且底层数据质量高,可选自下而上 ;若更关注总量控制且高层模式稳定,可选自上而下 ;若需同时保证多层级决策的一致性与整体精度,最优组合是最佳实践。

以下是一个使用 hierarchicalforecast 库实现最优组合预测的简化示例:

python 复制代码
import pandas as pd
import numpy as np
from hierarchicalforecast.core import HierarchicalForecast
from hierarchicalforecast.methods import BottomUp, TopDown, OptimalCombination

# 1. 准备数据:假设已有包含日期、三个单品预测值的DataFrame
# Y_hat_df 结构示例:
# ds | SKU_A | SKU_B | SKU_C
# 2024-01-01 | 10.5  | 15.2  | 5.8
# 2024-01-02 | 11.3  | 14.8  | 6.1
Y_hat_df = pd.read_csv('your_forecasts.csv')  # 替换为你的预测数据
Y_hat_df['ds'] = pd.to_datetime(Y_hat_df['ds'])

# 2. 定义层级聚合矩阵 S(描述SKU如何加总为品类和总量)
# 此处简化:假设三个SKU直接加总为总销售额(单品类场景)
# 实际应用中,库会根据层级文本描述自动生成S矩阵
S = np.array([
    [1, 0, 0],  # SKU_A
    [0, 1, 0],  # SKU_B
    [0, 0, 1],  # SKU_C
    [1, 1, 1]   # Total (所有SKU之和)
])
# 注:hierarchicalforecast 通常使用 `aggregate` 函数或指定层级关系文本自动构建S,此处为原理展示。

# 3. 应用最优组合方法进行协调预测
# 首先需要将原始预测和层级信息封装
# 这里假设已按库要求格式准备好数据reconciler = HierarchicalForecast(
    models=Y_hat_df.set_index('ds'),  # 基础预测 reconciliation_methods=[OptimalCombination()]
)
reconciled_forecasts = reconciler.reconcile()

# reconciled_forecasts 即为协调后的一致预测结果
print(reconciled_forecasts.head())

在实际业务中,最优组合策略已被证明能有效降低高层预测误差(例如,在案例中使品类预测的WMAPE从18%降至11%),同时保证各层级预测完全一致。


参考来源

相关推荐
leobertlan6 小时前
痛苦系列 | DSP-03 跨越单位圆:Z变换与零极点分析
算法·程序员
镜象科技6 小时前
职业院校AI心理健康解决方案怎么选?三个特殊场景与三类路线
人工智能
蛋蛋的就会顺顺的7 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
Leo.yuan7 小时前
企业Data Agent架构选型:帆软Dora基于NL2BI的现有BI体系复用方案
大数据·人工智能
朱涛的自习室7 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
米小虾7 小时前
上下文:Agent 的眼睛里到底装着什么
人工智能·agent
米小虾7 小时前
Agent = 大脑 + 眼睛 + 手脚:一篇看懂现代 AI Agent 的骨架
人工智能
小小测试开发7 小时前
安全评测得分 0.9556 掉到 0.3257,只改了 top_k 和 prompt_style 之外的题面比例
人工智能·安全·prompt
开发小能手1237 小时前
答案daanC语言
数据结构·算法
slacker-kian8 小时前
[实践]-用LLM对文本结构化:把多段文本描述变成规范的 JSON 知识库
人工智能·llm·prompt·结构化·pydantic·one-shot 提示