关于数据挖掘:Matlab用深度学习循环神经网络RNN长短期记忆LSTM进行波形时间序列数据预测附代码数据

2次阅读

共计 4569 个字符,预计需要花费 12 分钟才能阅读完成。

全文链接:http://tecdat.cn/?p=27279

最近咱们被客户要求撰写对于深度学习循环神经网络 RNN 的钻研报告,包含一些图形和统计输入。

此示例阐明如何应用长短期记忆 (LSTM) 网络预测工夫序列

LSTM 神经网络架构和原理及其在 Python 中的预测利用

LSTM 网络是一种循环神经网络 (RNN),它通过循环工夫步长和更新网络状态来解决输出数据。网络状态蕴含在所有先前工夫步长中记住的信息。您能够应用 LSTM 网络应用先前的工夫步长作为输出来预测工夫序列或序列的后续值。要训练 LSTM 网络进行工夫序列预测,请训练具备序列输入的回归 LSTM 网络,其中响应(指标)是训练序列,其值偏移了一个工夫步长。换句话说,在输出序列的每个工夫步,LSTM 网络学习预测下一个工夫步的值。

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

  • 开环预测仅应用输出数据预测序列中的下一个工夫步长。在对后续工夫步进行预测时,您会从数据源中收集实在值并将其用作输出。
  • 闭环预测通过应用先前的预测作为输出来预测序列中的后续工夫步长。在这种状况下,模型不须要实在值来进行预测。

此图显示了一个示例序列,其中蕴含应用闭环预测的预测值。

此示例应用波形数据集,其中蕴含 2000 个具备三个通道的不同长度的综合生成波形。该示例训练 LSTM 网络以应用闭环和开环预测在给定先前工夫步长的值的状况下预测波形的将来值。


点击题目查阅往期内容

Python 用 RNN 神经网络:LSTM、GRU、回归和 ARIMA 对 COVID19 新冠疫情人数工夫序列预测

左右滑动查看更多

01

02

03

04

加载数据

查看前几个序列的大小。

data(1:5)

查看声道数量。为了训练网络,每个序列必须具备雷同数量的声道。

nufdmChahgnnhels = 3

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

for i = 1:4    nexttsdile    staasdcgafdgkedplot(dadgta{i}')

将数据划分为训练集和测试集。将 90% 的察看后果用于训练,其余用于测试。

筹备训练数据

要预测序列的将来工夫步长的值,请将指标指定为训练序列,其值挪动一个工夫步长。换句话说,在输出序列的每个工夫步,LSTM 网络学习预测下一个工夫步的值。预测变量是没有最终工夫步长的训练序列。

for n = 1:nasumel(dddataTrainsf)

    Xd = dataTrgainsg{n};

    XgfTrdfain{n} = dfX(:,1:efgdnd-1);

    TTraign{n} = gXd(:,2:efnd);end

为了更好地拟合并避免训练发散,请将预测变量和指标归一化以具备零均值和单位方差。进行预测时,还必须应用与训练数据雷同的统计数据对测试数据进行标准化。要轻松计算所有序列的均值和标准差,请在工夫维度上连贯序列。

定义 LSTM 网络架构

创立一个 LSTM 回归网络。

  • 应用输出大小与输出数据的通道数相匹配的序列输出层。
  • 应用具备 128 个暗藏单元的 LSTM 层。暗藏单元的数量决定了层学习了多少信息。应用更多暗藏单元能够产生更精确的后果,但更有可能导致对训练数据的适度拟合。
  • 要输入与输出数据具备雷同通道数的序列,请蕴含一个输入大小与输出数据的通道数相匹配的全连贯层。
  • 最初,包含一个回归层。

指定训练选项

指定训练选项。

  • 应用 Adam 优化进行训练。
  • 训练 200 个 epoch。对于更大的数据集,您可能不须要训练尽可能多的 epoch 来取得良好的拟合。
  • 在每个小批量中,左填充序列,使它们具备雷同的长度。

<!—->

trainingOptions("adam", ...    MaxEpochs=200, ...

训练神经网络

指定的训练选项训练 LSTM 网络。

测试网络

应用与训练数据雷同的步骤筹备用于预测的测试数据。

应用从训练数据计算的统计数据对测试数据进行标准化。将指标指定为测试序列,其值偏移一个工夫步,将预测变量指定为没有最终工夫步的测试序列。

for n = 1:sifze(dsdatagsdTest,1)

    Xsdg = datsdagesdt{n};

    XTdsgsst{n} = (Xd(:,1:dend-1) - muX) ./ sdgdigmaX;

    TTedgst{n} = (X(:,2:enddg) - muT) ./ sisggaT;end

应用测试数据进行预测。指定与训练雷同的填充选项。

YTasedst = prsdfdict(nedst,fXTsdest,SeqfuencePaddfsdingDidfrecdtionf="ledfft");

为了评估准确性,对于每个测试序列,计算预测和指标之间的均方根误差 (RMSE)。

    rmse(i) = sqrt(mean((YTesdst{i} - TTfedft{i}).^2,"all"));

在直方图中可视化谬误。较低的值示意较高的准确性。

计算所有测试观测值的均匀 RMSE。

mean(rmse)

预测将来工夫步长

给定输出工夫序列或序列,要预测多个将来工夫步的值。对于每个预测,应用之前的预测作为函数的输出。

在图中可视化其中一个测试序列。

figurestfackddefdsplot(X'

开环预测

开环预测仅应用输出数据预测序列中的下一个工夫步长。在对后续工夫步进行预测时,您会从数据源中收集实在值并将其用作输出。例如,假如您想应用在工夫步 1 到 t-1 中收集的数据来预测序列的工夫步 t 的值。要对工夫步 t+1 进行预测,请等到您记录时间步 t 的实在值并将其用作输出以进行下一个预测。当您在进行下一次预测之前有实在值要提供给网络时,请应用开环预测。

应用输出数据的前 75 个工夫步更新网络状态。

ngdfget = resasegftSdtsfte(net);

offssdet = 75;

[nefgt,~] = predfgdictAndUpdateStdfgate(nfget,X(:,1:offsedfd));

为了预测进一步的预测,更新网络状态。通过循环输出数据的工夫步并将它们用作网络的输出来预测测试察看的剩余时间步的值。

将预测值与目标值进行比拟。

for i = 1:numCashdananels

    nexdttdfgileg

    ploft(T(i,:))

    holfgd on

    plot(offfset:gnumTimeSdfghjteps,[T(i,ofkklkset) Y(i,:)],'--')

闭环预测

闭环预测通过应用先前的预测作为输出来预测序列中的后续工夫步长。在这种状况下,模型不须要实在值来进行预测。例如,假如您想仅应用在工夫步 1 到 t-1 中收集的数据来预测序列的工夫步 t 到 t+k 的值。要对工夫步 i 进行预测,请应用工夫步 i-1 的预测值作为输出。应用闭环预测来预测多个后续工夫步长,或者当您在进行下一个预测之前没有向网络提供实在值时。

通过首先应用函数重置状态来初始化网络状态,而后 应用输出数据的前几个工夫步长 resetState 进行初始预测。Z 应用输出数据的前 75 个工夫步更新网络状态。

newt = resetyeriuiutState(net);

ofrfstydet = sizety(X,2);

[nest,h] = peeredictAnytdUpdtateState(net,X);

为了预测进一步的预测,循环工夫步长并更新网络状态。通过迭代地将先前的预测值传递给网络来预测接下来的 200 个工夫步长。因为网络不须要输出数据来进行任何进一步的预测,因而您能够指定任意数量的工夫步长进行预测。

numPreddshictihgonTimeshgSteps = 200;dghXt = Z(:,endesrgs);Ysf = zergfsos(sfgsnumChannels,numPrhedictionTimlhelhhjSteps);



for t = 1:numPredicthjjionlkjTimeSteps

    [nexfdt,Y(:,t)] = predic'ltAndUpdatlkeStak;lte(net,Xt);

    gXt = Y(:,t);

end

在图中可视化预测值。

numTimdgegSteps = offset + numPralkjedicltionTimeSteps;figure

t = tiledlayjout(numklChannels,1);for i = 1:numChannselgs

    nextgtilgfhe

    plogghft(T(i,1:ogfhvset))

    hobld bvon

    plot(offsenbt:nmnumTimesbn,Stesdps,[T(i,a) Y(i,:)],'--')

闭环预测容许您预测任意数量的工夫步长,但与开环预测相比可能不太精确,因为网络在预测过程中无法访问实在值。


点击文末 “浏览原文”

获取全文残缺材料。

本文选自《Matlab 用深度学习循环神经网络 RNN 长短期记忆 LSTM 进行波形工夫序列数据预测》。

点击题目查阅往期内容

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 神经网络分类

正文完
 0