我在一家年销 20 亿的新锐消费品公司担任数据顾问。每年双十一结束后的第七天,老板不会去看战报,他只会盯着我:告诉你一个数字,这次大促我们备了 1.2 亿货,最后卖了 8,300 万,剩下 3,700 万怎么处理?这个数字背后的核心难题不是库存本身,而是预测系统在促销脉冲面前几乎完全失效。时间序列预测并不是新东西,但如何用它真正平滑掉促销脉冲,而不仅仅是回避它,是我在过去两年里反复测试、推演、推翻重来后才真正学会的事。
一、促销脉冲为什么成为库存管理的“隐形炸弹”
做电商供应链的人都知道一个基本事实:大多数时间序列模型是为平稳需求设计的。当你的商品日销量在 300-500 单之间波动时,移动平均或者 Holt-Winters 的拟合效果相当不错。但一旦双十一、618、品类狂欢日这类促销事件发生,日销量瞬间跳到 5,000 甚至 8,000 单,预测模型立刻陷入混乱。我见过最极端的情况是某食品品牌在 618 当天销量是日常的 27 倍,那一天的预测误差超过 400%。
为什么脉冲会成为“隐形炸弹”?因为它不只是产生一个高峰。脉冲的真正危险在于它之后带来的副作用:大促前的大量预购导致大促后的需求持续走低、单一渠道的流量聚焦导致其他渠道被误判为“下滑趋势”、以及脉冲期间的数据污染导致整个模型在未来几个月里都处于“振荡模式”。我有一家客户用的是标准的 ARIMA 模型做库存预测,双十一之后他们发现系统把 11 月的“高值”当作正常基准,导致 12 月的备货量高出实际需求近 60%,库存积压金额超过 600 万。
所以问题不是“要不要用时间序列”,而是“用什么样的时间序列,以及用什么样的策略,去处理促销脉冲这个真正的业务痛点”。

1. 脉冲的两个“余震”比峰值本身更致命
我花了很长时间才理解,高峰本身并不致命,致命的是高峰处理不当后产生的两种余震。第一种是“截断效应”:大促期间库存不够卖导致的销量天花板,使模型把真实需求低估了。我曾遇到过一款爆款面膜,大促当天在下午 4 点就售罄,模型看到的是日销 2,000 单,但通过渠道监控和用户浏览数据推算,当天实际需求接近 3,800 单。模型在备货时只认 2,000,下一次促销依然断货。第二种是“惯性偏差”:大促后的需求弱势期被模型当作“下降趋势”,安全库存被压低,结果导致补货反应滞后,形成二次缺货。
这些余震对库存管理的影响比高峰本身大一个数量级。大促的高峰最多持续 1-3 天,但截断效应和惯性偏差会影响后续一个补货周期的决策,对于快消品来说,这是一个月甚至两个月的连锁错误。
2. 核心结论:平滑脉冲不是抹去脉冲,而是精确预算脉冲
我在实战中得出的核心结论是:不要试图让模型忽略脉冲,而是要教会模型“认识脉冲”。 平滑脉冲这句话很容易产生误导。很多人理解为“让模型对脉冲不敏感”,比如用更粗粒度的聚合、更大范围的参数平滑、或者直接把大促数据当作异常值剔除。这是大错特错的。平滑的真正含义是:预测系统能够区分哪些是促销引起的系统性波动,哪些是随机噪声,然后针对性地对两类信号做不同的处理。最终目的是在库存决策层面实现“该激进的激进,该保守的保守”。
二、传统预测模型在脉冲面前的三个典型误区
我在和不少同行交流时发现,绝大多数人陷入的误区非常相似。我把它们归纳为三个典型的“伪方案”,帮大家快速避开这些坑。
1. 用更大的窗口去“包住”脉冲
这是最直觉的做法。模型跑出来发现双十一那天预测值偏低,于是把训练窗口从 30 天拉到 90 天,让大促数据占比降低,同时用更长的历史均值来“稀释”异常。听起来合理,但实际效果非常糟糕。我测试过一家服装品牌的数据:用 90 天窗口的移动平均预测全年销量,结果在 3 月(无大促)的误差反而比 30 天窗口更大,因为在非脉冲期间,90 天窗口把三个月前的促销余波也带进了预测。最终全年 MAE 反而上升了 12%。更大的窗口只会让模型更“迟钝”,而不是更“聪明”。
2. 用更复杂的模型弥补数据问题
另一个常见误区是遇到脉冲就换模型。ARIMA 不行换 Prophet,Prophet 效果不好换 LSTM。我承认某些复杂模型的拟合能力更强,但核心问题不是模型复杂程度,而是特征工程。如果你没有告诉模型“这个日期是一个大促日”,即使是 Transformer 级别的模型也无法自学这个知识。我曾经在同一份数据集上对比过纯 ARIMA 和加入了促销日历特征后的 ARIMA,后者的脉冲预测误差从 310% 直接降到 72%。所以模型不是问题,缺的是“特征”。
3. 把大促数据直接当作异常值剔除
这可能是最隐蔽也最危险的误区。有些团队在数据预处理阶段用 3-sigma 或者 IQR 方法把大促那几天标记为异常值并剔除,然后在剩余数据上训练模型。这产生了一个严重问题:模型从未见过大促数据,所以在预测下一个大促时完全依赖外推。我在一次 A/B 测试中验证过:剔除大促数据训练的模型 VS 保留并标记大促数据的模型,后者在 618 当天预测的误差只有前者的 35%。大促不是异常值,它是常态业务的一种模式。

三、时间序列工具箱的核心判断逻辑:给模型一副“促销眼镜”
基于上面的分析,我要给出我的核心判断逻辑:处理促销脉冲的关键,在于如何把你对促销事件的业务知识“注入”到模型中。我把这个过程叫作“给模型一副促销眼镜”。
1. 注入外部回归变量是最高性价比的操作
不管你用哪种时间序列模型,几乎都支持外部变量(exogenous variables)。对于促销脉冲,最重要的三个特征是:促销标识(是否大促日)、促销强度(用折扣率或预估流量放大系数表示),以及促销类型(平台大促、品牌日、达人带货)。我用一个非常简单的案例说明效果:某零食品牌原本只用历史销量做 ARIMA 预测,MAPE 约 23%。我在模型中加入了“是否为平台大促日”这个 0/1 变量,一个参数的变化,使得大促当天的预测 MAPE 从 210% 降到 85%。而再加入“促销强度系数”(根据历史大促的 GMV 倍数估算)后,MAPE 进一步降到 51%。这个优化成本几乎为 0,只是改变了一个参数配置。
第一步:收集过去所有促销事件的时间点和对应倍数。第二步:把促销日标记为 1,非促销日标记为 0。第三步:如果有更精细的流量数据,用折扣率或预估 GMV 倍数作为连续变量。第四步:将这些变量作为外部回归量放入模型。
2. Prophet 模型的“节假日效应”是天生为促销脉冲设计的
在我在实战中使用过的模型中,Prophet 对促销脉冲的适应能力是最强的,没有之一。根本原因在于 Facebook 在 2017 年发布这个模型时,专门设计了“节假日效应”模块。它的底层逻辑是把每一个特定的日期(比如双十一、双十二)不仅当作一个普通的月度或周度重复模式,而是当作一个独立的“事件”,为每个事件赋予自己的前向和后向窗口。这个机制和电商的促销脉冲天然吻合。
我曾用 Prophet 为一家美妆品牌做库存预测。在配置 Prophet 的 holidays 参数时,我把“618”作为一个独立的节假日,并设置了前 14 天(预热期)和后 7 天(回补期)的窗口。模型自动学习出 618 当天销量的乘数效应,以及预热期和回补期的衰减模式。这个配置只用了一次调参,就把大促阶段的预测 MAPE 从 95% 降到了 42%。Prophet 的节假日模块是你在电商库存预测里最应该尽快用上的工具。
3. 常态与脉冲的“双模式预测”才是真正的解法上限
当单个模型无法同时兼顾常态和脉冲时,我推荐拆成两个专门的模型:一个只训练非促销期的数据,负责日常库存滚动;另一个训练促销期和促销窗口内的数据,专门负责大促决策。两个模型通过一个简单的分类器(甚至可以是一个 if-else 规则)切换。,双模式预测的本质是把一个复杂的“含有脉冲的序列”拆成两个相对“干净”的子序列,分别建模。
我开发过一套实际的系统:日常模型用 Holt-Winters + 安全库存动态调整,脉冲模型用 Prophet + 外部回归变量。当系统检测到促销日历中未来 30 天有大型促销时,自动把库存预测的权重从日常模型切换到脉冲模型。切换不是二元的,而是平滑过渡,用一个 sigmoid 函数在促销日前 7 天开始逐步增大脉冲模型权重,促销结束后再逐步恢复。这套系统在一家日化品牌的 2024 年双十一实现了缺货率从 23% 降到 7%。

四、数据预处理:如何喂给模型干净的“脉冲”信号
模型选得再好,数据堵住了就没有意义。我先给出一个我自己踩过的坑。我曾为一家电商公司搭建预测系统,用的是 Prophet,外部变量也加上了。但跑出来的效果依然很差。排查整整一周才发现问题:他们的数据库里记录了大促当天的销量,但那一天正好有一部分商品因物流原因没有及时入库,导致前端库存显示为“有货但无法发出”,实际成交量为 0。这部分“假缺货”导致模型把 0 当作了一个促销期的正常值,后续的预测出现了系统性偏差。
1. 必须区分“真脉冲”和“假脉冲”
在电商数据中,真正需要模型学习的促销脉冲约占 70%,剩下的 30% 是被“污染”的信号。我总结了几种最常见的假脉冲:刷单和水军带来的非真实需求、库存不足导致的销量截断(需求 > 库存)、渠道数据延迟或重复计数、以及促销价变动导致的套利订单。这些假脉冲如果不净化,模型会把噪音当作信号。我的经验是:在数据预处理阶段花的时间,至少和模型调参一样多。
具体的净化方法是:对每个 SKU 建立一个“脉冲净化规则”,包含三个维度,是否属于已知促销活动(链接促销日历)、当日库存是否满足 100% 发单(用于判断截断)、以及订单来源渠道是否正常(排除异常渠道)。符合任何一个“假脉冲”条件的数据点,都要在训练阶段被标记为“不可信”,同时单独存储用于模型验证。
2. 滑动窗口异常检测并非万能
很多人一谈到数据净化就想到滑动窗口异常检测。但经典的 +/- 3-sigma 方法在处理促销数据时就是一场灾难。因为促销脉冲的幅度往往超过 10 个 sigma,3-sigma 方法会直接把 618 和双十一的所有数据当作异常值剔除。更好的方案是使用分位数法,比如以过去 7 天的销量中位数为基础,加上一个基于促销强度调节的阈值。我常用的一个经验公式是:阈值 = 中位数 + 3 × IQR × (1 + 促销强度系数)。促销强度系数取值范围 0-2,由历史大促的峰值决定。这样就能让模型在非脉冲期严格过滤异常,在脉冲期放宽阈值,保留真正的促销信号。

五、实战案例:一个品牌的全年预测从“崩盘”到“可控”的全流程
为了让方法论更有参考价值,我分享一个完整的案例。这是一个年销售额约 20 亿的个护品牌,旗下有 400 多个 SKU。2023 年他们用了一套基于单纯 Holt-Winters 的预测系统,结果在 2023 年双十一出现了严重的库存危机:畅销品断货率 37%,滞销品库存周转天数从正常的 45 天飙升到 92 天,全年预测误差率高达 54%。
1. 数据诊断:发现问题出在“脉冲分类”上
我接手后的第一件事不是调模型,而是先做数据诊断。我拉出过去 12 个月的销量数据和促销日历做交叉分析。结果发现他们一共有 5 种促销脉冲:平台大促(双十一、618 等)、品牌自己的超级品牌日、达人直播带货、新品上市预热、以及清仓促销。这 5 种脉冲的特征完全不同。平台大促的峰高但持续短,直播带货的峰相对低但预热期长,清仓促销则完全是另一个逻辑(价格驱动而非需求驱动)。原有的模型把所有脉冲当作同一类信号,结果就是全部预测失准。
2. 解决方案:分层建模 + 脉冲特征工程
我做了四件事:
第一步,对 400 个 SKU 按销量贡献分层。 前 20% 的 SKU(约 80 个)占销量 75%,用双模式预测(日常 Prophet + 大促 Prophet 联合)。中间 30% 的 SKU 用单一 Prophet 加促销日历特征。剩下 50% 的 SKU 直接用指数平滑加手动阈值规则。
第二步,对每个 SKU 建立“促销脉冲档案”。 记录它在过去每次促销中的上涨倍数、前热曲线形状、后冷周期长度。这些档案不是在模型里直接输入的,而是用来调整外部变量的系数范围。
第三步,将促销日历从简单的“是否促销”升级为“促销类型 × 强度 × 预热天数”的复合特征。 比如平台大促的强度系数为 1.5,直播带货为 1.2,预热窗口分别设为 14 天和 7 天。
第四步,设计一个“脉冲后调节器”。 根据预测的脉冲峰值和持续时间,自动计算一个动态安全库存系数。脉冲后 3 天内,安全库存提升至 1.5 倍;脉冲后 4-7 天,降至 1.2 倍;8-14 天恢复正常。
3. 效果:四项核心指标全部改善
| 指标 | 优化前 | 优化后 | 变化幅度 |
|---|---|---|---|
| 整体预测 MAPE | 54% | 22% | -59% |
| 大促日预测 MAPE | 210% | 47% | -78% |
| 畅销品缺货率 | 37% | 8% | -78% |
| 滞销品库存周转天数 | 92 天 | 53 天 | -42% |
这个案例说明的最关键一点是:真正有效的预测优化不在于用多高级的模型,而在于把业务知识转化成模型能理解的特征。

六、不同业务规模下的行动建议与取舍
以上方法并不是适用于所有公司。我在不同规模的客户身上测试过,发现最优方案取决于你的资源约束和业务复杂度。下面按三个典型场景给出具体的行动建议和取舍。
1. 年销 5 亿以下、SKU 少于 100 的中小品牌
这是最不需要复杂方案的场景。你的核心约束是“没有人专职做数据”。说实话,你不需要双模式预测,也不需要调参 Prophet。我给你的唯一行动建议是:直接使用 Prophet 的默认参数,但一定要把促销日历加进 holidays 参数里。 前提是你至少要有过去一年的销量数据和促销记录。
取舍: 你会牺牲日常阶段的预测精度(因为 Prophet 默认参数对平稳序列的敏感度不高),但换来了大促阶段预测的大幅提升。对于中小品牌,大促期间断货带来的损失远大于日常库存过量的损失。这个取舍在数学上非常合理。具体操作上:用 10 分钟搭建一个 Prophet holidays 配置表,把过去所有的促销事件时间点和所属类型填入,然后运行。通常第一次跑就能看到大促当天的 MAPE 从 180% 降到 70% 左右。剩下的优化空间等你规模上来再说。
2. 年销 5-50 亿、SKU 在 100-500 的成长型企业
这是最需要投入产出的区间。你有数据团队(至少 1-2 人),但要面对多 SKU 和多种促销类型的复杂情况。我的行动建议是采用“分三层”策略:畅销品用双模式预测(日常 + 大促分离),中腰部用单模型加外部特征,长尾品用规则驱动。同时每周跑一次脉冲档案更新,记录每个 SKU 最近 3 次促销的表现。
取舍: 你要在模型维护成本上做出选择。双模式预测意味着你要维护两套模型,意味着更多的训练和验证周期。但带来的收益非常明确:大促预测误差下降 60% 以上。另一个取舍是“所有 SKU 都做精细预测”和“只做核心 SKU 精细预测”。不要试图对 500 个 SKU 都用 Prophet,那是一个运维灾难。我建议你用帕累托法则,前 20% 的 SKU 投入 80% 的模型优化精力,剩下的用简单规则兜底。
3. 年销 50 亿以上、SKU 超过 500 的大型企业
这个规模下,你面临的核心约束已经从“预测准确度”变成了“系统稳定性和运维效率”。你的需求是:模型能够自动化处理多 SKU 的预测任务,同时支持实时调整。我推荐用 LightGBM 或 XGBoost 加上时序特征的方法来批量预测。这类树模型在多 SKU 下比 Prophet 或 ARIMA 更稳定,支持更多特征,而且可以批量调参。
取舍: 你需要在“模型复杂度”和“可解释性”之间做权衡。LightGBM 的预测效果通常更好,但当你需要向业务部门解释“为什么预测这个 SKU 要比另一个多备 200 件”时,很难给出一句话的答案。一个可行的折中是:把 LightGBM 用作顶层的批量预测引擎,但对于销量前 30 的 SKU 依然保留 Prophet 做可解释性预测。另一个取舍是“自动化”和“人工干预”的边界。不要让模型完全接管所有决策,而是设置一个“预测偏差预警”机制,当某个 SKU 的预测值与上周期实际值偏差超过 40% 时,自动通知计划员人工确认。大型企业最怕的不是预测错,而是错了一两周没人发现。

七、止损与底线:当所有预测都失效时怎么办
我经历了足够多次“预测系统全面崩溃”的状况。再好的模型也会遇到不可控因素。2024 年有一家客户在双十一前突然遭遇疫情管控导致的物流中断,所有历史数据完全失效。那段时间我学会了一件事:即使做不了准确预测,也要有应对策略。
我的建议是:把“应对不确定性”也当作预测的一部分。 具体做法是:在每次大促前,基于最悲观、最可能和最乐观三个情景分别跑预测,然后算出对应的补货方案。对于核心 SKU,按照最乐观的预测值来备货,把多出来的成本当作“保供成本”。对于一般 SKU,按照最可能的值备货,但设置一个“加急补货通道”的预算,如果中断能以 2-3 天的运输时间追加一次。
这个策略的核心思维是:不要让预测替你做所有决策。预测是一个信号发生器,但最终的库存决策还需要加上“风控系数”。当你的模型给出的预测在脉冲期的不确定性(预测区间宽度)超过日常的 3 倍时,强制进入“保守模式”:人工审核所有关键 SKU 的备货数量,并确保安全库存设置在最乐观和最有可能之间取一个平衡值。
总结:把促销脉冲从敌人变成朋友
回到开头那个问题。那一年的双十一之后,3700 万库存是怎么处理的?我们用了三个月时间打折清仓,损失预估 600 万左右。但更让人痛心的是那些断货的畅销品,它们失去的不是库存,而是用户在黄金购买窗口的信任。
我的核心信息很简单:处理促销脉冲不是要去除它,也不是要回避它,而是要让它成为你预测系统的一部分。把它从“异常”变成“模式”,从“敌人”变成“朋友”。你不需要一个更复杂的模型,你需要的是一副能够看清促销脉冲本质的“眼镜”。而这副眼镜的镜片,就是你的业务知识和对数据本身的理解。
如果你今天只从这篇文章带走一件事,那就是:把促销日历加入你的预测模型。这是投入产出比最高的操作。 如果你还有一点时间和精力,接下来是分 SKU 做脉冲档案。前者只需要十分钟配置,后者可能需要半天到一个礼拜的数据梳理。这两件事做完,你大促的预测误差至少能下降一半。
下一步,从你的后台导出一份过去 12 个月的销量数据和一份促销活动日历。用 Prophet 跑一遍,把大促日放进 holidays 参数,看看结果和你现在用的方案差多少。数据不会骗你。
常见问题解答(FAQ)
1. 为什么常规时间序列模型(如移动平均、指数平滑)在促销脉冲期预测总是不准?
我是一名电商运营,用Holt-Winters模型预测日常销量还行,可一到618、双十一,实际值经常比预测高出40%以上,导致补货计划全乱套。团队里有人说模型本身就不该处理这种突变,我不服,促销难道不是一种可预测的规律吗?我想从数学底层搞明白:为什么传统平滑方法捕捉不到促销这种突然的上涨曲线?
核心原因在于传统模型的本质假设,历史模式以周期性或平滑趋势延续。移动平均、指数平滑都是对过去值的加权聚合,遇到脉冲时,权重会把它稀释,导致预测滞后且峰值被压低。
从数学上说,指数平滑的更新方程是"新预测=α×真实值+(1-α)×旧预测",当一个巨大脉冲出现,模型需要多个周期才能追上真实水平,等它追上时促销已经结束了。我曾在某家电品牌做复盘:用Holt-Winters预测双十一,提前一周的预测峰值只有实际的62%,因为前一周的平稳历史把平滑系数拖死了。
解决之道不是用更复杂的平滑参数,而是把促销当作"外生信号",我后来在该项目里引入促销天数、折扣力度作为外部回归变量,直接告诉模型"这周有促销",峰值预测误差立刻降到15%以内。所以,不要指望平滑模型自己"学会"脉冲,它天生只能处理渐变,你需要额外给它一副促销眼镜。
2. 在电商库存场景中,Prophet和ARIMAX哪个更适合平滑促销脉冲?两者在真实项目中的表现差异如何?
最近研究时间序列预测,总看到有人推荐Facebook Prophet,说它"自带节假日效应",而另一些人坚持用ARIMAX加外部变量更可控。
我自己试过Prophet,发现调seasonality_prior_scale和changepoint_prior_scale特别看脸,有时候预测曲线在活动日突然凸起一块,又不知道是过度拟合还是合理捕捉。我想知道有实战经验的人到底怎么选,有没有踩过什么坑?
两个模型我都大规模用过,总结一句话:Prophet适合"有规律、模式模糊"的场景,ARIMAX适合"可量化、原因明确"的场景。具体来说,如果你的促销日历固定(比如每月10号会员日、固定次数满减),且能把促销力度(折扣率、广告投放额)量化成数字,ARIMAX的预测更稳定且可解释;
如果促销触发因素复杂(比如网红突然带货、竞品临时降价、平台红包雨),Prophet的自动变点检测能更快捕捉结构变化。我在某美妆品牌做过完整对比:使用同样3年日数据,对双十一预测,ARIMAX+促销力度特征MAPE=12%,Prophet+手动添加双十一事件MAPE=16%;
但对一次突如其来的李佳琦带货,Prophet变点模型预测误差为22%,ARIMAX因未记录该外部因子误差高达41%。这里有个关键坑:Prophet默认的"节假日"只包含国家法定假日,对"双十一"这种商业节日完全无感知,必须用add_regressor传入历史脉冲信息。
如果促销模式每年都在变(比如去年满200减50,今年满300减60),ARIMAX的参数外推会比Prophet的分段趋势更合理。所以我的实战建议是:先用Prophet做快速baseline和异常点发现,再用ARIMAX做精细预测并落地库存决策。
3. 预测前到底该不该平滑掉历史数据中的促销脉冲?我听到过两种完全相反的建议,哪种才对?
在准备训练数据时,我们部门吵翻了天,运营觉得大促数据是宝贝必须保留,数据分析师说那是噪声必须剔除。我试过挪掉双十一那周的销量,结果模型非但没变好,反而把预测均线都拉低了;我也试过保留并用全量数据建模,结果模型学会了上次双十一的峰度,但今年活动力度变了又失效。到底怎样处理历史脉冲才是正确的?
有没有一种方法能既保留促销规律又杜绝噪声干扰?
不要把这个问题搞成二元对立。正确做法是:不要平滑掉脉冲,也不要原样保留脉冲,而是对脉冲做"结构化标记"再输入模型。我踩过最深的一个坑:在第一家公司做电商预测时,我直接对历史销量做3σ清洗,把双十一那周判定为异常值并替换为前两周均值,结果此后模型完全无法识别促销模式,预测变得极其保守。
后来反思,促销脉冲不是噪声,它是重复出现的信号,只是信号强度可能每年不同。正确工序分三步:第一,用滑动窗口+中位数绝对偏差初步识别所有离群点;第二,和业务团队核对,标记出哪些是真实促销事件(保留),哪些是系统故障或刷单等非经常性事件(剔除);
第三,为保留的促销事件创建特征向量(如是否促销日、促销强度、同类活动次数等),作为外部回归变量输入模型。这样模型既学到了促销会带来增量,又不会把一次偶然的疯涨当永恒规律。我曾在某零食品牌用此方法,将促销预测的平均绝对误差从34%降至18%,同时日常预测精度未受影响。
4. 时间序列预测输出平滑后的促销日销量后,怎么转换成具体的库存补货决策?比如安全库存应该乘几倍?
我们团队辛辛苦苦用时间序列模型跑出了促销期间的日均预测销量,然后直接按这个数字去备货,结果第一天就断货了,补货根本来不及。我这才意识到预测值只是一个期望,但库存管理要考虑波动。可具体怎么算?是不是要预测分位数?安全库存的公式在促销期该如何修正?有没有现成的系数或经验法则?
这是一个从"预测"到"决策"的跃迁,大部分教程都没讲这个,导致模型效果在落地时大打折扣。核心原则:不要用预测均值当补货点,而要用预测分位数或均值+动态安全库存。常规安全库存公式:SS = Z × σ × √L,其中σ是预测误差标准差,L是提前期。但促销期的σ远大于平时,而且误差分布往往右偏。
我在某数码配件品牌做过这样的事:首先,单独计算促销期的预测误差分布(拿过去3次大促的预测值与实际值对比),发现误差的CV从平时的20%飙升到45%;
然后,我们不再使用点预测,改用Prophet的"分位数预测"(输出10%、50%、90%分位),并定义补货量为90%分位值×提前期销量,这样覆盖了绝大部分波动;最后,还加了一个经验系数:促销前一周把安全库存提升至平时的2倍,促销结束后一周保持1.5倍以防消费回补。
具体数据:之前按均值备货,缺货率28%;改用90%分位数后缺货率降到5%,但库存成本上升18%;后来我们优化为根据毛利润和服务水平动态调整Z值(高毛利商品取高分位数,低毛利商品取中等分位数),最终缺货率控制在3%而库存成本仅增加7%。
强烈建议你直接在预测阶段就从点估计切换到区间估计,然后用区间上界去做库存决策。
读者评论
文章把促销脉冲拆解为截断效应和惯性偏差,点出了很多库存实践者忽略的连锁错误。尤其认同“不是让模型忽略脉冲,而是认识脉冲”这个理念,特征注入和双模式预测的案例数据很有说服力。
作为供应链从业人员,文中双模式预测的切换逻辑(sigmoid过渡)很启发我。日常和脉冲分离建模确实比单一模型更贴近业务节奏,美妆品牌的Prophet调参案例也验证了节假日窗口设置的有效性。
作者对常见误区的剖析很到位,特别是剔除大促数据导致模型失明的A/B测试,数据对比直观。不过双模式预测对中小商家的实施门槛较高,希望后续能分享轻量级的替代方案。