文章出自:Retail Demand Forecasting: Reducing the Error by 33% | by Nicolas Vandeput | Jun, 2025 | Medium
本篇文章的技术亮点在于通过机器学习模型成功将零售需求预测的误差降低了33%。该模型能够有效处理促销、价格变动、新产品和新店开业等复杂因素,展现了强大的数据处理能力和准确性。
该方法适用于需要精准预测库存和销售的零售场景,尤其是在促销活动期间和新产品上市时,能够显著提升预测的准确性和业务决策的有效性。
实际案例中,SupChains为一家国际杂货零售商提供了POC,预计可为其10,000家门店节省约1.72亿欧元,展现了该模型在实际应用中的巨大商业价值。
文章目录
-
- [1 范围、方法和目标](#1 范围、方法和目标)
- [2 销量预测的几大挑战](#2 销量预测的几大挑战)
-
- [2.1 大数据](#2.1 大数据)
- [2.2 新产品(和门店)](#2.2 新产品(和门店))
- [2.3 极端季节性](#2.3 极端季节性)
- [3 数据收集与清洗](#3 数据收集与清洗)
-
- [3.1 主数据](#3.1 主数据)
- [3.2 交易销售数据](#3.2 交易销售数据)
- [3.3 特征工程](#3.3 特征工程)
-
- [3.3.1 季节性](#3.3.1 季节性)
- [3.3.2 处理缺货情况](#3.3.2 处理缺货情况)
- [3.3.3 促销活动](#3.3.3 促销活动)
- [3.3.4 实际价格和未来定价](#3.3.4 实际价格和未来定价)
- [3.3.5 新品预测](#3.3.5 新品预测)
- [4 我们未做的工作](#4 我们未做的工作)
-
- [4.1 异常值](#4.1 异常值)
- [4.2 修正历史数据](#4.2 修正历史数据)
- [4.3 不推荐分群聚类技术](#4.3 不推荐分群聚类技术)
- [4.4 外部驱动因素](#4.4 外部驱动因素)
- [4.5 天气](#4.5 天气)
- [5 交付概念验证POC](#5 交付概念验证POC)
-
- [5.1 项目交付周期](#5.1 项目交付周期)
- [6 结果](#6 结果)
-
- [6.1 如何衡量成功](#6.1 如何衡量成功)
- [6.2 我们的预测指标:得分和预测附加值](#6.2 我们的预测指标:得分和预测附加值)
- [7 财务影响和投资回报率](#7 财务影响和投资回报率)
- [8 手动推荐关联文章](#8 手动推荐关联文章)
SupChains 为一家拥有数千家门店的国际杂货零售商交付了一个概念验证(POC)。该模型利用促销、价格、短缺、产品发布和门店营业时间等数据,预测每种产品每家门店未来 14 天的需求。与该零售商当前的软件供应商相比,SupChains 将预测误差降低了 33% 。正如本案例研究结尾所解释的,这可能为一家拥有 10,000 家门店的零售连锁店节省 1.72 亿欧元。
本案例研究提供了一个端到端流程,用于开发和测试零售商的机器学习(ML)预测模型。我们首先定义项目的范围和背景。接下来,我们解释了数据是如何收集、清洗和结构化的。我们还讨论了模型设计中的具体排除项(异常值、分割)。研究随后涵盖了概念验证的执行、如何衡量成功以及与零售商当前规划软件的比较。最后,我们讨论了基于所取得成果(预测误差减少 33%)的财务影响。
1 范围、方法和目标
我们的客户业务遍布全球;然而,本项目侧重于客户在特定感兴趣产品细分市场中选择的约 150 家门店和 500 种产品的代表性样本。由于该细分市场中产品的价值相对相似,我们在评估预测准确性时没有使用价值加权指标。
文章目标是:
- 展示机器学习模型如何预测促销期间的需求(这是他们当前软件供应商无法做到的)。
- 评估机器学习模型在非促销期间是否能提供比其当前软件供应商更准确的预测。
- 机器学习能否应对零售商所有运营业务的复杂性(营业时间、节假日、新产品和新门店)。
为了评估结果,我们生成了约 65,000 个门店-产品组合的为期一年(365 套)的 14 天提前预测,总计约 3.32 亿个点预测。正如在《结果》部分所讨论的,客户负责评估预测。
2 销量预测的几大挑战
2.1 大数据
一家门店可以销售 1,000 到 40,000 种产品(这与我们一些制造商项目中的数量一样多)。处理如此大量的数据需要严格的数据卫生、高效的计算和扩展 IT 资源的能力。
2.2 新产品(和门店)
零售商会定期推出(或停产)产品,并需要为这些新产品规划库存部署。我们的模型专门设计用于在产品上市_之前_预测其需求,即使在完全没有历史数据的情况下也是如此。同样,预测新开门店的初始需求也是一项关键要求。
2.3 极端季节性
零售商经常管理仅在特定活动或有限时期内销售的产品,例如节假日特定商品或樱桃等季节性农产品。这些产品表现出我们定义的极端季节性,我们的模型旨在应对这些高度不规则和间歇性的需求模式。
3 数据收集与清洗
供应链经理有许多 KPI 来跟踪预测准确性,但很少有(或根本没有)KPI 来衡量输入数据质量。
收集、清洗和结构化数据是预测成功的基石。除了"垃圾进,垃圾出"的基本原则外,高质量数据(包括需求和业务驱动因素)使模型能够更好地理解需求信号,并最终生成更准确的预测。
在 SupChains,我们将数据视为机器学习模型的洞察来源。为了充分发挥其潜力,我们需要以正确的格式为其提供正确的数据(将业务驱动因素格式化为机器学习模型的结构化输入称为特征工程)。这既需要业务知识,也需要数据工程专业知识。
此外,我们与客户的经验表明,大多数不稳定的预测是由于输入不一致造成的(例如错误或缺失的主数据,或错误的销售交易)。这就是为什么我们强调数据准备阶段:严格验证输入数据并整合关键业务驱动因素(例如促销、价格、销售量)可确保我们的模型平稳可靠地运行。
3.1 主数据
收集一致的主数据和层次数据至关重要,原因有二:
-
我们的机器学习预测引擎特征工程中会使用产品的层次信息(例如品牌和产品系列)作为输入来生成预测。
如果您想预测新产品,这一点尤其关键,因为它们没有任何历史销售数据,模型必须依赖一般信息,例如产品系列、定价或产品销售的门店类型。
-
正确的主数据允许标记产品转换 (旧产品 -> 新产品 )和发布日期 。没有这些,预测引擎可能会被每个新产品搞糊涂。跟踪产品转换是一项低投入、高影响的任务:这是数据收集中最容易实现的目标。
3.2 交易销售数据
对于本次概念验证(POC),我们收集并清洗了数千万条销售交易。具体来说,我们排除了以下交易:
- 销售价格为空或为负。
- 销售数量为空或为负。
一如既往,排除可疑交易存在误报的风险(将交易标记为错误,但实际上是合法的)。然而,包含错误或不相关交易(例如用于验证库存计数的交易)的风险太高。
3.3 特征工程
在构建我们的机器学习模型时,我们旨在通过仅选择那些真正提高准确性的特征来使用最少的特征。让我们回顾一下本项目特有的特征。
3.3.1 季节性
在 SupChains,我们很自豪能够利用各种技术来准确评估季节性。对于本项目,我们特别解决了复杂的双重季节性:产品表现出整体的年度季节性,具有明显的旺季和淡季,同时伴随着周内的每日季节性。我们的方法侧重于门店层面的周内每日季节性评估,而年度季节性主要按产品进行评估。

图 1 门店在一周内的活动水平各不相同。
3.3.2 处理缺货情况
供应链规划人员必须预测需求,而不是销售。否则将面临短缺恶性循环。不幸的是,大多数供应链无法跟踪需求。相反,他们收集销售数据,只要库存充足,销售数据就是完美的替代品。但是,一旦发生短缺,供应链就无法再准确跟踪需求。

图 2 单一产品的每日销售额(有短缺)。
面对短缺时,我们可以尝试插补缺失的销售数据,或者绕过它。在 SupChains,我们始终倾向于第二种选择:我们所有的模型(机器学习和统计工具)默认绕过 短需求预测绝不应在短缺期间进行评估。
未能排除这些时期意味着您正在衡量销售预测准确性,而不是需求预测准确性。预测销售(而不是需求)将导致永无止境的短缺恶性循环。准确跟踪和核算短缺必须是 S&OP 领导者的首要任务。
3.3.3 促销活动
当企业以促销为导向时,促销通常是主要的需求驱动因素。不幸的是,收集包含历史和未来促销的促销日历通常既繁琐又需要与客户进行多次研讨。但一旦输入数据经过清洗并保持一致,机器学习模型就能很好地捕捉促销的影响。
如插图所示,促销的影响随时间而变化。
(在某些情况下,由于客户提前购买库存,导致长期需求下降)。捕捉促销效果需要远远超出简单地"将销售额增加 X%",这是许多统计工具所做不到的。

图 3 促销对某产品每日销售额的影响。
传统统计模型通常难以捕捉促销的非线性和复杂时间影响(促销前、促销期间和促销后发生的情况)。特别是当产品每年只经历少数几次促销活动时。另一方面,如果调整得当,机器学习模型在捕捉这些方面表现出色。
3.3.4 实际价格和未来定价
在预测模型中包含价格,理论上应该能让供应链领导者评估客户的价格敏感度。我们确定了四个主要原因,说明在实践中,对于大多数供应链而言,使用价格来改进预测模型是复杂的。
价格 不建议作为模型的特征
- 它很复杂。 捕捉价格敏感度很复杂,因为定价只是众多业务驱动因素之一,而且价格敏感度是一种非线性关系。
- 数据缺乏。 大多数供应链很少改变价格,这使得由于数据缺乏而难以捕捉价格敏感度。
- 定价不一致。 一些 B2B 供应链为每个客户提供不同的价格和折扣(例如,如果达到特定金额,则提供季度末折扣),这使得评估定价具有挑战性。
此外,仅分析价格和需求之间的历史关系无助于您预测未来需求,除非您可以获得定价计划。
4. 缺乏未来定价计划。 只有少数供应链拥有严格的(未来和历史)定价计划。没有这个,您就不能将价格作为未来需求的驱动因素,因为您不知道它。
对于本项目,我们遇到了一个特殊情况,这些条件都不适用:我们可以访问官方的历史和未来价格表、实际历史价格以及随时间(上下)变化的趋势价格。只缺少一个方面
5. 竞争对手价格。 捕捉历史竞争对手价格_非常_困难(如果必须购买数据,则成本高昂)。此外,您永远不会提前知道竞争对手的价格。
在我们的案例中,对于杂货零售商来说,消费者不太可能为了获得最低价格而访问多家商店购买不同的产品。使用竞争对手价格可能对 B2C 在线零售商更具相关性。
正如您在下图中看到的,即使有了这些数据,捕捉销售额和价格之间的关系也很繁琐,因为多个驱动因素(季节性、促销)会影响需求。

图 4 某产品(匿名数据)的每周销售额、官方价格表和实际价格。请注意定价政策(或官方定价报告方式)在几年后如何变化,以及促销(销售高峰)如何影响实际价格。

图 5 某产品(匿名数据)的价格敏感度。请注意非线性关系以及移除促销后观察值数量的减少。
3.3.5 新品预测
S&OP 领导者通常将新产品推出视为一项挑战,需要需求规划人员进行手动工作。这对于零售商来说尤其具有挑战性,因为他们通常比其他企业的产品推出量更大(仅仅因为他们提供的产品数量众多)。此外,零售商必须准确预测新开门店的需求。
我们的 POC 包括在测试阶段推出各种产品(即,这些产品从未在我们收到用于训练模型的数据中在该门店销售过)。您可以在下图中看到此类产品在评估阶段提交的各种预测(第一个预测是在没有任何历史数据的情况下生成的------正如您所看到的,模型在推出时超出了预期,并在两周内恢复正常)。

图 6 销售额和各种预测(在测试阶段提供)用于不在训练数据中的产品-门店组合。发布期间没有促销活动。
4 我们未做的工作
4.1 异常值
在 SupChains,我们不使用基于 ML 或统计的技术来检测异常值。相反,我们根据业务规则(例如价格不一致或清仓)识别并排除错误交易,并根据业务驱动因素(包括促销和价格变化)解释大多数偏差。
4.2 修正历史数据
我们不建议通过移除促销提升来"修正"历史销售数据。
也就是进行时序分解,消除季节因素,只把baseline当做特征,是不太推荐的
机器学习模型的优势在于其能够理解所有业务驱动因素(包括促销)如何影响需求(当这些作为输入提供时)。允许需求规划团队手动从历史数据中移除特定事件会导致劳动密集型、不一致且最终不准确的预测过程。
4.3 不推荐分群聚类技术
我们不使用分割(例如 ABC XYZ 分割,或_间歇性、块状、不规则、平滑_分类)或聚类技术。正如本文所解释的,我们不认为它们能为需求预测模型增加价值。
我们最近的预测竞赛 VN1 也表明,很少有顶尖竞争者使用分割或异常值检测技术,这证实了这些实践的价值有限(如果存在的话)。
4.4 外部驱动因素
对于本项目,我们没有使用任何外部驱动因素(例如经济指标),因为据我们所知,我们不知道有任何项目成功地使用外部驱动因素来丰富预测。通常,内部驱动因素(例如促销、已确认的未来订单、定价和销售量)比外部经济指标更能深入了解未来需求。
4.5 天气
根据我们的经验,天气数据只能有意义地用于每家门店的每日预测。使用天气数据预测区域需求或按周(或月)汇总周期将导致天气(包括日照和降雨)平均化,这没有多大意义。
即使对于零售商,使用天气数据进行预测模型也并非一定能带来投资回报率:
- 收集历史天气数据(按销售点)很复杂(而且可能很昂贵)。
- 您无法提前准确预测天气。
- 您需要每天更新整个数据集。
此外,如果您使用历史实际天气数据 而不是天气预报来训练模型,那么天气与需求之间的相关性可能会被人为夸大。最后,我们之前的零售项目经验表明,天气的附加价值微乎其微。
5 交付概念验证POC
5.1 项目交付周期

概念验证从一个多月的数据清洗和结构化开始(客户为我们提供了高质量的数据)。在第一阶段,我们确定了范围(如下一节所述)和一些产品转换。然后,我们使用我们的 ML 框架创建了模型,主要时间花在特征工程和选择上(这是任何 ML 模型最重要的部分)。
在此之后,我们通过向客户提供 14 天预测来评估模型,客户负责评估。
6 结果
6.1 如何衡量成功
在我们多个项目中,我们意识到定义如何衡量成功以及统一定义和范围是关键。对于本项目,我们与客户建立了以下规则:
- 我们可以计算得分(计算方式为 MAE% + |Bias|%,如 VN1 和 Demand Planning Best Practices 中所示)。
- 并且仅在以下期间衡量准确性:
- 没有缺货情况
- 产品_正式_活跃(根据产品发布日历)
- 门店_正式_营业(根据门店营业日历)
不要单独衡量模型的准确性!
为了衡量预测质量,我们不建议单独依赖准确性指标 (例如 MAPE、MAE 或 WMAPE)。相反,我们同时跟踪准确性(使用 MAE)和偏差 ,将它们组合成一个单一指标,即得分(MAE + |Bias|),如 Demand Forecasting Best Practices 中所建议。
正如 Data Science for Supply Chain Forecasting 中所解释的,单独跟踪准确性将机械地促进低估预测。
6.2 我们的预测指标:得分和预测附加值
为了评估我们的预测模型,我们提交了涵盖一整年的 365 套 - 14 天提前预测。这些预测由客户直接审查,他们比较了三个模型:
- 我们的模型(SupChains),依赖于我们的 ML 框架。
- 当前软件的预测引擎(Current Software),依赖于统计模型。
- 28 天移动平均(MA 28 Days)。
我们评估预测的核心方法是 预测附加值(FVA)框架:我们不是孤立地衡量我们模型的准确性,而是将其与各种基准进行比较。我们提倡将跟踪 FVA 作为供应链领导者应该实施的第一实践。

表 1 非促销产品结果
28 天移动平均线受到平均所有历史销售额(包括促销)的影响,导致常规销售期间出现高达 62% 的巨大偏差。
通过将得分从 75% 降低到 48%,SupChains 比当前规划软件提供了 33% 的附加值。
在比较促销期间的结果时,无论是基准还是规划软件都无法提供有意义的结果。SupChains 的预测(误差百分比)在促销期间比在常规销售期间更准确。这可以解释为促销期间的总销售额要高得多,这机械地导致较低的百分比误差。
我们将附加值计算为模型之间得分减少的百分比。在本例中,我们有 33% = 1--49%/74%。

表 2 促销产品结果
7 财务影响和投资回报率
尽管 SupChains 能够将误差显著降低 33%(甚至在促销活动期间_更多_------但我们在此评估中将排除它们),但对于供应链领导者而言,衡量成功的真正标准在于业务影响。
为了估算这些影响,让我们假设一家典型零售连锁店的单店财务指标如下:
- 每店年收入:1000 万欧元
- 每店平均库存:100 万欧元
- 年度持有和报废成本:按库存价值的 13% 计算(每店每年 0.13 百万欧元),包括 10% 的融资成本和 3% 的报废成本。
- 每店税前利润:0.3 百万欧元
根据这些输入,让我们估算不同规模零售连锁店的潜在影响,基于各种来源和我们的模拟:

图 7 额外预测准确性的价值是什么?

图 8 基于预测误差减少 33% 的典型零售连锁店预期年度节省。
根据我们详细的模拟,一家拥有 10,000 家门店的零售商每年可实现约 1.7 亿至 1.9 亿欧元的节省,这与 IBF 和 SupChains 的模拟结果一致。
我们将 Gartner 排除在分析之外,因为它会产生不切实际的高数字。库存将减少 60%(计算方式为 1 − ( 1 − 2.7 % ) 33 1 - (1-2.7\%)^{33} 1−(1−2.7%)33),报废将减少 75%(= 1 − ( 1 − 3.9 % ) 33 1 - (1-3.9\%)^{33} 1−(1−3.9%)33)。
8 手动推荐关联文章
作者Nicolas Vandeput、SupChains技术团队、供应链相关文章还有:
- SupChains技术团队零售产品销量预测建模方案解析(一)
- SupChains技术团队回答:模型准确率提高 10%,业务可以节省多少钱?(二)
- SupChains团队: 衡量Forecast模型结果在供应链团队内的传递质量(三)
- SupChains团队:供应链数据的异常特征管理指南(四)
- SupChains技术团队:需求预测中减少使用分层次预测(五)
- SupChains团队:全局机器学习模型在需求预测中的应用(六)
- VN1 供应链销量预测建模竞赛技巧总结与分享(七)
- SupChains团队:供应链新品预测建模的一些策略(八)
- 供应链团队设置安全库存的五层境界(九)
- 供应链项目中产品的ABC XYZ分类法弊端(十)
- 供应链项目中库存管理与优化指南(十一)
- 端到端供应链优化案例研究:需求预测 + 库存优化(十二)