【LSTM时序预测】LSTM时间序列神经网络预测【含Matlab源码 2267期】

⛄一、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄二、时间序列简介

1 时间序列模型概述
1.1 时间序列的不同分类
时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列。分析时间序 列的方法构成数据分析的一个重要领域,即时间序列分析。 时间序列根据所研究的依据不同,可有不同的分类。
(1)按所研究的对象的多少分,有一元时间序列和多元时间序列。
(2)按时间的连续性可将时间序列分为离散时间序列和连续时间序列两种。
(3)按序列的统计特性分,有平稳时间序列和非平稳时间序列。如果一个时间序列的概率分布与时间t无关,则称该序列为严格的(狭义的)平稳时间序列。如果序列的 一、二阶矩存在,而且对任意时刻t满足:
①均值为常数
②协方差为时间间隔 的函数。 则称该序列为宽平稳时间序列,也叫广义平稳时间序列。我们以后所研究的时间序列主 要是宽平稳时间序列。
(3)按时间序列的分布规律来分,有高斯型时间序列和非高斯型时间序列。

确定性时间序列分析方法概述
时间序列预测技术就是通过对预测目标自身时间序列的处理,来研究其变化趋势 的。一个时间序列往往是以下几类变化形式的叠加或耦合。 我们常认为一个时间序列可以分解为以下四大部分:
(1)长期趋势变动。它是指时间序列朝着一定的方向持续上升或下降,或停留在 某一水平上的倾向,它反映了客观事物的主要变化趋势。
(2)季节变动。
(3)循环变动。通常是指周期为一年以上,由非季节因素引起的涨落起伏波形相 似的波动。
(4)不规则变动。通常它分为突然变动和随机变动。

三种时间序列模型
在这里插入图片描述
如果在预测时间范围以内,无突然变动且随机变动的方差 \small \sigma ^{2} 较小,并且有理由认 为过去和现在的演变趋势将继续发展到未来时,可用一些经验方法进行预测。

2 移动平均法
移动平均法是根据时间序列资料逐渐推移,依次计算包含一定项数的时序平均数, 以反映长期趋势的方法。当时间序列的数值由于受周期变动和不规则变动的影响,起伏 较大,不易显示出发展趋势时,可用移动平均法,消除这些因素的影响,分析、预测序列的长期趋势。 移动平均法有简单移动平均法,加权移动平均法,趋势移动平均法等。

2.1 简单移动平均法
在这里插入图片描述
近N 期序列值的平均值作为未来各期的预测结果。一般 N 的取值范围: 5≤N≤ 200。当历史序列的基本趋势变化不大且序列中随机变动成分较多时,N 的 取值应较大一些。否则 N 的取值应小一些。在有确定的季节变动周期的资料中,移动平均的项数应取周期长度。选择佳 N 值的一个有效方法是,比较若干模型的预测误 差。预测标准误差小者为好。
简单移动平均法只适合做近期预测,而且是预测目标的发展趋势变化不大的情况。 如果目标的发展趋势存在其它的变化,采用简单移动平均法就会产生较大的预测偏差和滞后。

2.2 加权移动平均法
在简单移动平均公式中,每期数据在求平均时的作用是等同的。但是,每期数据所包含的信息量不一样,近期数据包含着更多关于未来情况的信心。因此,把各期数据等同看待是不尽合理的,应考虑各期数据的重要性,对近期数据给予较大的权重,这就 是加权移动平均法的基本思想。
在这里插入图片描述
在加权移动平均法中, 的选择,同样具有一定的经验性。一般的原则是:近期 数据的权数大,远期数据的权数小。至于大到什么程度和小到什么程度,则需要按照预 测者对序列的了解和分析来确定。

2.3 趋势移动平均法
简单移动平均法和加权移动平均法,在时间序列没有明显的趋势变动时,能够准确 反映实际情况。但当时间序列出现直线增加或减少的变动趋势时,用简单移动平均法和 加权移动平均法来预测就会出现滞后偏差。因此,需要进行修正,修正的方法是作二次 移动平均,利用移动平均滞后偏差的规律来建立直线趋势的预测模型。这就是趋势移动平均法。 一次移动的平均数为
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
趋势移动平均法对于同时存在直线趋势与周期波动的序列,是一种既能反映趋势变 化,又可以有效地分离出来周期变动的方法。

3 一般自回归模型 AR(n)
白噪声序列
在这里插入图片描述
移动平均模型 MA(m)
在这里插入图片描述
自回归移动平均模型
在这里插入图片描述
ARMA 模型的特性
在时间序列的时域分析中,线性差分方程是极为有效的工具。事实上,任何一个 ARMA 模型都是一个线性差分方程。

AR(1)系统的格林函数
格林函数就是描述系统记忆扰动程度的函数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于格林函数就是差分方程解的系数函数,格林函数的意义可概括如下:
在这里插入图片描述
ARMA (2,1)系统的格林函数 的隐式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
逆函数和可逆性
在这里插入图片描述

在这里插入图片描述
4 时间序列建模的基本步骤
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄三、部分源代码

%% 初始化程序
warning off % 关闭报警信息
close all % 关闭所有图窗
clear % 清空变量
clc % 清空命令行

%% 读取数据
sn = xlsread(‘数据集.xlsx’);

%% 滑动时间窗重构数据集
delay=10;
for i=1:length(sn)-delay
data(i,:)=sn(i:i+delay)'; % 构建时间窗内以及下一刻的样本序列
end

%% 划分训练集与测试集
% 重构数据集的总长度为500 - delay,即490
inputTrainDataset = data(1:390, 1:delay)‘; % 前390行数据训练,时间窗长度内的数据作为输入变量
outputTrainDataset = data(1:390, delay + 1)’; % 前390行数据训练,时间窗长度外的下一刻为输出目标

inputTestDataset = data(391:490, 1:delay)‘; % 391到490行数据训练,时间窗长度内的数据作为输入变量
outputTestDataset = data(391 : 490, delay + 1)’; % 391到490行数据训练,时间窗长度外的下一刻为输出目标

%% 归一化处理
[inputn_train, input_ps] = mapminmax(inputTrainDataset, 0, 1);
inputn_test = mapminmax(‘apply’, inputTestDataset, input_ps);
[outputn_train, output_ps] = mapminmax(outputTrainDataset, 0, 1);

%% 设置参数
inputnode = length(inputn_train(:, 1)); % 输入层节点
outputnode = 1; % 输出层节点

hiddennode1 = 10; % 第一隐含层节点
hiddennode2 = 20; % 第二隐含层节点

% 创建网络
layers = [ …
sequenceInputLayer(inputnode)
lstmLayer(hiddennode1,‘OutputMode’,‘last’,‘name’,‘hidden1’)
dropoutLayer(0.3,‘name’,‘dropout_1’) %隐藏层1权重丢失率,防止过拟合
lstmLayer(hiddennode2,‘OutputMode’,‘last’,‘name’,‘hidden2’)
dropoutLayer(0.3,‘name’,‘dropout_2’) %隐藏层2权重丢失率,防止过拟合
fullyConnectedLayer(outputnode,‘name’,‘fullconnect’)
regressionLayer(‘name’,‘out’)]; % %回归层

% 参数设定
%指定训练选项,
options = trainingOptions(‘adam’, … %学习算法为adam
‘MaxEpochs’,300, … %遍历样本最大循环数
‘InitialLearnRate’,0.1, … %初始学习率
‘LearnRateSchedule’,‘piecewise’, … % 学习率计划
‘LearnRateDropPeriod’,50, … %50个epoch后学习率更新
‘LearnRateDropFactor’,0.1, … % 通过乘以因子 0.1 来降低学习率
‘MiniBatchSize’,round(size(inputn_train, 2)/10),… % 批处理样本大小每批次为训练集的十分之一样本
‘Verbose’,1, … %命令控制台是否打印训练过程
‘Plots’,‘training-progress’);

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]赵明珠,王丹,方杰,李岩,毛军.基于LSTM神经网络的地铁车站温度预测[J].北京交通大学学报. 2020,44(04)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab中,可以使用Deep Learning Toolbox来实现STM模型。LSTM(Long Short-Term Memory)是一种循环神经网络(RNN)的变体,用于处理序列数据和时间序列数据。 在Matlab中,可以按照以下步骤来实现LSTM模型: 1. 准备数据:首先,需要准备训练数据和测试数据。通常,数据应该是一个二维矩阵,其中每一行表示一个样本,每一列表示一个特征。 2. 创建LSTM网络:使用`lstmLayer`函数创建一个LSTM层。可以指定LSTM层的大小、激活函数等参数。 3. 创建其他网络层:根据需要,可以添加其他类型的网络层,如全连接层、卷积层等。 4. 创建网络模型:使用`layerGraph`函数创建一个网络模型,并将LSTM层和其他层添加到模型中。 5. 配置训练选项:使用`trainingOptions`函数配置训练选项,如学习率、最大迭代次数等。 6. 训练模型:使用`trainNetwork`函数对模型进行训练。将训练数据和训练选项作为输入参数传递给该函数。 7. 测试模型:使用训练好的模型对测试数据进行预测,并评估模型的性能。 下面是一个示例代码,展示了如何在Matlab中实现一个简单的LSTM模型: ```matlab % 准备数据 data = ...; % 输入数据 labels = ...; % 标签数据 % 创建LSTMlstmLayer = lstmLayer(hiddenSize); % 创建全连接层 fcLayer = fullyConnectedLayer(numClasses); % 创建网络模型 layers = [sequenceInputLayer(inputSize) lstmLayer fcLayer softmaxLayer classificationLayer]; % 配置训练选项 options = trainingOptions('adam', 'MaxEpochs', 100); % 训练模型 net = trainNetwork(data, labels, layers, options); % 测试模型 predictions = classify(net, testData); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值