尽管人工智能模型成为了焦点,但传统的统计模型仍然是需求预测中高度有价值的工具。
由petr sidorov在Unsplash上的照片
嗨,Medium 的读者们!
今天,我们将深入探讨应用于需求计划的预测技术,这是一个由于我的供应链背景和对数据科学的热情,我非常投入的领域。最近,我一直在研究这个话题,重新阅读关于需求预测的书籍和文章,以便为您提供一些新的见解。
为了开始,让我分享一位英国统计学家乔治·E·P·博克斯的引人深思的名言:
“所有模型都是错误的,但有些是有用的。”
当你反思这句话时,你可能会想:如果没有任何模型能够完全准确,为什么还要预测未来呢?把它想象成天气预报:它帮助我们提前规划。我明天需要带伞吗?我应该涂防晒霜吗?我应该躲避飓风吗?尽管预测并不完美,但它们指导我们做出更好的决策。
在需求计划中,情况并无不同。**需求计划者和其他公司利益相关者使用预测来预测未来的需求,并相应地调整供应。**目标是避免过度生产和短缺,确保客户得到他们所需的东西,而不会造成浪费。
在过去的几年里,许多模型被开发出来以预测需求。随着人工智能的兴起,出现了更复杂的模型。但正如乔治·博克斯提醒我们的,所有模型都是错误的。这并不意味着它们没有用,只是意味着没有任何模型能够完美地捕捉现实的复杂性。每个预测都带有一定的不确定性。
由John Michael Thomson在Unsplash上的照片
例如,考虑一家书店。影响需求的因素众多,往往难以定义:商店的位置、在线存在感、声誉、营业时间等等。而且别忘了人类因素:顾客。理解为什么有人决定买一本书,什么时候买,买多少,涉及到复杂的人类行为,很难精确地确定。
话虽如此,模型仍然有价值。它们为我们提供了对未来的一种合理预期,即使它们并不完全准确。当然,总会有一个误差范围,但随着我们随着时间的推移改进模型,这个误差范围可以被控制和最小化。
那么,我们如何预测未来的需求呢?通过从过去学习。如今,当人们听到“预测”这个词时,他们通常会想到人工智能,尤其是能够分析大量历史数据以预测未来趋势的机器学习模型。然而,传统的统计模型也是预测的有力工具。
在这篇文章中,我将重点介绍统计模型及其在需求预测中的应用。但别担心,我的下一篇文章将探讨机器学习领域,用于预测未来的需求!
移动平均:一种简单直接的统计需求预测方法
移动平均模型是一种简单而有效的预测技术,它假设未来的需求与最近观察到的平均需求密切相关。该模型通过计算过去指定数量的时期(表示为n)的平均需求,并使用这个平均数来预测未来的需求。其背后的逻辑是,最近的需求模式很可能会在近期内重复。
下一期(t+1)的移动平均预测计算如下:
其中:
-
n = 计算移动平均所使用的时期数
-
需求(t-i) = 在 t−i 期间观察到的实际需求
-
t+1 = 预测正在进行的时期
假设你正在尝试根据过去 3 个月的数据预测即将到来的月份的产品需求。假设过去三个月的需求如下:
-
第一个月:100 单位
-
第二个月:120 单位
-
第三个月:110 单位
使用3 个月移动平均:
因此,根据过去 3 个月的平均需求,预测下一个月(第四个月)的需求为 110 单位。
虽然移动平均模型简单且易于实施,但它有三个关键限制:
-
无趋势敏感性:它无法解释数据中的上升或下降趋势。如果需求稳步增加或减少,移动平均将落后,提供的预测将不够准确。
-
无季节性:该模型不识别或调整季节性模式。例如,如果在假日季节需求持续上升,移动平均不会反映这一点,除非进行额外的调整。
-
等权重:移动平均对所有用于计算的历期给予同等的重要性。这意味着最近的需求与较旧的需求没有区别,这可能并不总是反映当前的趋势或市场的变化。
简单指数平滑法:预测未来需求的更好统计模型
简单指数平滑法是预测时间序列的最直接方法之一。此模型只能从历史数据中识别需求水平。
💡 水平:水平是指需求随时间波动围绕的平均值。它代表了需求的一个平滑版本。
在此模型中,未来的需求预测是基于对水平的最新估计生成的。简单指数平滑法与朴素或移动平均模型相比具有几个优点:
-
指数加权:分配给每个观察值的权重随时间指数衰减,这与分配给所有观察值相同权重的移动平均模型不同。
-
减少异常值的影响:与朴素预测方法相比,异常值和噪声的影响较小。
任何指数平滑模型背后的基本概念是,在每个时期,模型从最新的需求观察中学习,同时保留其先前预测的一些信息。
平滑参数,或学习率(α),决定了最近需求观察的重要性:
其中:
-
α = 学习率
-
Demand(t-1) = 上一个已登记的需求
-
forecast(t-1) = 上一个预测
这个公式的美妙之处在于,最后一个预测已经包含了先前需求和先前预测的一部分。这意味着模型已经从截至该点的历史需求数据中学习。
之间存在一个关键的权衡,即 学习 和 记忆,因此 __ 在反应性和稳定性之间取得平衡。较高的 α 值意味着模型更强调最近的需求,并快速对变化做出反应,但它也变得对异常值和噪声敏感。相反,较低的 α 值将使模型对需求水平的变化反应不那么敏感,但它将更能抵御噪声和异常值。
图片由 The Nix Company 在 Unsplash 提供
让我们想象一下,一家零售店需要预测夹克的需求。需求高度季节性,冬季需求高峰,夏季需求低。他们正在使用上述简单指数平滑法,每周根据实际需求更新预测,调整学习率参数 α:
- 高 α 值(强调最近数据):
-
假设商店将 α 设置为高值,例如 0.8。这意味着模型非常重视最近的数据。
-
如果在初秋突然出现寒潮,夹克销量激增。模型迅速增加其需求预测,以适应这种突然的变化。
-
优势:商店可以迅速适应意外事件,如冷浪,并确保他们备有足够的夹克库存。
-
缺点:如果存在异常值,例如由于一次性促销而意外出现的高销售额,模型可能会过度反应。这种敏感性可能导致商店过度补货夹克,而需求在下一周又回到正常水平。
- 低 Alpha 值(数据平滑):
-
现在假设商店将alpha值设置为较低的值,例如 0.2。这使得模型对最近的变化反应不那么敏感,需求平均分布在更长的时期内。
-
在冷浪的情况下,模型不会立即增加其预测。相反,它将峰值视为趋势的一部分,只做轻微的调整。
-
优势:这种方法避免了过度反应于短期事件,因此商店不会根据单周的数据突然过度补货。
-
缺点:商店可能无法迅速对季节性需求的实际变化做出反应,例如一个漫长的寒冷时期。在这种情况下,他们可能会因为库存不足而错过潜在的销售额。
虽然这个统计模型在平衡近期需求与预测稳定化方面提供了灵活性,但上述例子也突出了趋势预测、季节性模式和外部变量分析的局限性。
-
趋势预测:简单指数平滑不考虑趋势。这一局限性可以通过双指数平滑来解决,它包含了趋势成分。
-
季节性识别:该模型不识别季节性模式。这可以通过三指数平滑模型来纠正。
-
外部变量:它无法原生地整合外部解释变量,如定价或营销费用。
双指数平滑:简单指数平滑的进阶
简单指数平滑的一个关键局限性是它无法检测和预测数据中的趋势。该模型只能预测需求水平。
💡 趋势:趋势定义为两个连续时期之间时间序列水平的平均变化。
双指数平滑不仅通过预测水平,还通过应用指数权重(用 Beta(β)表示)来强调最近观察的重要性,从而解决了这一局限性,预测趋势随时间的变化。
指数平滑模型背后的基本原理是,每个需求成分——目前是水平和趋势——在每个周期结束后,根据两个关键信息进行更新:最后一个观察值和每个成分的前一个估计值。
假设预测是水平a和趋势b的总和,水平的估计由以下公式给出:
模型将利用两条信息更新其对水平 a(t) 的估计:
-
最后的需求观察 d(t)
-
前一水平估计 a(t-1) 通过趋势 b(t-1) 增加
另一方面,趋势的估计由以下公式给出:
然而,像任何模型一样,双指数平滑仍然有一些局限性:
- 超越历史时期的恒定趋势:
当模型没有关于需求可能如何变化的新信息时,它将假设趋势(方向和速率)从该点开始保持不变。
想象一家销售泳装商店。在夏季(历史时期),需求每月增长 5%。夏季结束时(预测时期),模型将继续预测每月增长 5%,假设需求将持续增长。然而,随着秋天的临近,实际需求急剧下降。模型的固定趋势假设现在将显著高估需求,导致库存过剩,并可能导致成本更高。
但,当然还存在另一种双指数平滑的版本来解决这个问题:加性阻尼趋势霍尔特线性指数平滑
关于此统计模型的进一步阅读,我建议以下论文和文章:
> Damped-trend-Modelling.pdf 由 C. T. Bauer 商学院
-
缺乏季节性
-
无法考虑外部因素的可能性
三指数平滑:更有效地处理季节性的方法
三指数平滑是双指数平滑的扩展,它结合了趋势和季节性,用于时间序列预测。该模型特别适用于具有季节性模式的数据集,通过考虑在特定间隔内重复出现的波动(例如,每日、每月或每年),可以实现更准确的预测。
由 Collab Media 在 Unsplash 上拍摄的照片
因此,三指数平滑的关键组成部分包括:
-
水平 (a): 数据围绕其波动的平均值。
-
趋势 (b): 数据的长期进展(增加或减少)。
-
季节性 (s): 数据在固定间隔内重复出现的模式或周期。
三指数平滑模型将是以下模型:
其中:
-
f*(t+1)* = 下一个时期 t+1 的预测
-
a*(t)* = 时期 t 的水平
-
Φ * b*(t)* = damped trend at period t
-
s*(t+1−p)*: This is the seasonal factor applied to period t+1
术语 t+1−p refers to an earlier period within the same seasonal cycle and variable p is the length of the seasonality cycle. For instance:
-
For monthly data with yearly seasonality, p = 12 (since there are 12 months in a year)
-
For weekly data with daily seasonality, p = 7 (as there are 7 days in a week)
The seasonal factor is often calculated based on historical data by examining the recurring patterns. Here’s how it functions:
放大或减少预测:
-
季节性因子 s*(t+1−p)* either amplifies or reduces the base forecast a*(t) +* Φ * b*(t)* to reflect higher or lower demand that typically occurs in that specific period
-
For example, if s*(t+1−p)* > 1, it will increase the forecast, indicating a high-demand season (e.g., holidays for retail)
-
If s*(t+1−p) <* 1, it will reduce the forecast, indicating a low-demand season (e.g., winter for swimsuit sales).
与季节周期对齐:
- The seasonal factor s*(t+1−p)* is selected to match the point within the season’s cycle that corresponds to the forecast period t+1. This ensures that, say, each January is adjusted by the same factor if monthly seasonality is in play, or each Monday is adjusted similarly if weekly seasonality is applied.
For a retail store that experiences seasonal demand:
-
Suppose p=12 (monthly data with yearly seasonality).
-
If you’re forecasting for January 2024 (period t+1), you’d apply the seasonal factor s1 (as January was the first month in the last cycle).
-
If January historically has 20% higher demand than the average, then s*(t+1−p)* for January will be 1.2, increasing the forecast.
结论
Each forecasting model has its unique strengths and limitations. Statistical models, such as exponential smoothing, offer effective and straightforward solutions for demand forecasting. They are often easier to implement, interpret, and maintain compared to more complex AI/ML models.
However, when forecasting accuracy depends on a higher degree of certainty or when incorporating a broader range of explanatory variables (such as external economic indicators, promotions, or seasonality), ML models may offer advantages.
Ultimately, the best choice depends on our specific KPIs, error metrics, and the complexity of the demand patterns we need to capture.
保持关注!
Coming up next, I’ll explore demand forecasting with machine learning and share some handy Python scripts to get you started. I’ll also provide hands-on examples, especially focusing on triple exponential smoothing. Don’t miss out on these practical tips to level up your forecasting game!
我希望你喜欢这篇文章!欢迎点赞 👏 ,评论 🗨️ 或与朋友分享 📨 这篇文章。
感谢阅读,别忘了关注我或订阅更多文章 🚀
875

被折叠的 条评论
为什么被折叠?



