这是“天枢系统”系列博客的第三篇。前两篇分别从系统设计原则和数据清洗的角度,回答了“数据从哪来、如何变干净”;这一篇进入预测的核心,聊聊为什么需要 9 种模型、它们如何“模拟考试”,以及那个最重要的铁律:一个好预测必须同时满足准确度高和没有系统性偏差

0. 为什么预测是有用的?

在进入模型之前,先回答一个更根本的问题:预测到底有什么用?

答案可以从以下几个层面来理解。

0.1 决策的前提:没有预测,就没有理性选择

任何面向未来的行动,都隐含着一个对未来的判断。

你决定今天出门带不带伞,是基于对下雨可能性的预测;企业决定扩大生产,是基于对市场需求的预测;政府决定加息,是基于对通胀走势的预测。

即使你说“我不做预测”,你实际上也在默认“未来会跟现在差不多”——这本身就是一种预测,只是比较粗糙。

所以,预测的有用性首先在于:它是所有理性决策的起点。没有预测,决策就只能是碰运气。

0.2 将不确定性转化为可管理的风险

未来是不确定的,但不确定不等于完全不可知。预测的作用,就是把“不知道会发生什么”变成“知道各种结果的可能性有多大”。

一旦不确定性被量化,我们就可以评估风险、制定应对方案、选择期望收益最大的行动。预测的价值不在于消除风险,而在于让我们有能力管理风险。

0.3 创造时间差:提前行动,占据主动

预测让我们能够提前采取行动,而不是等到事情发生后才被动反应。

台风预测让居民提前转移;销量预测让工厂提前备料;流行病预测让政府提前储备医疗资源。时间差本身就是巨大的优势。在商业、军事、公共安全等领域,谁预测得更早、更准,谁就拥有主动权。

这一点在供应链上体现得尤其具体:采购需要提前下订单,生产需要提前排产,仓库需要提前备料。如果不知道未来卖多少,就只能等订单来了再行动——这在竞争激烈的市场里,往往意味着错失机会。

0.4 反馈循环:预测是学习与适应的核心机制

预测不仅用于行动,还用于检验和改进我们的认知。

当我们做出预测后,实际结果会给我们反馈:如果预测准确,说明模型捕捉到了真实规律;如果预测错误,说明模型有缺陷,需要修正。这种“预测—反馈—修正”的循环,是人类学习和科学进步的基本方式。

在天枢系统的设计里,这个循环被直接落地为模型竞赛机制:每个模型都要先在验证集上接受检验,表现好的留下,表现差的淘汰。预测系统本身也在通过反馈不断进化。

0.5 适应性的生存优势

预测能力是生物进化的产物。动物必须预测猎物的移动、天敌的出现、季节的变化,才能生存和繁衍。人类将这种能力发展到极致——我们预测天气、市场、社会趋势,甚至预测他人的行为,从而协调合作。

拥有更好预测能力的个体、组织或社会,往往更能适应环境变化,获得竞争优势。企业也是如此:预测更准的企业,库存可以压得更低,响应可以更快,资金效率更高

0.6 落到供应链:拿信息换库存

说了这么多,回到我们的主题。预测在供应链管理中的核心作用,可以概括为一句话:拿信息换库存

库存本质上是为了应对不确定性而存在的。预测越准,需要备的安全库存就越少,资金占用就越低。信息越充分,库存越可以压得低;信息越缺乏,库存就得备得越多。

所以,预测不是为了预测而预测,而是为了让供应链的每一个环节都能提前行动,用更低的成本满足客户需求。预测不一定准确,但有预测的决策质量,通常优于没有预测的决策质量。这就是预测最根本的用处。

1. 为什么需要 9 种模型?

很多预测系统的做法是:选一个“看起来不错”的模型,比如移动平均或指数平滑,然后对所有产品一视同仁。

但天枢系统的设计逻辑正好相反:没有一种预测方法能通吃所有产品。爆款和长尾的需求模式完全不同,成熟品和新品的规律也不一样。如果用一个模型硬套,结果要么是爆款预测偏低,要么是长尾预测虚高。

所以我们引入了 9 种预测模型,分成五个模型族:

  • 移动平均系:看近期均值,抹平波动
  • 指数平滑系:越近的数据权重越大
  • 季节模型系:记住以周为主的周期性规律
  • 间歇性需求系:专治偶尔卖一次
  • 朴素基线系:最简单的参照

每次预测时,系统会根据物料分层的结果,让该产品所在层级开放的所有模型同时上阵,用最近 30 天的实际销量做一场“模拟考试”,选出其中表现最好的一个,作为它本次的“专属预测师”。

具体哪些模型有资格参赛,由下一小节的物料分层规则决定。

1.1 物料分层:谁有资格参赛

9 种模型是候选池,但并不是每个产品都开放全部模型。物料分层的核心逻辑是:数据质量决定模型复杂度,模型复杂度决定预测可靠性。

不同产品的历史数据质量天差地别:

  • 爆款(A):天天有销量,数据密集、稳定,足以支撑复杂模型。
  • 腰部(B):偶有间断,数据一般,只够支撑中等复杂度的模型。
  • 稀疏(C):历史太短,数据点很少,模型没有足够样本学规律。
  • 长尾(I):大量零值,偶发非零,需求间歇性强,复杂模型容易把偶然噪声当成规律。

所以物料分层做的是匹配:数据质量高,开放复杂模型;数据质量低,只用简单模型兜底。

物料分层为什么值得做?不做分层,用同一种模型预测所有产品,会出现两种典型问题:

  • 对数据充分的产品:简单模型(如保底-月均法)预测太粗糙,浪费了数据里蕴含的丰富规律,导致预测准确度偏低、库存偏高。
  • 对数据稀疏的产品:复杂模型(如 Holt-Winters)在稀疏数据上容易过拟合,把偶然波动当成趋势,导致预测忽高忽低,计划员不敢用。

分层之后,每个产品都能用上“数据质量撑得起的最高级模型”:

好处说明
防止一刀切避免用错误模型预测错误产品
提高预测可靠性数据质量与模型复杂度匹配,减少过拟合和欠拟合
降低计算成本不是所有产品都跑 9 种模型,数据稀疏的只跑基础模型
保证长尾特殊处理间歇性需求用 Croston 系列,不被常规模型拖累
一句话:分层让爆款充分挖掘规律,让长尾不被复杂模型误导,让稀疏不因数据少而硬撑。

系统从清洗后的 SalesClean 表中,为每个产品计算三个指标。三个指标统一基于最近 365 天的取数窗口统计,保证可操作、可复现:

  • 数据天数:最近 365 天窗口内,从物料主数据中的上市日期到统计日的天数(不足 365 天按实际天数,超过则截断)。它反映产品在市场上存活了多久,与是否有销售无关。若产品上市日期缺失,系统会提示补全,否则无法正确分层。
  • 零值占比:零值天数 ÷ 数据天数。它反映在“上市后的有效窗口内”,需求是连续还是间歇。超过 40% 时,产品被标记为间歇性需求(I 级)。
  • 变异系数(CV):最近 365 天内,标准差与均值的比值,衡量需求的“稳定程度”。CV 越小,需求越稳定;CV 越大,波动越剧烈。

其中,CV 作为分层后的修正因子,默认规则如下:

  • CV ≤ 1.0:需求稳定,不触发降级。
  • 1.0 < CV ≤ 3.0:需求有一定波动,维持原层级。
  • CV > 3.0:需求波动剧烈,在零值占比和数据天数判定的基础上降一级(A→B,B→C)。C 级不再降级,I 级由零值占比单独决定,与 CV 无关。

CV 阈值(1.0 和 3.0)是系统默认值,可在配置中调整。CV 修正放在零值占比和数据天数判定之后执行。

三个指标共同决定产品的层级,判定顺序为:先看零值占比,再看数据天数,最后用 CV 修正。具体划分规则如下:

层级划分规则开放模型池
A 级(爆款)零值占比 ≤ 40%,且数据天数 ≥ 180 天且跨度 ≥ 270 天SMA、WMA、EMA、Holt、Holt-Winters、Croston、Croston-SBA、保底-上周同天、保底-月均法(全部 9 种)
B 级(腰部)零值占比 ≤ 40%,且数据天数 ≥ 60 天,但未达 A 级标准SMA、WMA、EMA、Holt、Holt-Winters、保底-上周同天、保底-月均法(7 种)
C 级(稀疏)零值占比 ≤ 40%,但数据天数不足 60 天SMA、WMA、保底-上周同天、保底-月均法(4 种)
I 级(长尾)零值占比 > 40%Croston、Croston-SBA、保底-月均法(3 种)

“稀疏”与“长尾”的区别:稀疏(C 级)是因为上市时间短、数据量少,但需求本身是连续的(零值占比不高);长尾(I 级)是因为需求本身间歇,大量日子没有销量(零值占比高)。两者维度不同,判定优先级为先看零值占比,再看数据天数,因此不会混淆。

物料分层只处理“正常在售”的物料。对于计划下市的物料,系统会在分层之前根据物料主数据中的生命周期状态单独标记,不参与常规模型竞赛,改用衰退策略或直接按订单执行。否则,下市物料因销量下滑、零值增多,可能被误判为间歇性需求,用错模型。

这样分层的结果是:数据越充分,模型池越大,竞争越激烈;数据越稀疏,策略越保守,宁可降级也不强行用复杂模型。物料分层是数据清洗之后、模型竞赛之前的独立计算步骤。

关于“9 种模型”的说明:这里的“9 种”指的是算法层面。每种算法内部还包含若干参数变体(如 SMA 有 3/7/14 三种窗口,EMA 有 0.1~0.7 四档 α)。在模型竞赛中,每种算法会先在内部调参,选出自己的最优参数配置,然后以该最优配置作为唯一代表与其他算法竞赛。因此,最终参赛的仍是 9 个算法代表,而不是全部参数组合。架构图中列出的参数范围,只是内部调参时的尝试选项,并非独立参赛选手。

2. 时间序列的系统性维度与随机波动

在正式介绍模型之前,先建立一个基本的分析框架:任何一条需求历史,都可以从三个系统性维度来理解,剩下的部分则是随机波动。

维度特征性质
水平需求忽高忽低,但没有明显的趋势和季节性✅ 系统性,可预测
趋势随时间推移,需求呈现增长或降低✅ 系统性,可预测
周期性(季节性)需求呈现交替性的高峰和低谷,有规可循✅ 系统性,可预测
随机波动除掉前三者之后的“剩余物”❌ 非系统性,不可预测

这个分解有着极其重要的实践意义:大部分变动其实是可知的,只有一小部分是真正不可知的。预测模型的任务,就是把“可知的系统性部分”尽量准确地提炼出来,把“不可知的随机波动”留给安全库存去应对。

3. 五个模型族,九种武器

3.1 移动平均系——“看近期均值”

模型原理适用场景参数
简单移动平均 (SMA)过去 N 天平均卖多少,明天大概也卖这么多销量稳定的成熟产品窗口大小 N(3/7/14)
加权移动平均 (WMA)还是近 7 天,但昨天比上周更重要需求有惯性的产品权重方案(线性递减)

注意:SMA 的窗口只设了 3/7/14 三档,没有 30 天。因为 SMA(30) 与朴素基线系的“保底-月均法”在数学上完全等价,如果同时保留,竞赛中就会出现重复选手。因此,让 SMA 专注短期窗口,月均法作为基准线独立存在,各司其职。SMA(14) 与月均法只是窗口长度不同,并非重复,因此可以保留。

3.2 指数平滑系——“越近记得越牢”

模型原理适用场景参数
一次指数平滑 (EMA)今天预测 = 昨天预测 + α × 昨天误差无趋势的平稳需求平滑系数 α(0.1~0.7)
双参数指数平滑 (Holt)增加趋势项 β,能跟踪上涨或下跌新品爬坡、老品衰退α(水平)、β(趋势)

3.3 季节模型系——“记住以周为主的周期性规律”

模型原理适用场景参数
温特斯法 (Holt-Winters)同时学习水平、趋势、季节指数有明显周规律或淡旺季的产品α、β、γ(季节) + 季节周期长度 p

关于季节周期:天枢系统的日粒度数据默认采用 周周期(p=7),因为日常消费品最普遍的是“周一高、周末低”的周规律。如果要捕捉年度淡旺季(如冬装/夏装),需要更长的历史数据和更长的验证窗口——这是当前版本的一个已知局限,暂以周周期为主。

3.4 间歇性需求系——“专治偶尔卖一次”

模型原理适用场景参数
Croston 方法只关注非零需求量和间隔天数长尾冷门产品平滑系数 α(约0.1)
SBA 修正法Croston 的去偏版本同上,但更准、更不偏α(约0.1)+ 修正系数

3.5 朴素基线系——“最简单的参照”

模型原理适用场景参数
保底-上周同天法直接取上周同天的销量周规律极强的产品
保底-月均法近 30 天均值数据极稀疏时的兜底方案
朴素基线系为什么存在? 因为它们是所有复杂模型的“及格线”。如果一个复杂模型的表现连“上周同天”都比不过,那它就没有存在的价值。

4. 模型竞赛机制:训练集 vs 验证集

模型不是靠感觉选的,而是靠一场严格的“模拟考试”。

历史数据(最近一年)
历史数据(最近一年)
训练集(前11个月)

—— 学规律 ——
让模型记住
过去的销售模式
训练集(前11个月)—— 学规律 ——让模型记住过去的销售模式
验证集(最近30天)

—— 考水平 ——
让模型预测这30天,
和真实销量对比
验证集(最近30天)—— 考水平 ——让模型预测这30天,和真实销量对比
Text is not SVG - cannot display

为什么验证集必须是最近 30 天?

  • 最近的数据最像未来:上个月的销售模式,比去年同期的模式更接近下周的真实情况。
  • 防止“过拟合”:如果一个模型只在前几个月准,最近不准,说明它没能跟上最新的变化。这就像学生死记硬背了模拟题,考试题目一变就不会了。
  • 公平比较:所有模型用同一套“考卷”,谁分数高谁胜出。

5. 双标准择优:准确度高 + 无系统性偏差

到这里,问题还没有结束。即使有了独立的验证集,也不能简单地“谁误差最小就选谁”。

如果只把一堆数据填进去,让软件根据预测误差最小来自动选模型,很容易造成过拟合——模型在验证集上表现不错,一到真实世界就原形毕露。一个模型的优劣,最终取决于实际案例的测试,而不是拟合度。

所以,天枢系统的模型竞赛,不是简单的“谁 MAPE 小就选谁”,而是必须同时通过两道关卡。

标准指标含义
准确度高MAPE(平均绝对百分比误差)预测值和实际值平均差百分之多少?越小越好。
无系统性偏差ME(平均误差)是总是偏高,还是总是偏低?好的模型应该不偏不倚。

为什么“无系统性偏差”和“准确度高”同等重要?

设想一个模型,预测值总是比实际值高 5%。它的 MAPE 可能是 5%——看起来很准。但长期下来,库存会多备 5%,资金占用就多了 5%。这个模型虽然“准”,却是有害的。

相反,一个模型有时高估 10%,有时低估 10%,MAPE 也是 10%,但它的平均误差接近零。长期来看,库存不多不少,反而更健康。

两个标准冲突时怎么办?天枢系统采用先后的优先级:第一轮先筛 ME——平均误差偏离零超过容忍阈值的模型直接淘汰,不管 MAPE 多漂亮;第二轮在通过 ME 检验的模型中,选 MAPE 最小的。默认容忍阈值设为该产品平均销量的 ±5%,具体可在系统配置中调整。

所以,一个模型即使 MAPE 再低,如果存在系统性偏差,也不能用。这两条标准,是天枢系统“模型竞赛”的铁律。

6. 预测区间:比“置信度”更诚实的表达

单点预测值给人虚假的确定感。天枢系统不显示抽象的“置信度”,而是给出 80% 预测区间。

怎么理解预测区间?

物料 M1024 预测明天销量:85.3 件
80% 预测区间:74 ~ 96 件

意思是:根据历史表现,未来实际销量有 80% 的概率落在 74 到 96 件之间。区间越窄,说明历史销量越稳,预测越靠谱;区间越宽,说明波动越大,越需要人工介入。

预测区间不是系统“有多自信”,而是历史数据告诉我们的客观波动幅度。它和安全库存的计算直接相关——安全库存本质上就是为预测区间里的“坏运气”准备的缓冲垫。

7. 当所有模型都不准时:降级原则

如果 9 种模型对一个产品的预测全都差强人意——MAPE 全超 25%,或者预测区间下限为负——系统不会假装很准,而是会主动“认输”并请求人工介入。

动作做法
临时降级暂时用“保底-月均法”给出一个粗糙但稳定的均值
明确标记标注“波动过大——建议人工判断”,高亮提醒计划员
保留决策权计划员可手动修改预测值,或将该产品改为按单采购

关于降级时使用“保底-月均法”的说明:此刻的月均法不再以“竞赛选手”的身份参与评估,而是作为固定的兜底规则被调用。降级时,系统不再依据验证集表现来评判它,只把它当成一个稳定基准,为计划员提供参考;真正负责决策的是人,待人工调整后再替换。这样,“降级”不是“从九个模型里选了一个差的”,而是“明确承认九个模型都不行,先给一个粗糙的底线,然后交给人”。

核心原则是:宁可用一个粗糙但稳定的平均数,也不要一个看起来很精确但实际已经跑偏的算法结果

8. 模型选择的三个实用原则

总结天枢系统在模型选择上遵循的三个原则:

  1. 方法简单,容易理解。复杂的模型往往不如简单的,你不懂的模型往往不如你懂的好。可解释性是推广的前提。
  2. 关系简单,容易理解。模型内部各个参数之间的关系要清晰,能说清楚每个参数在做什么。
  3. 决策简单,容易理解。从模型输出到补货建议的逻辑要透明,让计划员知道“为什么建议订这么多”。
对于大多数企业来说,用好基本模型,配以组织流程措施,远比追求复杂精致的模型重要。预测的最终目的不是模型本身,而是让库存更低、服务水平更高。

9. 天枢系统模型竞赛架构

天枢系统模型竞赛架构
天枢系统模型竞赛架构
SalesClean 表
(清洗后数据)
SalesClean 表(清洗后数据)
训练集/验证集切分
前11个月训练,近30天验证
训练集/验证集切分前11个月训练,近30天验证
九种算法同时上阵
每种算法内部先调参
选出最优参数配置

调参范围示例:
· SMA:3/7/14天窗口
· WMA:固定7天线性递减权重
· EMA:0.1/0.3/0.5/0.7
· Holt:多组 α/β
· Holt-Winters:多组 α/β/γ
· Croston/SBA:α≈0.1
· 保底方法:无参数
九种算法同时上阵每种算法内部先调参选出最优参数配置调参范围示例:· SMA:3/7/14天窗口· WMA:固定7天线性递减权重· EMA:0.1/0.3/0.5/0.7· Holt:多组 α/β· Holt-Winters:多组 α/β/γ· Croston/SBA:α≈0.1· 保底方法:无参数
九种算法以最优配置参赛
每个算法仅一个代表选手
九种算法以最优配置参赛每个算法仅一个代表选手
第一轮:ME 偏差检验
淘汰系统性偏差超阈值的模型
(默认阈值:±5%平均销量)
第一轮:ME 偏差检验淘汰系统性偏差超阈值的模型(默认阈值:±5%平均销量)
第二轮:MAPE 排序
在通过 ME 检验的模型中
选 MAPE 最小的
第二轮:MAPE 排序在通过 ME 检验的模型中选 MAPE 最小的
🏆 冠军模型出炉
负责该产品本次的预测
附带 80% 预测区间
🏆 冠军模型出炉负责该产品本次的预测附带 80% 预测区间
⚠️ 降级为保底-月均法
标记“波动过大”
请求人工介入
⚠️ 降级为保底-月均法标记“波动过大”请求人工介入
所有模型均未通过检验
所有模型均未通过检验
Text is not SVG - cannot display

10. 总结

这一篇讲了天枢系统的预测模型设计哲学:

  • 9 种模型,作为候选池,覆盖平稳、趋势、季节、间歇性四类需求模式。
  • 物料分层,基于数据天数、零值占比和变异系数,决定每个产品开放候选池里的哪些模型参赛。
  • 训练集和验证集,用模拟考试选出最近 30 天里最准的模型。
  • 双标准择优,先筛 ME 无系统性偏差,再比 MAPE 准确度。
  • 预测区间,比置信度更诚实,为安全库存提供计算依据。
  • 降级机制,当所有模型都不准时,主动示弱,请求人工介入。

在下一篇博客中,我们将进入预测的下游——库存计划的设计逻辑。安全库存公式怎么推导?订货点为什么不是拍脑袋?长尾产品的库存策略又该怎么定?敬请期待。


天枢系统,是一个基于 SQL Server 的销售预测与库存计划引擎。它从金蝶 ERP 取数,经过数据清洗、物料分层、九模型竞赛择优,输出未来 7 天的销量预测和库存建议。项目尚未上线,正在持续迭代中。