知识问答

框架,含滑动窗口,预测未来,单步预测与多步预测对比

框架,含滑动窗口,预测未来,单步预测与多步预测对比

【MATLAB第12期】基于LSTM长短期记忆网络的多输入多输出回归预测模型思维框架基于时间序列分析在股票价格短期预测中的应用开题报告,包括滑动窗口、预测未来、单步预测与多步预测的比较、分析多步预测步骤对预测结果的影响,数据显示

这篇文章共有1400条数据。滑动窗口为12,预测步数为100(预测1301-1400个数据)。多步预测值为 3。

训练集输入样本数据格式:128612 // 128612 输入 1286 *3 输出

即:样本1:1-12数据→预测13-15

样本 2:2-13 数据 → 预测 14-16

样本1286:1286-1297数据→预测1298:1300

测试集输入样本格式10012 // 10012输入100*3输出

即:样本1:1289-1300数据→预测1301-1303

样本2:1290-1301数据→预测1302-1304

样本 100:1388-1399 数据 → 预测 1400-1402

%% 建立神经网络层layers = [ sequenceInputLayer(1,"Name","input") % 输入特征数 lstmLayer(20,"Name","lstm",'OutputMode','last') % 隐藏单元 dropoutLayer(0.1,"Name","drop") % 遗忘门 fullyConnectedLayer(duobu***,"Name","fc") % 全连接层 regressionLayer("Name","regressionputput")]; % 回归输出%% 定义训练参数options = trainingOptions('adam', ... 'MaxEpochs',200, ... % 迭代轮数 'GradientThreshold',1, ... % 梯度阈值 'InitialLearnRate',0.01, ... % 学习率 'LearnRateSchedule','piecewise', ... 'LearnRateDropPeriod',125, ... 'LearnRateDropFactor',0.2, ... 'Verbose',0, ... 'MiniBatchSize',32,... % BatchSize批数量 'Plots','training-progress');

2.多步预测分析

研究多步预测分别为1 / 2 / 3时对应的预测效果

(说明:如果为1,则在第13步后预测前12个数据;如果为2,则在第14步后预测前12个数据;如果为3,则在第15步后预测前12个数据数据)

**单步分步预测:**YPred_1:取测试集预测结果,100个样本中每个样本预测的第一个值,即(1289-1399)→1301-1400(为第100个预测,样本100:1388-1399数据→预测1400)

**两步分步预测:**YPred_2:取测试集预测结果,100个样本中每个样本预测的第二个值,即(1289-1399)→1302-1401(删除预测的第1401个value ) + YPred_1 1301 预测的第一个值(对于第 100 个预测,样本 100:1388-1399 数据 → 预测 1401)

**三步分步预测:**YPred_3:取测试集预测结果,100个样本中每个样本预测的第三个值,即(1289-1399)→1303-1402(删除预测的1401 - 1402值)+YPred_1预测的前两个值1301-1302(对于第100个预测,样本100:1388-1399数据→预测1402)

三、预测结果分析

YPred_1 预测结果

MAE = 0.0659

均方根误差 = 0.0813

MAPE = 0.0073

R = 0.9779

???

使用训练集的最后 12 个值来预测接下来的 100 个值

YPred_2 预测结果

MAE = 0.1013

均方根误差 = 0.1246

MAPE = 0.0112

R = 0.9483

???

使用训练集的最后 12 个值来预测接下来的 100 个值

YPred_3 预测结果

MAE = 0.1452

均方根误差 = 0.1770

MAPE = 0.0161

R = 0.8956

???

4。结论

由上可知,单步预测效果优于多步(区间)预测。

5. 预测未来的想法

*(这部分源码没有case,后面会更新)

*

我们可以增加多步预测值来预测未来的结果。如上所述,当多步预测参数为3,滑动窗口为12时,我们可以通过输入1388-1399来预测1400-1402。然后输入1389-1400预测1403数据。

有两个想法:

第一个想法预测结果会很差,就是用未来的预测结果来预测未来,也就是我用1390-1401(1401是此时的预测结果)来预测1402-1404,1391- 1402 predict 1403-1404... 这个思路的缺点 会导致误差累积,影响数据特征的处理,最终趋向于一条直线。

第二种预测结果的方式,即调整多步预测值,一般适用于数据量充足、周期性变化、数据趋势无明显异常的情况。如果要预测接下来的20个值,除了调整滑动窗口外,还可以增加多步预测值。如果滑动窗口不变,多步预测设置为10,即我用1389-1400预测1401-1420,一步。

第二种思路的好处是短期的预测结果会更接近现实。缺点是参数很难调整,比如滑动窗口设置的合理性,以及无法预测超长期数据,比如一共1400个数据,你想预测未来1000个数据,如果历史数据基本保持趋势是可以的,但是如果数据曲线复杂,会导致训练样本不足,或者不具有代表性。

6.如何获得

后台回复“LSTM多输入多输出”获取下载方法

付费希望了解。

未来我们将在此链接永久更新预测未来的案例代码,以及自己调试参数的经验基于时间序列分析在股票价格短期预测中的应用开题报告,敬请期待!

如果您觉得本文对您有帮助,请点击收藏,稍后会放出视频操作讲解数据处理。