为何你不需要深度学习来进行时间序列预测,以及你需要什么

Why You (Currently) Do Not Need Deep Learning for Time Series Forecasting | by Jonte Dancker | Towards Data Science

在时间序列预测领域,深度学习受到了广泛关注。许多文章和科学论文都在讨论最新的深度学习模型,以及它们如何超越了机器学习或统计模型。这给人一种印象,即深度学习将解决时间序列预测的所有问题,尤其是对新入行的人来说。然而,根据我的经验,深度学习并不是你需要的。其他东西对时间序列预测更为重要,也更有效。

本文旨在展示在时间序列预测中真正有效的方法。我将使用Makridakis M5竞赛和2023年Kaggle AI报告的发现,并结合我的经验进行比较。

Makridakis竞赛通过在真实世界数据集上比较预测方法,展示了实践中的有效方法。自近40年前竞赛开始以来,其发现已经发生了变化。在前三次竞赛M1至M3中,统计模型主导了该领域。在M4竞赛中,机器学习模型开始以混合方法的形式展现潜力,这些方法结合了机器学习模型和统计方法。

在M5竞赛中,参与者需要预测沃尔玛的分层单位销售。竞赛分为准确性和不确定性两个部分。准确性竞赛的目标是为每个时间序列找到最佳的点预测。不确定性竞赛则专注于概率预测。为此,参与者需要预测描述未来销售完整分布的九个不同分位数。

相比之下,Kaggle AI报告包含了Kaggle社区作为Kaggle竞赛一部分所撰写的一系列文章。它们通常收集了最近高性能解决方案的关键学习和趋势。

顺便说一句,Kaggle举办了M5竞赛。因此,该竞赛吸引了许多参与其他Kaggle竞赛的人。这可能是Kaggle AI报告和M5竞赛结果非常相似的原因。

我们来看看发现是什么。

机器学习方法显示出优越的性能

在过去的几年中,机器学习方法已经接管了时间序列预测领域。在2020年的M4竞赛中,它们开始作为混合方法的一部分变得重要。但在两年后的M5竞赛中,机器学习主导了竞赛。所有表现最佳的解决方案都是纯粹的机器学习方法,超越了所有统计基准。

特别是梯度提升机(GBM)在M5和Kaggle竞赛中占据主导地位。最成功的是LightGBM、XGBoost和CatBoost。它们有效地处理了许多特征,几乎不需要数据预处理和转换,训练速度快,并且能够量化特征重要性,使它们成为近年来最好的现成模型之一。

它们非常方便于实验,并允许快速迭代,这在确定最佳特征时非常重要。此外,我们只需要优化少数超参数。通常,默认设置已经能够产生良好的性能。因此,它们已成为许多时间序列问题的首要算法。

此外,这些方法在性能和训练时间上都超越了深度学习模型。因此,深度学习模型不太受欢迎。

我的首选也是GBM,由于上述优势。我从XGBoost转向CatBoost,然后转向LightGBM。在许多问题中,LightGBM具有更好的性能和更短的训练时间。此外,LightGBM更适合小型数据集。例如,对于一个问题,我使用相同的特征和损失函数训练了CatBoost模型和LightGBM模型。CatBoost的训练时间大约比LightGBM多50%,并且MAE比LightGBM大2%。

统计方法仍然有价值

尽管机器学习方法通常优于统计模型,但我们不应忘记统计模型。在M5准确性竞赛中,92.5%的团队无法击败简单的基线方法,这是一种现成的预测方法。使用机器学习模型并不能保证最佳性能。此外,它们需要更多的时间来开发。

因此,我们应该始终从简单模型开始,然后再开始任何机器学习模型。我们可以将它们用作基线模型,以支持我们的决策。例如,机器学习模型是否增加了足够的价值来平衡增加的复杂性?

如果你想更多地了解基线模型以及为什么你应该从它们开始,可以查看我的文章《为什么你应该始终从基线模型开始》。基线模型的开发时间仅为10%,但使我们能够获得90%的合理结果。

集成提高性能

M5和Kaggle竞赛表明,结合不同的模型通常可以提高预测准确性。当个别模型犯下不相关的错误时,集成尤其成功。例如,M5竞赛中的一些团队结合了在训练数据的子集上训练的模型和具有不同损失函数的模型。

我们可以通过简单的平均(混合)、复杂的混合或堆叠方法来构建集成。然而,通常等权重就足够了。

尽管集成提高了模型性能,但它们在实际应用中也有缺点。它们增加了复杂性,降低了可解释性,并且在生产环境中更难维护。因此,非常复杂的集成通常不被使用。一个更简单的替代方案通常可以提供足够好的结果,同时更容易维护。

我在实际应用中看到了使用集成的好处。对我来说,通常有两种方法最有效。一种方法是结合在同一类型模型上训练的模型,如在不同损失函数上训练的LightGBM。另一种方法是使用具有不同特征训练的模型。我通常选择这两种方法,因为它们易于实现且快速测试。我只需要更改损失函数或模型输入,但可以完全保留我的管道的其余部分。

此外,我通常专注于简单的集成,以保持尽可能小的复杂性。通常,我使用简单的平均值。然而,集成的好处必须足够大,才能投入生产。通常,集成并没有足够地提高性能。

科学文献对应用时间序列预测的影响较小

我们看到了科学文献和应用机器学习预测时间序列之间的差距。科学文献主要关注深度学习模型。然而,这些模型在实践中并未被使用。

但为什么会有如此大的差距呢?论文展示了他们的模型如何击败机器学习和统计模型。那么为什么没有人使用它们呢?因为深度学习方法在实际应用中通常不成功。此外,它们的训练成本可能非常高。

但为什么科学文献如此关注深度学习,尽管它不实用呢?

我只能猜测,但深度学习比其他机器学习模型更引人注目。我在关于N-BEATS和N-HiTS的文章中看到了这一点。每个人都希望从事深度学习,因为LLM在NLP中取得了巨大成功。

N-BEATS——第一个适用于时间序列预测的可解释深度学习模型
一个关于N-BEATS如何工作以及如何使用它的易于理解的深入研究。

N-HiTS——使时间序列预测的深度学习更高效
一个关于N-HiTS如何工作以及如何使用它的深入研究

像Transformers这样的深度学习方法在NLP中表现良好,但在时间序列中并非如此。尽管这两个任务看起来相似,因为它们都是一系列值,但它们并非如此。在NLP中,上下文很重要,而在时间序列中,顺序很重要。这是一个小差异,但对有效的方法有很大影响。

因此,你可能会问自己,是否值得训练一个深度学习模型,它可能比机器学习模型表现得更差。我尝试了一些方法,如N-BEATS和N-HiTS。但这些模型总是表现不佳,并且比我的机器学习模型训练时间更长。因此,我从未成功地将它们应用于实际预测任务。

现在我谈了很多关于哪些模型有效,哪些模型无效。但仅仅关注模型是不够的。其他事情比选择正确的模型更重要。Kaggle AI报告和M5竞赛得出结论,良好的特征工程比模型更重要。这可能是开发新模型时最重要的方面。

特征工程比模型更重要

现实世界的数据是混乱的,需要大量清理才能使用。因此,我们需要大量的时间来清理和理解数据以找到好的特征。这是我在开发模型时花费大部分时间的地方。

在Kaggle竞赛中,特征工程已被反复证明是至关重要的。通常,特征的质量使解决方案之间产生差异。能够从数据中提取最多信息并创建更大特征分离的团队通常具有表现更好的模型。因此,花费时间创建、选择和转换特征至关重要。

但什么是特征工程的好方法呢?

根据我的经验,没有单一的最佳方法。它更像是尝试不同特征和特征组合的试错方法。帮助我找到好特征的是创造力和灵活性,以及使用数据驱动方法和良好的交叉验证策略。

有时,采取广泛的方法,生成许多特征是有帮助的。例如,如果我有许多外生变量和外部数据源可用,我通常从在没有任何转换的情况下使用它们开始。在这里,变量的选择取决于我的解释性数据分析的结果以及我发现的内容。

有时,最好专注于一个特征并将其以多种方式扩展。例如,如果你的数据量有限。我如何扩展一个单一特征取决于我想要解决的问题。有时使用窗口特征,如平均值、标准差或最小值和最大值,可以提高性能。有时,使用不同的滞后特征就足够了。

M5和Kaggle竞赛表明,不需要领域知识就能找到好的特征。然而,领域知识经常帮助我更快地理解数据并推导出更好的特征。

外生/解释变量可以提高性能

使用外部数据对提高预测性能至关重要。它们可以为模型的性能提供强大的提升。在M5竞赛中,使用外部数据的模型比仅依赖历史数据的模型表现更好。因此,在实际应用中找到这些解释变量至关重要。

我尝试确定尽可能多的外部因素。然后在我的特徵工程过程中测试这些。这些可以是简单的与日期时间相关的特征,如假期,或其他来源的数据。我的选择取决于推理期间的数据可用性和可访问性。

在实践中,我看到了添加外生变量时性能提升最大。因为在大多数实际应用中,你想要预测的时间序列的行为取决于外部因素。例如,如果你想预测电力价格,使用电力消耗和发电作为特征可以大大提高性能。为什么?因为当电力消耗增加或电力发电量减少时,电力价格通常会上涨。

尽可能快地迭代

由于我们通常在模型开发过程中尝试许多特征,我们必须尽可能快。我们不想花很长时间才能看到添加新特征是否有帮助。例如,在M5准确性竞赛中获胜的解决方案测试了220个模型。

因此,Kaggler经常使用LightGBM作为他们的首选模型,因为该模型训练速度非常快。这样,他们就可以在短时间内运行许多实验。

我同意这些发现。我通常测试的内容越多,得到的结果就越好。更多的特征、不同的特征组合和不同的损失函数。快速测试有助于我在更短的时间内测试许多假设。

然而,为了决定哪些特征提高了性能,我们必须反复评估我们的模型有多好。我们需要一种可信的方法,帮助我们识别最佳特征和模型。

有效的交叉验证策略至关重要

有效的交叉验证策略对于客观选择最佳模型至关重要。使用交叉验证构建本地验证过程可以帮助我们…

  • 理解模型性能是否可靠地提高
  • 发现模型犯错误或做出不可靠预测的领域
  • 指导我们的特征工程
  • 模拟样本外准确性
  • 避免对测试数据过拟合
  • 减轻不确定性
  • 调整模型的超参数

M5和Kaggle竞赛展示了这种重要性。许多M5竞赛中的团队未能为他们最终提交的最佳模型做出选择。在Kaggle竞赛中,公共排行榜上的最佳模型通常不是竞赛的获胜者。

然而,选择一个好的交叉验证策略可能很困难,有很多选择。

  • 我们选择哪个时期?
  • 验证窗口的大小是多少?
  • 我们如何更新窗口?
  • 我们使用哪些标准/指标来总结预测性能?

因此,策略应该始终取决于问题。

每个问题都需要独特的方法

Kaggle和M5竞赛的结果表明,我们需要为每个数据集和问题采取独特的方法。没有现成的解决方案。

为了决定哪种方法有效,我们需要我们的知识和经验。

我们必须根据预测任务的复杂性调整模型。这包括我上面讨论的所有要点。从特征工程到交叉验证,再到模型选择。

例如,在M5准确性竞赛中,为每个时间序列结合最佳模型比获胜解决方案高出大约两个百分点。

这就是为什么深度学习模型目前在实际应用中不起作用的原因。它们试图成为需要定制解决方案的问题的通用解决方案。深度学习模型承诺通过消除对详细特征工程的需求来简化我们的生活。例如,N-BEATS和N-HiTS承诺自动找到时间序列中的季节性和趋势成分。然而,它们没有找到时间序列的独特复杂性。相反,有了我们的知识,我们可以找到这些复杂性,并将它们编码成机器学习模型可以使用的特征,从而击败深度学习模型。

结论

M5竞赛和2023年Kaggle AI报告一致认为,对于时间序列预测有效和重要的是什么。我可以从我在应用时间序列预测任务中的工作经验中支持他们的结论。

最重要的因素是:

  • 机器学习模型显示出优越的性能
  • 统计方法仍然有价值
  • 集成提高性能
  • 科学文献对应用时间序列预测的影响较小
  • 特征工程比模型更重要
  • 外生/解释变量可以提高性能
  • 尽可能快地迭代
  • 有效的交叉验证策略至关重要
  • 每个问题都需要独特的方法

如你所见,深度学习不在列表中。

深度学习目前还不够好。这些模型还没有成功地从文献转移到实际问题。然而,这种情况可能会在未来改变。我们看到了从长期主导时间序列预测的统计模型,转向机器学习模型的转变。未来可能会发生对深度学习模型的类似转变。因此,保持对深度学习发展的了解是很好的。但目前,它们在今天的实际应用中并不实用。

因此,无论是在深度学习方面还是在机器学习方面,都有巨大的潜力可以进一步研究和改进。

  文章内容来自于网络,由百合树AI整理,如有侵权,联系删除。如需开始AI写作请返回主页。

上一篇:

下一篇:

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注