时间序列预测模型(常用的时间序列模型有哪些)

点击关注,尽在AI中国。在我的其他帖子中,我谈到了许多话题,例如:如何将机器学习与物理学结合起来,以及机器学习如何用于生产优化、异常检测和条件监控。但在本文中,

点击关注,尽在AI中国。在我的其他帖子中,我谈到了许多话题,例如:如何将机器学习与物理学结合起来,以及机器学习如何用于生产优化、异常检测和条件监控。但在本文中,我将讨论机器学习在时间序列预测中的一些常见缺陷。

时间序列预测模型(常用的时间序列模型有哪些)插图

时间序列预测是机器学习的一个重要领域。这一点很重要,因为有许多预测问题涉及时间因素。然而,虽然时间部分增加了额外的信息,但与许多其他预测任务相比,它也使时间序列问题更难处理。

本文将介绍使用机器学习进行时间序列预测的任务,以及如何避免一些常见的陷阱。我会通过一个具体的例子来说明如何拥有一个好的模型并投入生产,但实际上,模型可能没有任何预测能力。更具体地说,我将重点讨论如何评估您的模型准确性,并说明如果我们简单地依赖常见的误差指标,如平均百分比误差、R2分数等。

时间序列预测的机器学习模型

有几种类型的模型可用于时间序列预测。在这个具体的例子中,我使用了长期和短期记忆网络,简称LSTM网络,这是一种特殊的神经网络,可以根据以前的数据进行预测。它广泛应用于语音识别、时间序列分析等领域。然而,根据我的经验,在许多情况下,更简单的模型类型实际上提供了准确的预测。使用随机森林、梯度增强回归和时间延迟神经网络等模型,通过在输入中添加一组时间延迟,可以在不同的时间点表示数据。由于TDNN的序列特性,它被认为是一个前馈神经网络,而不是一个递归神经网络。

如何使用开源软件库实现该模型

我通常用Keras来定义我的神经网络模型类型。Keras是一个高级神经网络API,用Python编写,能够在TensorFlow、CNTK或Theano上运行。对于其他类型的模型,我通常使用Scikit-Learn,这是一个免费的软件机器学习库。它具有各种分类、回归和聚类算法,包括支持向量机、随机森林、梯度增强、k-means和DBSCAN,旨在与Python数值和科学库NumPy和SciPy互操作。

但是,本文的主要内容不是如何实现时间序列预测模型,而是如何对模型预测进行评价。所以,关于模型建立等我就不赘述了。,因为有许多其他博客帖子和文章涉及这些主题。

示例:时间序列数据的预测

下图显示了这种情况下使用的示例数据。稍后我将更详细地返回数据,但现在,让我们假设这些数据代表股票指数的年度演变。数据分为训练集和测试集,其中前250天作为模型的训练数据,然后我们在数据集的最后一部分尝试预测股票指数。

时间序列预测模型(常用的时间序列模型有哪些)插图(1)

由于我不关注模型实现,我们直接进入评估模型准确性的过程。仅通过直接观察上图,模型预测似乎与实际指标非常接近,表明准确性较好。但是为了更加准确,我们可以通过在如下图所示的散点图中绘制实际值和预测值来评估模型的准确性,并计算常见的误差测度R2评分。

时间序列预测模型(常用的时间序列模型有哪些)插图(2)

从模型预测中,我们得到0.89的R2分数,并且看起来真实值和预测值之间有很好的匹配。然而,正如我现在将要详细讨论的,这种测量和模型评估可能会产生误导。

这是完全错误的。......

从上述数字和计算的误差指标来看,该模型显然给出了准确的预测。然而,事实并非如此。这只是一个示例,说明在评估模型的性能时,选择错误的准确性度量可能会产生很大的误导。在该示例中,为了便于解释,明确选择数据来表示事实上无法预测的数据。更具体地说,我称之为“股票指数”的数据实际上是使用随机行走过程建模的。顾名思义,随机漫步是一个完全随机的过程。因此,用历史数据作为训练集来学习行为和预测未来结果的想法是不可能的。有鉴于此,这个模型怎么能给我们如此准确的预测呢?我会更详细地回顾一下,最后发现这一切都归结于精度度量的(错误)选择。

时间延迟预测和自相关

顾名思义,时间序列数据不同于其他类型的数据,因为时间非常重要。从积极的方面来看,这为我们建立机器学习模型提供了额外的信息,不仅输入特征包含有用的信息,而且输入/输出也随时间变化。然而,虽然时间部分增加了额外的信息,但与许多其他预测任务相比,它也使时间序列问题更难处理。

在这个具体的例子中,我使用了一个LSTM网络,它根据以前的数据进行预测。但是,当模型预测稍微放大后,如下图所示,我们就开始看到模型实际在做什么了。

时间序列预测模型(常用的时间序列模型有哪些)插图(3)

时间序列数据往往具有时间相关性,表现出显著的自相关性。在这种情况下,这意味着“t+1”时刻的指数很可能接近t时刻的指数,如右图所示,模型实际做的是在预测“t+1”时刻的值时,只是简单地将“t”时刻的值作为预测(通常称为持久性)模型)。画出预测值和实际值的互相关(下图),可以看到在1天的时滞处有一个明显的峰值,说明模型只是用前一个值作为对未来的预测。

时间序列预测模型(常用的时间序列模型有哪些)插图(4)

如果使用不当,准确性指数可能会产生误导。

这意味着,当根据模型直接预测值的能力来评估模型时,常见的误差度量(如平均百分比误差和R2分数)显示出较高的预测准确性。但是,该模型无法预测未来的结果,因为样本数据是通过随机行走过程生成的。这凸显了一个重要的事实,即简单地通过直接计算常见的误差度量来评估模型的预测能力可能会产生误导,很容易被误解为对模型的准确性过于自信。

平稳和差分时间序列数据

静态时间序列是一个常数,其统计特征(如均值、方差、自相关等。)随时间变化。大多数统计预测方法都是基于这样的假设,即通过使用数学变换,时间序列可以是近似静态的(即“固定的”)。一个这样的基本转换是数据的时差,如下图所示。

时间序列预测模型(常用的时间序列模型有哪些)插图(5)

这种转换的效果是,我们不是直接考虑指数,而是计算连续时间步长之间的差异。

定义一个模型来预测时间步长之间的值的差异,而不是值本身,这是对模型预测能力的更强测试。在这种情况下,不能简单地用自相关性强的数据,用时间“t”的值作为“t+1”的预测。因此,它提供了对模型的更好的测试,以及它是否从训练阶段学到了任何有用的东西,以及分析历史数据是否实际上可以帮助模型预测未来的变化。

时差数据预测模型

因为能够预测时差数据而不是直接预测数据是模型预测能力的更强指标,所以让我们尝试使用我们的模型。测试结果如下图所示,显示了实际值和预测值的散点图。

时间序列预测模型(常用的时间序列模型有哪些)插图(6)

该图显示,模型无法根据历史事件预测未来的变化,这是本例中的预期结果,因为数据是使用完全随机行走过程生成的。根据定义,预测随机过程的未来结果是不可能的。如果有人声称这样做,那么我们应该保持怀疑。

你的时间序列是随机游走吗?

你的时间序列实际上可能是随机游走的。可以按如下方式检查一些方法:

时间序列显示强烈的时间依赖性(自相关),其线性衰减或以类似的模式衰减。时间序列是非平稳的并且使其静止,在数据中没有明显可学习的结构。持久性模型(使用前一时间步骤中的观察结果,作为下一个时间步骤中将要发生的事情)提供了可靠预测的最佳来源。

最后一点是时间序列预测的关键。使用持久性模型的基线预测可以快速表明您是否可以做得更好。如果你不能,你可能在处理随机漫步(或接近它)。人类的大脑天生就是到处寻找模式的,所以我们必须保持警惕,不要浪费时间去开发随机行走的复杂模型。

摘要

我想通过这篇文章强调的主要观点是,在评估模型性能的预测精度时,我们应该非常小心。从上面的例子可以看出,即使是完全随机的过程,也无法根据定义预测未来的结果,人很容易被忽悠。通过简单地定义模型,进行一些预测,计算常见的精度指标,似乎人们可以有一个好的模型,并决定将其投入生产。然而,事实上,这个模型可能没有任何预测能力。

如果你正在做时间序列预测,你可能认为自己是一个数据科学家,我建议你也关注科学家。永远要对数据告诉你的东西持怀疑态度,问关键问题,永远不要得出任何草率的结论。科学应该像其他科学一样应用于数据科学。

时间序列预测模型(常用的时间序列模型有哪些)插图(7)

编译出品编译和制作

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/108379.html

发表回复

登录后才能评论