使用深度学习进行时间序列预测

本文演示了如何利用LSTM网络预测时间序列数据,包括开环和闭环预测方法。通过训练LSTM网络,对Waveform数据集进行预测,展示了如何归一化数据、定义网络架构以及评估预测准确性。
摘要由CSDN通过智能技术生成

目录

加载数据

准备要训练的数据

定义 LSTM 神经网络架构

指定训练选项

训练循环神经网络

测试循环神经网络

预测将来时间步

开环预测

闭环预测


        此示例说明如何使用长期短期记忆 (LSTM) 网络预测时间序列数据。

        LSTM 网络是一种循环神经网络 (RNN),它通过遍历时间步并更新 RNN 状态来处理输入数据。RNN 状态包含在所有先前时间步中记住的信息。可以使用 LSTM 神经网络,通过将先前的时间步作为输入来预测时间序列或序列的后续值。要为时间序列预测训练 LSTM 神经网络,请训练具有序列输出的回归 LSTM 神经网络,其中响应(目标)是将值移位了一个时间步的训练序列。也就是说,在输入序列的每个时间步,LSTM 神经网络都学习预测下一个时间步的值。

有两种预测方法:开环预测和闭环预测。

  • 开环预测仅使用输入数据预测序列中的下一个时间步。对后续时间步进行预测时,需要从数据源中收集真实值并将其用作输入。例如,假设要使用时间步 1 到 t−1 中收集的数据来预测序列的时间步 t 的值。要对时间步 t+1 进行预测,请等到记录下时间步 t 的真实值,并将其用作输入进行下一次预测。在进行下一次预测之前,如果有可以提供给 RNN 的真实值,则请使用开环预测。

  • 闭环预测通过使用先前的预测作为输入来预测序列中的后续时间步。在这种情况下,模型不需要真实值便可进行预测。例如,假设要仅使用在时间步 1 至 t−1 中收集的数据来预测序列的时间步 t 至 t+k 的值。要对时间步 i 进行预测,请使用时间步 i−1 的预测值作为输入。使用闭环预测来预测多个后续时间步,或在进行下一次预测之前没有真实值可提供给 RNN 时使用闭环预测。

        此图显示使用闭环预测的预测值的序列示例。

closedloop.png

        此示例使用 Waveform 数据集,它包含生成的 2000 个不同长度的合成波形,有三个通道。该示例训练一个 LSTM 神经网络,以同时使用闭环和开环预测根据先前时间步提供的值来预测波形的将来值。

加载数据

        从 WaveformData.mat 加载示例数据。数据是序列的 numObservations×1 元胞数组,其中 numObservations 是序列数。每个序列都是一个 numChannels×-numTimeSteps 数值数组,其中 numChannels 是序列的通道数,numTimeSteps 是序列的时间步数。

load WaveformData

查看前几个序列的大小。

data(1:5)
ans=5×1 cell array
    {3×103 double}
    {3×136 double}
    {3×140 double}
    {3×124 double}
    {3×127 double}

        查看通道数。为了训练 LSTM 神经网络,每个序列必须具有相同数量的通道。

numChannels = size(data{1},1)

numChannels = 3

        可视化绘图中的前几个序列。

figure
tiledlayout(2,2)
for i = 1:4
    nexttile
    stackedplot(data{i}')

    xlabel("Time Step")
end

如图所示:

        将数据划分为训练集和测试集。将 90% 的观测值用于训练,其余的用于测试。


                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值