如何将神经网络应用于时间序列预测?

机器算法验证 时间序列 预测 神经网络
2022-01-16 22:25:29

我是机器学习的新手,我一直在试图弄清楚如何将神经网络应用于时间序列预测。我找到了与我的查询相关的资源,但我似乎还是有点迷茫。我认为没有太多细节的基本解释会有所帮助。

假设我有几年内每个月的一些价格值,我想预测新的价格值。我可以获得过去几个月的价格清单,然后尝试使用 K-Nearest-Neighbor 查找过去的类似趋势。我可以让他们使用变化率或过去趋势的其他属性来尝试预测新价格。我如何将神经网络应用于同样的问题是我想要找出的。

1个回答

这是一个简单的食谱,可以帮助您开始编写代码和测试想法......

假设您记录了几年的月度数据,因此您有 36 个值。我们还假设您只关心提前一个月(价值)的预测。

  1. 探索性数据分析:应用一些传统的时间序列分析方法来估计数据中的滞后依赖性(例如自相关和部分自相关图、转换、差分)。假设您发现给定月份的值与过去三个月的数据相关,但除此之外没有太大关系。
  2. 将数据划分为训练集和验证集:将前 24 个点作为训练值,其余点作为验证集。
  3. 创建神经网络布局:您将过去三个月的值作为输入,并希望预测下个月的值。因此,您需要一个神经网络,其输入层包含三个节点,输出层包含一个节点。你可能应该有一个至少有几个节点的隐藏层。不幸的是,选择隐藏层的数量,以及它们各自的节点数量,并没有明确的指导方针。我会从小处着手,比如 3:2:1。
  4. 创建训练模式:每个训练模式将有四个值,前三个对应于输入节点,最后一个定义输出节点的正确值。例如,如果您的训练数据是值
    x1,x2,x24
    pattern1:x1,x2,x3,x4
    pattern2:x2,x3,x4,x5
    pattern21:x21,x22,x23,x24
  5. 在这些模式上训练神经网络
  6. 在验证集上测试网络(第 25-36 个月):在这里,您将传入神经网络输入层所需的三个值,并查看输出节点设置为什么。因此,要查看经过训练的神经网络如何预测第 32 个月的值,您将传入第 29、30 和 31 个月的值

这个秘籍显然是高级别的,当你试图将你的上下文映射到不同的软件库/程序时,你可能会一开始就摸不着头脑。但是,希望这能勾勒出要点:您需要创建合理地包含您尝试预测的序列的相关结构的训练模式。无论您使用神经网络还是 ARIMA 模型进行预测,确定该结构是什么的探索性工作通常是最耗时和最困难的部分。

根据我的经验,神经网络可以提供出色的分类和预测功能,但设置它们可能很耗时。在上面的例子中,你可能会发现 21 种训练模式是不够的;不同的输入数据转换导致更好/更差的预测;改变隐藏层和隐藏层节点的数量会极大地影响预测;等等

我强烈建议您查看neural_forecasting网站,其中包含大量有关神经网络预测竞赛的信息。动机页面特别有用