回归预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)多输入单输出

回归预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)多输入单输出

目录

    • 回归预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)多输入单输出
      • 基本介绍
      • 模型背景
        • PCA模型
        • LSTM模型
      • 研究回顾
      • 数据下载
      • 程序设计
      • 参考资料
      • 致谢

基本介绍

本次运行测试环境MATLAB2018b;

  • 本次预测基本任务是回归,考虑了数据的行和列的特征提取,多变量输入,单变量输出;
  • 主要研究问题不限于交通预测、负荷预测、气象预测等;
  • 如果是交通的话,针对城市交通流序列具有时空相关性难以预测的问题,首先构建主成分分析( PCA) 和长短期记忆LSTM( Long Short-Term Memory) 网络相结合的交通流预测模型。以交通流数据为基础,采用PCA 提取与预测站点具有空间相关性的站点,将提取的站点交通流序列作为输入,利用LSTM 神经网络实现城市短时交通流量的预测。
  • 与经典的预测算法相比,该方法预测效果具有良好的表现,对研究预测问题有一定的参考价值。

模型背景

  • 我国城市化进程发展迅速,车辆的保有量和出行需求总量不断增加,伴随着城市交通拥堵问题频发,增加了交通事故发生的概率,影响了市民的出行时间和旅行体验。为此,智能交通系统( ITS) 的实现为解决城市交通需求提供了新的思路,准确实时的短时交通流预测是智能交通系统的关键环节,可为城市交通管控策略、路径最优规划、平面交叉口优化方案提供数据支撑,一直以来是交通领域研究的热点问题。
  • 短时交通流预测是指根据道路历史或实时采集的交通流数据,对未来5 min ~ 15 min 以内的交通流量进行循环预测。目前,已经有很多有效的模型与方法应用到短时交通流预测的研究中,主要可分为基于物理和基于数据驱动的模型。基于物理的模型包括但不限于自回归积分移动平均模型( ARIMA) 、随机森林模型、卡尔曼滤波等。
  • 现有的短时交通流预测模型大都考虑到交通流的时间相关性因素,并未重点研究预测站点空间性的相关因素,而城市道路上某断点的交通流量必然与上下游或路网其他站点的交通状况有关,使得城市短时交通流的预测精度、预测模型的泛化性有待提高。因此有必要对路网中影响预测站点的其他站点进行筛选,在保证预测模型复杂度无明显增加的前提下,提高短时交通流预测模型的精度。

注:时间相关性指的是不同行之间,空间相关性指的是不同列之间。

  • 针对现有短时交通流预测方法的局限,本文提出了PCA 和LSTM 神经网络相结合的预测方法,通过PCA 筛选预测站点,提取交通流预测序列,从而考虑到预测站点交通量的空间相关性问题。

PCA模型

  • 结合城市交通流量序列的特点,采用主成分分析法筛选与预测断面相关的附近站点,从而揭示路网中交通流的空间相关性。
  • 主成分分析法是一种使用最广泛的数据降维算法,其主要思想是将n 维特征映射到k 维特征上,新得到的k 维是全新的正交特征也被称为主成分,该主成分保留绝大部分方差的维度特征,实现对数据特征的降维处理。
  • 将城市路网中各站点的短时交通流量作为初始变量,通过主成分分析法筛选与预测断面有关的站点,在保证预测结果精度的同时,简化了网络结构,提高了运算效率。
  • 设m 为检测的短时交通量样本总数,n 为路网中预测断面附近的站点数,k 为筛选后的站点数,X 为原始交通量特征因子矩阵,S 为原始矩阵的协方差矩阵,Z 为筛选后的交通量特征因子矩阵,主成分分析法计算过程分为以下5 个步骤:
  1. 整理原始矩阵Xm×n;
  2. 计算原始矩阵的协方差矩阵Sm×n =COV( X) ;
  3. 求解协方差矩阵的特征值和特征向量;
  4. 选取给定k 个特征值所对应的特征向量所构成的矩阵Wn×k;
  5. 计算筛选后的特征因子矩阵Zm×k =Xm×nWn×k。

LSTM模型

  • LSTM 是一种特殊的递归神经网络RNN( Recursive Neural Network) ,通过对记忆块的控制来实现控制记忆的功能,主要解决了长序列训练过程中的梯度消失和梯度爆炸问题,适用于学习长期依赖信息。
  • 在城市短时交通流预测问题中,筛选出的与预测断面具有相关性的站点历史交通流量数据时序数据,将各站点的历史数据按5 min 为间隔进
    行划分并将其作为LSTM 预测网络的输入,将下一个5 min 预测断面的交通流量数据作为LSTM 预测网络的输出,构建基于LSTM 神经网络的短时交通流预测模型,其过程如图2所示:
    回归预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)多输入单输出_第1张图片

研究回顾

  • OU 等提出了基于偏差修正随机森林算法与数据驱动特征选择策略相结合的预测方法,对昆山市3 种城市道路的交通流量进行预测验证。
  • 孙湘海等在考虑交通流日周期特性的基础上,提出了季节自回归求和移动平均模型,对城市的短时交通流进行预测。
  • 秦鸣等采用改进的卡尔曼滤波算法来预测路段交通量,进一步将优化后的卡尔曼滤波与二次指数平滑法相结合来预测短时交通量。基于数据驱动模型包括但不限于非参数回归模型、支持向量回归( SVR) 以及神经网络等。
  • 吴晋武等利用主成分分析法对预测数据进行降维处理,再进行非参数回归交通预测算法的构建。
  • Zheng等提出了一种基于时空数据融合的交通流稀疏回归预测模型,并在城市和郊区2 种交通场景验证了模型的适用性。
  • Cai 等提出了一种基于支持向量回归的交通流量预测方法,并通过重力搜索算法( GSA) 进行参数最优搜索。
  • Ran 等建立了深度学习模型架构,使用交通门户实时的图像数据源来预测城市交通流拥堵状况。
  • 钟等基于LSTM 构建短时交通流预测模型,并与传统预测方法进行比较,验证了LSTM 预测模型具有良好的准确性和泛化性。

数据下载

  • 下载地址:
  • https://mianbaoduo.com/o/bread/mbd-YZyblpxy

程序设计

  • PCA程序设计
clc;
clear;
warning off;
data = xlsread('data.xlsx', 'Sheet1', 'A3:M1250');
x=data(:,1:12);
y=data(:,13);
% 求因子维度
[r,c]=size(x);
% 求因子均值
aver=mean(x);
% 求因子标准差
stdcov=std(x);
% 求目标均值
y_aver=mean(y);
% 求目标方差
y_stdcov=std(y);
% 数据标准化
stdarr=(x-aver(ones(r,1),:))./stdcov(ones(r,1),:); 
 std_y=(y-y_aver(ones(r,1)))./y_stdcov(ones(r,1));
% 计算相关系数矩阵
covArr=cov(stdarr);
%% 相关系数矩阵进行主成分分析
[pc1,latent,explain]=pcacov(covArr);
d=repmat(sign(sum(pc1)),size(pc1,1),1);
pc=pc1.*d;
sumcontr=0;
i=1;
% 选取贡献率大于90%的主成分
er=90;
while sumcontr<er
    sumcontr=sumcontr+explain(i);
    i=i+1;
end
pcNum=i-1;
% 计算各个主成分
F=stdarr*pc(:,1:pcNum);
FF=[ones(r,1),F];
Fcoeff=regress(std_y,FF);
Recoeff=pc(:,1:pcNum)*Fcoeff(2:pcNum+1,:);
result(1)=Fcoeff(1);
result(2:c+1)=Recoeff;
y_p=Fcoeff(1)+stdarr*Recoeff;
y_p=y_p.*y_stdcov(ones(r,1))+y_aver(ones(r,1));
  • LSTM程序设计
%% LSTM层设置,参数设置
inputSize  = size(inputn_train,1);   %数据输入x的特征维度
outputSize = size(outputn_train,1);  %数据输出y的维度  
numhidden_units=240;
%% lstm
%输入层设、学习层、全连接层
layers = [ ...
    sequenceInputLayer(inputSize)                
    fullyConnectedLayer(2*inputSize)
    lstmLayer(numhidden_units)                 
    dropoutLayer(0.2)
    fullyConnectedLayer(outputSize)             
    regressionLayer];
%% trainoption(lstm)
%优化算法、训练次数、梯度阈值、运行环境、学习率、学习计划
opts = trainingOptions('adam', ...
    'MaxEpochs',800, ...
    'MiniBatchSize',48,...
    'GradientThreshold',1,...
    'ExecutionEnvironment','gpu',...
    'InitialLearnRate',0.005, ...
    'LearnRateSchedule','piecewise', ...
    'LearnRateDropPeriod',100, ...              
    'LearnRateDropFactor',0.8, ...
    'Verbose',0, ...
    'Plots','training-progress'... 
    );
%% LSTM网络训练
tic
LSTMnet = trainNetwork(inputn_train,outputn_train,layers,opts);
toc;
[LSTMnet,LSTMoutputr_train]= predictAndUpdateState(LSTMnet,inputn_train);
LSTMoutput_train   = mapminmax('reverse',LSTMoutputr_train,outputps);
  • 完整程序下载:
  • https://mianbaoduo.com/o/bread/mbd-YZyblpxy
  • 预测效果:
    回归预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)多输入单输出_第2张图片
    回归预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)多输入单输出_第3张图片
    回归预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)多输入单输出_第4张图片
    回归预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)多输入单输出_第5张图片

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/120498871?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/120525662?spm=1001.2014.3001.5501
[3] https://blog.csdn.net/kjm13182345320/article/details/120406657?spm=1001.2014.3001.5501
[4] https://mianbaoduo.com/o/bread/mbd-YZyblpxy

致谢

  • 大家的支持是我写作的动力!
  • 感谢大家订阅,感谢,需要加Q-【1153460737】,记得备注!

你可能感兴趣的:(回归预测,深度学习,机器学习,matlab,lstm,pca,pca-lstm)