2000 种不同产品的时间序列预测策略?

机器算法验证 时间序列 聚类 预测
2022-02-10 08:24:42

首先,我意识到我的问题非常广泛,因此可能很难回答这个问题。

您对如何解决需要对 2000 多种不同产品进行预测/预测的“问题”有任何建议吗?换句话说,每种产品都需要不同的预测/预测。我有 2 年的周级历史数据(即每种产品每周的需求)。

我需要在很短的时间内完成这项工作:我有大约一周的时间来完成这项工作,因此我正在寻找可以快速制作相对较好的预测模型的方法。为每个产品创建模型并逐个仔细检查其性能太耗时了。

我想根据方差对产品进行细分,这样我就可以对方差低的产品使用简单的模型。虽然这可能并不理想,但这将是缩小我需要创建的模型数量的一种快速方法。

如果您对解决这个问题有任何实用的建议,我们将不胜感激。

3个回答

跟进@StephanKolassa 的回答:

  • 我同意 Stephan 的观点,即 R 中预测包中的 ETS() 可能是您最好和最快的选择。如果 ETS 没有给出好的结果,您可能还想使用Facebook 的 Prophet 包(Auto.arima 很容易使用,但根据我的经验,两年的每周数据对于 ARIMA 模型来说是不够的数据)。就我个人而言,我发现 Prophet 在您有促销和节日活动数据可用时更易于使用,否则 ETS() 可能会更好。您真正的挑战更多是如何在大量时间序列上有效地迭代您的预测算法的编码挑战。您可以查看此响应以获取有关如何自动生成预测的更多详细信息

  • 在需求预测中,经常执行某种形式的分层预测,即您有 2000 种产品,您需要对每个单独的产品进行单独的预测,但产品之间的相似之处可能有助于预测。您希望找到某种方法将产品沿产品层次结构组合在一起,然后使用层次结构预测来提高准确性。由于您正在寻找单个产品级别的预测,因此请尝试使用自上而下的分层方法。

  • 有点牵强,但我想把它说出来:亚马逊和优步使用神经网络来解决这类问题,他们没有对每个产品/时间序列进行单独的预测,而是使用一个巨大的循环神经网络来预测批量的所有时间序列。请注意,他们最终仍然对每种产品进行单独的预测(在 Uber 的情况下,它是每个城市的流量/需求,而不是产品),他们只是使用一个大型模型(LSTM 深度学习模型)一次性完成所有工作。这个想法在精神上类似于分层预测,因为神经网络从不同产品历史之间的相似性中学习,从而得出更好的预测。Uber 团队已经提供了他们的一些代码(通过 M4 竞赛 Github 存储库),但它是 C++ 代码(不完全是统计人群最喜欢的语言)。Amazon 的方法不是开源的,您必须使用他们的付费Amazon Forecast 服务来进行预测。


关于您的第二条评论:您需要区分预测销售和预测需求。需求是不受限制的,如果突然一件商品很受欢迎,而您的客户想要 200 件,那么您手头只有 50 件并不重要,您的需求仍然是 200 件。

在实践中,直接观察需求是非常困难的,所以我们用销售作为需求的代表。这有一个问题,因为它没有考虑客户想要购买产品但它不可用的情况。为了解决这个问题,连同历史销售数据,有关库存水平和缺货的信息要么直接包含在模型中,要么用于在生成预测模型之前对时间序列进行预处理

通常,不受约束的预测首先由预测引擎生成,然后传递到计划系统,然后添加您提到的约束(即需求是 500 个单位,但只有 300 个单位可用)以及其他约束(安全库存、演示库存、预算限制、促销计划或新产品推出等...)——但这属于计划和库存管理的一般范畴,而不是预测本身

我们只能给您非常一般的建议。

  • 是否有任何强大的驱动因素,例如促销或日历事件,或季节性、趋势或生命周期?如果是这样,请将它们包含在您的模型中。例如,您可以对促销的销售额进行回归,然后可能对残差进行建模(使用指数平滑或 ARIMA)。
  • 有些软件包在将多个时间序列模型拟合到一个序列方面做得相当好。然后,您可以简单地迭代您的 2000 系列,这不应该比一杯咖啡花费更多的运行时间。我特别推荐R 包中的ets()函数。(每周数据forecast的函数较少。auto.arima()
  • 至少浏览一本预测教科书,例如这本它使用forecast我上面推荐的包。
  • 你的最终目标是什么?你想要一个公正的预测吗?然后使用 MSE 评估点预测。您的奖金将取决于 MAPE 吗?那么这个 MAPE 问题列表可能会有所帮助。您需要预测来设定安全量吗?然后你需要分位数预测,而不是平均预测。forecast包中的功能可以为您提供这些功能。)

如果您有更具体的问题,请在 CV 上发布。

基于原始序列的方差的分割对我来说毫无意义,因为最好的模型应该是不可变的。考虑一个系列 ..model 它,然后将时间序列中的每个值乘以 1000 。

就可能具有确定性结构(脉冲/电平位移/本地时间趋势)或自回归季节性和 arima 结构的批量生产方程而言,您必须运行基于计算机的脚本。谨防假设没有确定性结构或固定假设的简单自动 arima 解决方案。