当前位置: 首页 > news >正文

SupChains团队:Animalcare公司供应链需求预测模型案例分享(十三)

文章出自:Case Study: Forecasting Sales using Promotions, Sellouts, Prices, and Inventory | by Nicolas Vandeput | Medium

本篇文章的亮点在于通过机器学习模型显著降低了预测误差19%,提升了供应链的整体效率。作者强调数据质量的重要性,并详细介绍了如何通过整合促销、库存和销售数据来优化预测。Animalcare通过与SupChains的合作,成功转型为机器学习驱动的预测模型,提升了对市场需求的响应能力,减少了库存积压和短缺风险。


文章目录

  • 1 前言
    • 1.1 Animalcare 项目介绍
    • 1.2 业务范围
  • 2 数据与建模
    • 2.1 数据收集与清洗
    • 2.2 主数据
    • 2.4 历史库存数据
    • 2.4 促销
    • 2.5 价格
    • 2.6 价格变动公告
    • 2.7 Sellouts销售出库
  • 3 我们没有做的事情
    • 3.1 异常值
    • 3.2 分割
    • 3.3 外部驱动因素
  • 4 结果
    • 4.1 模型概况
    • 4.2 业务驱动因素和模型特征
    • 4.3 概念验证的交付
  • 5 Animalcare 总监有话说
    • 5.1 供应链数字化转型
    • 5.2 对工作量的影响
    • 5.3 计划员的参与和流程演变
    • 5.4 对机器学习方法的反思


1 前言

1.1 Animalcare 项目介绍

SupChains 为 Animalcare Group 提供了一个预测模型,Animalcare Group 是一家总部位于英国的国际兽药制造商和分销商。

Animalcare 在七个欧洲国家开展业务,拥有 200 多名员工,2024 年报告的总收入约为 8000 万欧元。

利用 SupChains 的机器学习模型并借助 Animalcare 丰富的数据,我们将预测误差比统计基准降低了 19%。预测准确性不仅仅是一个技术指标,它对供应链绩效有着直接、可衡量的影响。更好的预测可以带来更低的库存水平、更少的短缺、更低的过时风险以及更高的服务水平。虽然确切的效益因行业和组织而异,但预测准确性与供应链效率之间的关系已得到充分证实。为了突出这一点,我们从行业基准和 SupChains 的模拟中收集了一些见解:

在此模拟预测误差减少对您供应链的影响

本案例研究分为四个部分。首先,我们概述了如何收集和清理数据,并讨论了价格、促销、库存和销售出库等业务驱动因素如何影响模型。其次,我们讨论了结果以及如何衡量成功。第三,我们概述了模型中使用的部分特征以及关键业务驱动因素的影响。最后,我们详细介绍了概念验证的实施方式以及 SupChains 和 Animalcare 在模型开发期间和之后的合作结构。

1.2 业务范围

Animalcare 在七个欧洲国家开展业务,拥有约 700 种活跃的产品-市场组合的稳定基础。由于他们面临相当长的供应提前期,并且需要规划生产和采购决策,因此他们需要 18 个月的预测周期。

2 数据与建模

2.1 数据收集与清洗

数据收集、清洗和结构化是预测成功的根本。除了“垃圾进,垃圾出”的基本原则之外,高质量的数据还能让模型更好地理解需求信号,这要归功于需求驱动因素。在 SupChains,我们把数据视为洞察力的来源,而不仅仅是输入——我们的目标是以正确的格式向模型提供正确的信息,以充分发挥其潜力。

此外,我们与客户的经验表明,大多数不稳定的预测往往是由于输入不一致造成的。这就是为什么我们强调数据准备阶段(供应链经理有许多 KPI 来跟踪预测准确性,但很少有——如果有的话——来衡量输入数据质量)。我们通过严格验证输入数据和整合关键业务驱动因素,确保我们的模型平稳可靠地运行。

2.2 主数据

收集一致的主数据和层级数据至关重要,原因有二:

  • 机器学习引擎使用产品的品牌和系列作为输入来生成预测
  • 正确的主数据允许您标记产品过渡(旧产品 -> 新产品)和发布日期。没有这些,您的预测引擎可能会被每个新产品搞糊涂。产品过渡是低投入、高产出的——它们是数据收集时最容易实现的目标

2.4 历史库存数据

许多专业人士通常认为价格是预测需求最重要的驱动因素。我与供应链打交道的经验表明,价格的预测价值通常微乎其微(除非您有定价日历)。相反,在 SupChains,我们首先专注于收集历史库存水平,因为它能让我们的预测引擎识别历史缺货情况,并随后消除受供应限制的时期,从而确保不受供应限制的需求预测。(如果您不考虑短缺,则意味着您正在预测受供应限制的销售,这很可能导致短缺恶性循环

收集库存水平通常涉及一些挑战,需要密切协作和业务专业知识。我们与 Animalcare 一起确定了需要解决的两个关键案例:

  • 按订单生产 (MTO) 产品,我们将其标记为始终可用,以反映其按需性质。
  • 集中库存,某些国家代表其他国家持有库存,这要求我们在市场之间逻辑地重新分配可用性。

2.4 促销

促销活动通常是预测需求时最重要的业务驱动因素。如果您想自动化需求计划,您的预测模型必须了解促销活动如何影响需求,并同时输入历史和未来的促销数据。

不幸的是,对于大多数公司来说,收集历史促销数据通常很复杂。对于我们的大多数项目,促销日历的可用性因客户、市场和地点而异。如下面的匿名图表所示,该项目的数据可用性因国家/地区而异。未能将促销活动纳入您的预测范围将导致预测值降低,因为机器学习模型会假设您不推广您的产品。这就是为什么我们在缺乏长期促销计划的情况下纳入了特定的业务逻辑。

2.5 价格

不幸的是,正如 B2B 环境中常见的情况,价格对需求预测的影响有限。这主要是因为未来的价格很少能提前知道——大多数供应链不维护价格日历——而且我们无法获得竞争对手的定价。此外,B2B 价格通常因客户而异,基于合同条款(包括潜在的即期交易和季度折扣),这使得模型难以检测到一致的定价模式。

尽管如此,将价格信息附加到每笔交易有助于识别可疑或错误的条目。这强调了收集价格的价值:即使它们对该项目的预测能力有限,它们也有助于清理销售交易数据。收集交易价格是一种容易实现的数据清理成果,因为它们很容易与 ERP 销售记录一起提取。

2.6 价格变动公告

许多 B2B 企业会提前向客户宣布价格变动。其影响类似于反向促销:客户可能会在价格上涨前下订单,然后需求会下降一段时间。通常,我们可以轻松地创建一个包含历史和未来价格变动公告的日历。在这个项目中,我们将这些公告视为反向促销。

(注:价格弹性未计算或输入模型。相反,模型可能在进行预测时通过隐式评估价格对需求的影响来考虑价格。)

2.7 Sellouts销售出库

销售出库Sellouts是指分销商或零售商向最终客户的实际销售。与内部销售(反映公司向其分销商销售的产品)不同,销售出库数据显示了市场中的真实需求,提供了更准确的客户行为图景。

将销售出库纳入预测引擎相当具有挑战性,因为数据可用性因市场(有时甚至因产品)而异。一些客户及时提供销售出库数据,而另一些客户则需要长达两个月的时间;这需要创建特定的数据提取查询来解决任何缺失数据或延迟。此外,由于分销政策,一些销售记录在一个国家,而销售出库记录在另一个国家。

一个市场的匿名销售入库和销售出库(销售出库数据未覆盖 100% 的销售入库)

一旦收集、清理、格式化和对齐,销售出库可以展示有趣的见解(见上文)。销售出库通常比销售更稳定(任何玩过啤酒游戏的人都会证明这一点)。不幸的是,在这个项目中,月度销售出库数据的预测价值有限——这可能是因为我们只有 2.5 年的历史数据。这使得模型缺乏足够的信息来学习,尤其是在考虑 11 个月的测试期时。

3 我们没有做的事情

3.1 异常值

在 SupChains,我们不使用机器学习或基于统计的技术来识别异常值。相反,我们根据业务规则(例如不一致的价格或清仓)识别并排除错误交易,并通过促销或价格变动等业务驱动因素解释大部分偏差。

3.2 分割

此外,我们不使用分割或聚类技术,因为我们认为它们无法为需求预测模型增加价值。我们最近的预测竞赛 VN1 也表明,很少有顶级竞争者使用分割或异常值检测技术,这证实了这些实践的价值有限,甚至没有。

3.3 外部驱动因素

对于这个项目,我们没有使用任何外部驱动因素(例如经济指标),因为据我们所知,我们不知道有任何项目成功地使用外部驱动因素来丰富预测。

4 结果

4.1 模型概况

为了评估我们的模型,我们将数据分为训练集和 11 个月的测试集,测试集在训练或模型优化期间未使用。我们通过使用各种滚动预测,以长达 18 个月的预测周期,对测试集的需求进行预测来评估模型。我们的模型交付了以下结果:

实现的 MAE、偏差和分数

我们总是根据简单的统计基准来评估模型性能。我们为这个项目选择了 12 个月移动平均线,因为它在所有考虑的基准中,在训练集上提供了最高的准确性。

为了衡量预测质量,我们建议不要仅仅依赖准确性度量(例如 MAPE、MAE 或 WMAPE)。相反,我们希望同时跟踪准确性(使用平均绝对误差,即 MAE)和偏差。为此,我们使用分数(MAE + |偏差|) 。

将分数从 80% 降低到 65%,SupChains 带来了 19% 的附加价值。

此外,该模型在预测周期内提供了稳定的结果(误差范围在 60% 到 62% 之间)。这种稳定性证实了我们的方法成功地捕捉了数据中的基本模式,而不仅仅是对近期趋势的反应。

在这里插入图片描述

我们使用 LightGBM(一种基于决策树的算法)作为模型的核心算法。根据我们的经验和国际预测竞赛,它仍然是供应链预测最有效的工具之一。然而,成功并非仅凭算法。关键的区别在于数据如何预处理、转换和选择。在 SupChains,我们非常重视特征工程(即将原始数据转换为机器学习模型的有意义输入),利用领域知识为我们的模型精心设计有意义的输入。请注意,使用相同的数据清理方法和特征,使用 XGBoost 而不是 LightGBM 也能获得类似的结果;但是,XGBoost 往往稍慢。

4.2 业务驱动因素和模型特征

在构建我们的机器学习模型时,我们的目标是使用尽可能少的特征,只选择那些真正能提高准确性的特征——通常越少越好。像 LightGBM 这样的模型允许我们量化每个输入的重要性,帮助我们优先考虑最重要的因素。

在这个项目中,基于促销、价格和销售出库等业务驱动因素的特征对预测准确性的贡献很小。这主要是由于数据限制:这些驱动因素的历史数据不足三年,并且有近一年的时间用于测试,模型缺乏足够的上下文来学习有意义的模式(即这些业务驱动因素如何影响需求)。尽管如此,我们已经构建了管道,以便随着更多数据的可用,模型能够随着时间的推移而改进。

该项目的一个关键成功因素是准确捕获季节性,即使对于极端产品,例如在烟花期间因压力而受苦的狗的减压产品,它们也遵循特定的季节性模式。在这里,业务知识和与 Animalcare 的讨论至关重要。

高季节性产品的销售和预测(请注意模型根据 2025 年第一季度的变化预测 2026 年的较低极端值)

4.3 概念验证的交付

概念验证始于两个月的数据清理,期间 SupChains 和 Animalcare 之间每周举行一次研讨会。这一初始阶段确保了数据质量、业务背景和预测范围的一致性——即包括哪些客户和产品。我们共同完善了输入数据并纳入了关键业务规则,确保我们的预测准确反映运营实际情况。

第一阶段之后是为期三个月的建模阶段,在此期间 SupChains 提供月度预测并与 Animalcare 举行联合审查会议。这些会议用于评估预测准确性、解释模型行为和完善模型输入。

概念验证之后,Animalcare 选择采用 SupChains 的模型,现在将 SupChains 的预测作为持续服务使用。Animalcare 提供月度数据更新,而 SupChains 确保数据一致性,然后生成新的预测。每月还会组织联合研讨会,审查任何不一致之处(包括输入和输出),以确保稳定、持久的结果。

5 Animalcare 总监有话说

5.1 供应链数字化转型

在与 SupChains 合作之前,我们的预测是基于使用销售入库和销售出库的带有趋势的移动平均线。虽然团队通过业务专业知识和手动调整取得了扎实的结果,但人们认识到有机会进一步提高预测质量,特别是通过减少我们在预测中观察到的潜在正偏差。我们有使用以前公司的统计预测模型的经验。但我们也意识到维护这些模型需要大量的数据清理、异常值校正和审查。

5.2 对工作量的影响

实施机器学习模型需要初步的投入,尤其是在准备和检查数据方面。在设置阶段,团队投入了大约 60 小时来确保数据质量并建立对新流程的信心。在中期,额外的工作量稳定在每月增加约 10%。随着时间的推移,我们预计工作量将恢复到与以前流程相似的水平,并且需要较少的手动校正。

5.3 计划员的参与和流程演变

计划员们非常乐意尝试不同的方法。他们希望评估和理解机器学习预测的质量。他们还希望得到保证,他们仍然可以为预测增加价值。在计划员完成审查后,他们理解了数据质量的重要性以及该工具为我们大部分产品组合生成可靠预测基线的强大功能。我们重新设计了月度预测流程,将机器学习基线预测纳入我们的预测工具中。在使用 SupChains 模型的前 2 个月,我们超过 50% 的预测是 100% 基于机器学习的,其余产品则由计划员为基线增加价值,或者评估以了解哪些数据问题导致与计划员对情况的评估存在显著差异。

5.4 对机器学习方法的反思

我们曾希望利用机器学习能够让我们跳过统计预测步骤。这使我们能够将更好的销售出库数据和促销计划整合到我们的基线中,而无需进行大量工作来纠正统计预测。我们的旅程仍处于早期阶段,我们当然已经认识到确保底层数据稳健的重要性。尽管如此,机器学习比我们以前实施和维护统计模型的经验要省力得多。初步结果在我们的产品组合的很大一部分中表现强劲。有效利用定价、促销、销售入库、销售出库和库存数据的能力支持我们的业务旨在减少正偏差,从而使我们对基线预测更有信心。同时,需求计划团队仍然可以非常轻松地叠加业务情报,并进一步为我们的预测增加价值


手动推荐关联文章

作者Nicolas Vandeput、SupChains技术团队、供应链相关文章还有:

  • SupChains技术团队零售产品销量预测建模方案解析(一)
  • SupChains技术团队回答:模型准确率提高 10%,业务可以节省多少钱?(二)
  • SupChains团队: 衡量Forecast模型结果在供应链团队内的传递质量(三)
  • SupChains团队:供应链数据的异常特征管理指南(四)
  • SupChains技术团队:需求预测中减少使用分层次预测(五)
  • SupChains团队:全局机器学习模型在需求预测中的应用(六)
  • VN1 供应链销量预测建模竞赛技巧总结与分享(七)
  • SupChains团队:供应链新品预测建模的一些策略(八)
  • 供应链团队设置安全库存的五层境界(九)
  • 供应链项目中产品的ABC XYZ分类法弊端(十)
  • 供应链项目中库存管理与优化指南(十一)
  • 端到端供应链优化案例研究:需求预测 + 库存优化(十二)
http://www.dtcms.com/a/322232.html

相关文章:

  • [激光原理与应用-203]:光学器件 - 增益晶体 - 增益晶体的使用方法
  • GitCode 疑难问题诊疗:让你的开发流程重回正轨
  • 2025年渗透测试面试题总结-10(题目+回答)
  • C语言:构造类型
  • 【Python 语法糖小火锅 · 第 5 涮 · 完结】
  • 使用小诺框架报错:NoResourceFoundException: No static resource exercise/tag/page.
  • Go语言接口实战指南
  • VS Git巨坑合并分支失败导致多项无关改变
  • HarvardX TinyML小笔记1(番外2:神经网络)
  • ESP32之wifi_HTTP
  • 从 AI 到实时视频通道:基于模块化架构的低延迟直播全链路实践
  • 大语言模型提示工程与应用:前沿提示工程技术探索
  • spring的知识点:容器、AOP、事物
  • 安全引导功能及ATF的启动过程(四)
  • AI赋能品牌出海,特区典范引领未来 第十九届中国品牌节·国际品牌博览会在深开幕
  • 使用 ast-grep 精准匹配指定类的方法调用(以 Java 为例)
  • [GESP2023012 五级] 2023年12月GESP C++五级上机题题解,附带讲解视频!
  • 95、【OS】【Nuttx】【构建】cmake 配置实操
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘transformers’问题
  • FreeRTOS---基础知识5
  • Dixon‘s 因子分解法——C语言实现
  • KLA/TENCOR ALTAIR 8900
  • [Shell编程] Shell 循环结构入门
  • VMware使用NAT模式,使本机与虚拟机在不同的网络,并且虚拟机可以上网
  • 洛谷 P1433 吃奶酪-普及+/提高
  • 嵌入式第二十三课 !!!树结构与排序(时间复杂度)
  • 浅试A2A
  • 01数据结构-图的概念和图的存储结构
  • PCA多变量离群点检测:Hotelling‘s T2与SPE方法原理及应用指南
  • ABP VNext + Fody AOP:编译期织入与性能监控