首页 > 其他分享 >RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测|附代码数据

RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测|附代码数据

时间:2023-06-14 23:33:06浏览次数:55  
标签:RNN 模型 长短期 神经网络 序列 LSTM 数据 预测

在 Tensorflow 之上运行的综合库,具有 CPU 和 GPU 功能

本文将演示如何在 R 中使用 LSTM 实现时间序列预测。

简单的介绍

时间序列涉及按时间顺序收集的数据。我用 xt∈R 表示单变量数据,其中 t∈T 是观察数据时的时间索引。时间 t 在 T=Z 的情况下可以是离散的,或者在 T=R 的情况下是连续的。为简化分析,我们将仅考虑离散时间序列。

长短期记忆 (LSTM) 网络是一种特殊的循环神经网络 (RNN),能够学习长期依赖关系。在常规的 RNN 中,小权重通过几个时间步一遍又一遍地相乘,并且梯度逐渐减小到零——这种情况称为梯度消失问题。

LSTM 网络通常由通过层连接的内存块(称为单元)组成。单元中的信息同时包含在单元状态 Ct 和隐藏状态 ht 中,并由称为门的机制通过 sigmoid 和 tanh 激活函数进行调节。

sigmoid 函数/层输出 0 到 1 之间的数字,其中 0 表示 没有通过 , 1 表示 全部通过。因此,LSTM 能够有条件地从单元状态中添加或删除信息。

一般来说,门将前一时间步 ht-1 和当前输入 xt 的隐藏状态作为输入,并将它们逐点乘以权重矩阵 W,并将偏差 b 添加到乘积中。

三个主要门:

  • 遗忘门:
  • 这决定了哪些信息将从单元状态中删除。
  • 输出是一个介于 0 和 1 之间的数字,0 表示 全部删除 ,1 表示 全部记住
  • 图片
  • 更新门:
  • 在这一步中,  tahn 激活层创建一个潜在候选向量,如下所示:
  • 图片
  • sigmoid 层创建一个更新过滤器,如下所示:
  • 图片
  • 接下来,旧单元状态 Ct-1 更新如下:
  • 图片
  • 输出门:
  • 在这一步中,sigmoid 层过滤将要输出的单元状态。
  • 图片
  • 然后将单元状态 Ct 通过 tanh 函数将值标准化到范围 [-1, 1]。
  • 最后,标准化后的单元格状态乘以过滤后的输出,得到隐藏状态 ht 并传递给下一个单元格:

加载必要的库和数据集

 
# 加载必要的包
library(keras)

或者安装如下:

 
# 然后按如下方式安装 TensorFlow :
install_keras()

我们将使用可用的长期利率数据 ,这是从 2007 年 1 月到 2018 年 3 月的月度数据。

图片

前五个观察样本

图片


点击标题查阅往期内容

图片

R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

数据准备

将数据转换为平稳数据

这是通过获取系列中两个连续值之间的差异来完成的。这种转换(通常称为差分)会删除数据中与时间相关的成分。此外,使用差分而不是原始值更容易建模,并且生成的模型具有更高的预测能力。

 
#将数据转换为平稳性
did = diff
head

图片

滞后数据集

LSTM 期望数据处于监督学习模式。也就是说,有一个目标变量 Y 和预测变量 X。为了实现这一点,我们通过滞后序列来变换序列,并将时间 (t−k)的值作为输入,将时间 t 的值作为输出,用于 k 步滞后数据集。

 
sps= laorm
head(sps)

图片

将数据集拆分为训练集和测试集

与大多数分析中训练和测试数据集是随机抽样的不同,对于时间序列数据,观察的顺序确实很重要。以下代码将系列的 前 70% 作为训练集,其余 30% 作为测试集。

 
## 分成训练集和测试集

N = nrow
n = round
tran = sud[1:n, ]
tt  = sud[(n+1):N,  ]

标准化数据

就像在任何其他神经网络模型中一样,我们将输入数据 X 重新标准化到激活函数的范围。如前所述,LSTM 的默认激活函数是 sigmoid 函数,其范围为 [-1, 1]。下面的代码将有助于这种转换。请注意,训练数据集的最小值和最大值是用于标准化训练和测试数据集以及预测值的标准化系数。这确保了测试数据的最小值和最大值不会影响模型。

 
## 标准化数据



Sad = scaa(trin, et, c(-1, 1))

y_in = Sed$slrn[, 2]
x_tn = Scd$sldin[, 1]

y_st = Sald$sleet[, 2]
x_st = Saed$sett[, 1]

将需要以下代码将预测值恢复为原始比例。

 
## 逆变换
invtg = function(sle, slr, fue = c(0, 1))

定义

定义模型

我们设置参数 stateful = TRUE 以便在处理一批样本后获得的内部状态被重新用作下一批样本的初始状态。由于网络是有状态的,我们必须从当前 [ samples ,  features ] 中以 [ samples ,  timesteps ,  features ]形式的 3 维数组提供输入批次,其中:

样本:每批中的观察数,也称为批大小。

时间步长:给定观察的单独时间步长。在此示例中,时间步长 = 1

特征:对于单变量情况,如本例所示,特征 = 1

图片

批量大小必须是训练样本和测试样本大小的共同因素。可以找到 LSTM 输入的一个很好的解释

 
# 将输入重塑为 3-维

# 指定所需的参数

bahse = 1 # 必须是训练样本和测试样本的公因子
ni = 1 # 可以调整这个,在模型调整阶段

#====================

keras_model_sequential
layer_lstm%>%
   layer_dense

编译模型

在这里,我将 mean_squared_error_指定 为损失函数,将_自适应_矩_估计 _Adam_指定为优化算法,并在每次更新时指定学习率和学习率衰减。最后,我使用 准确性 作为评估模型性能的指标。

 
compile(

  optimizer = optimizer_adam
)

模型汇总

 
summary

图片

拟合模型

我们设置参数 shuffle  = FALSE 以避免打乱训练集并保持 xi 和 xi+t 之间的依赖关系。LSTM 还需要在每个 epoch 之后重置网络状态。为了实现这一点,我们在 epoch 上运行一个循环,在每个 epoch 中我们拟合模型并通过参数 _reset_states()_重置状态。

 
for(i in 1:phs ){
  model %>% fit
  model %>% reset_states
}

作出预测

 
for(i in 1:L){
      # 逆标准化
      yhat = invert_scaling
      # 逆差分
      yhat = yhat + Sis[(n+i)]
     
}

绘制值

图片

图片


图片

本文摘选 《 R 语言用RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测 》 ,点击“阅读原文”获取全文完整资料。


点击标题查阅往期内容

结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
用PyTorch机器学习神经网络分类预测银行客户流失模型
PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据
Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R语言深度学习:用keras神经网络回归模型预测时间序列数据
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
MATLAB中用BP神经网络预测人体脂肪百分比数据
Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
R语言实现CNN(卷积神经网络)模型进行回归数据分析
SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型
【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析
Python使用神经网络进行简单文本分类
R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析
R语言基于递归神经网络RNN的温度时间序列预测
R语言神经网络模型预测车辆数量时间序列
R语言中的BP神经网络模型分析学生成绩
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
R语言实现拟合神经网络预测和结果可视化
用R语言实现神经网络预测股票实例
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译
用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

标签:RNN,模型,长短期,神经网络,序列,LSTM,数据,预测
From: https://www.cnblogs.com/tecdat/p/17481635.html

相关文章

  • LSTM和GRU网络的高级运用实例
    接着我们看看LSTM网络更复杂的运用,那就是用来预测气温。在这个例子中,我们可以使用很多高级数据处理功能,例如我们可以看到如何使用”recurrentdropout”来预防过度拟合,第二我们会把多个LTSM网络层堆积起来,增强怎个网络的解析能力,第三我们还会使用到双向反复性网络,它会把同一种信息......
  • Matlab用深度学习循环神经网络RNN长短期记忆LSTM进行波形时间序列数据预测|附代码数据
    全文链接:http://tecdat.cn/?p=27279最近我们被客户要求撰写关于深度学习循环神经网络RNN的研究报告,包括一些图形和统计输出。此示例说明如何使用长短期记忆(LSTM)网络预测时间序列LSTM神经网络架构和原理及其在Python中的预测应用LSTM网络是一种循环神经网络(RNN),它通过循......
  • 时间序列的lstm的输入输出
    lstm的官网总共有七个参数,其中只有前三个是必须的。由于大家普遍使用PyTorch的DataLoader来形成批量数据,因此batch_first也比较重要。input_size:在时间序列预测中,比如需要预测负荷,每一个负荷都是一个单独的值,都可以直接参与运算,因此并不需要将每一个负荷表示成一个向量,此时inp......
  • 基于LSTM(长短时极记忆网络)与AR自回归模型的时间序列预测
    前一段时间股市有一些大的波动,其实很早就有人说过,股市有风险,投资需谨慎。不过如果能有一个比较适合的模型进行预测就好了。今天我介绍一下,时间序列预测分析。本人也是深度循环网络的小白,所以也算是与大家共勉了哈。有问题还希望大家多多指正。闲话少说,上代码首先先读入numpy中的......
  • lstm中训练的时候点到点,改成点到图的,通常怎么改
    如果您希望将LSTM的点到点训练转换为点到图的训练,可以采取以下步骤进行修改:调整输入数据的形状:点到点的训练输入是一个时间序列的点,而点到图的训练需要将时间序列转换为图结构。您可以使用时间窗口滑动的方式,将多个连续时间步的点作为一个图的节点,从而形成图的结构。每个时间步......
  • Matlab用深度学习循环神经网络RNN长短期记忆LSTM进行波形时间序列数据预测|附代码数据
    全文链接:http://tecdat.cn/?p=27279最近我们被客户要求撰写关于深度学习循环神经网络RNN的研究报告,包括一些图形和统计输出。此示例说明如何使用长短期记忆(LSTM)网络预测时间序列LSTM神经网络架构和原理及其在Python中的预测应用LSTM网络是一种循环神经网络(RNN),它通过循......
  • 人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化
    人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测1.赛题简介项目链接以及码源见文末2021“AIEarth”人工智能创新挑战赛,以“AI助力精准气象和海洋预测”为主题,旨在探索人工智能技术在气......
  • 人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、
    人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测1.赛题简介项目链接以及码源见文末2021“AIEarth”人工智能创新挑战赛,以“AI助力精准气象和海洋预测”为主题,旨在探索人工智能技术在气......
  • Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化
    原文链接:http://tecdat.cn/?p=23689最近我们被客户要求撰写关于LSTM的研究报告,包括一些图形和统计输出。本文探索Python中的长短期记忆(LSTM)网络,以及如何使用它们来进行股市预测 ( 点击文末“阅读原文”获取完整代码数据******** )。在本文中,你将看到如何使用一个被称为长短时......
  • 人工智能创新挑战赛:助力精准气象和海洋预测Baseline[2]:数据探索性分析(温度风场可视化)
    “AIEarth”人工智能创新挑战赛:助力精准气象和海洋预测Baseline[2]:数据探索性分析(温度风场可视化)、CNN+LSTM模型建模1.气象海洋预测-数据分析数据分析是解决一个数据挖掘任务的重要一环,通过数据分析,我们可以了解标签的分布、数据中存在的缺失值和异常值、特征与标签之间的相关......