区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测

区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测

效果一览

  • 进阶版
    1
    2
    3

  • 基础版

1

基本介绍

MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测
QRLSTM是一种基于长短期记忆(LSTM)神经网络的模型,用于时间序列区间预测。它是使用分位数回归来进行预测的,这意味着它可以预测一系列可能的结果,而不仅仅是单个点预测。
具体来说,QRLSTM使用LSTM网络来学习时间序列的长期和短期依赖关系,然后使用分位数回归来预测一系列可能的结果。分位数回归是一种非常有用的技术,它可以预测出给定置信水平下的上限和下限,这对于时间序列预测非常有用。
QRLSTM模型的预测能力很强,特别是在处理非线性时间序列时。它已经被广泛应用于股票市场、气象预测、交通预测等领域。

模型描述

QRLSTM模型的数学公式如下:
首先,我们定义LSTM网络中的隐藏状态和细胞状态:

h t , c t = LSTM ( x t , h t − 1 , c t − 1 ) h_t,c_t=\text{LSTM}(x_t,h_{t-1},c_{t-1}) ht,ct=LSTM(xt,ht1,ct1)

  • 其中, x t x_t xt是时间步 t t t的输入, h t − 1 h_{t-1} ht1 c t − 1 c_{t-1} ct1分别是上一时间步的隐藏状态和细胞状态。

然后,我们定义分位数回归的损失函数:

L τ = ∑ i = 1 n ρ τ ( y i − f θ ( x i ) ) \mathcal{L}{\tau}=\sum{i=1}^{n}\rho_{\tau}(y_i-f_{\theta}(x_i)) Lτ=i=1nρτ(yifθ(xi))

  • 其中, τ \tau τ是分位数水平, y i y_i yi是时间序列在时间步 i i i的真实值, f θ ( x i ) f_{\theta}(x_i) fθ(xi)是模型在时间步 i i i的预测值, ρ τ ( u ) \rho_{\tau}(u) ρτ(u)是分位数损失函数:

ρ τ ( u ) = { τ u  if  u ≥ 0   ( τ − 1 ) u  if  u < 0 \rho_{\tau}(u)=\begin{cases} \tau u & \text{ if } u \geq 0 \ (\tau-1)u & \text{ if } u < 0 \end{cases} ρτ(u)={ τu if u0 (τ1)u if u<0

最终我们的目标是最小化所有分位数水平下的损失函数:

L = ∑ τ ∈ τ 1 , τ 2 , . . . , τ T L τ \mathcal{L}=\sum_{\tau\in{\tau_1,\tau_2,...,\tau_T}}\mathcal{L}_{\tau} L=ττ1,τ2,...,τTLτ

  • 其中, τ 1 , τ 2 , . . . , τ T {\tau_1,\tau_2,...,\tau_T} τ1,τ2,...,τT是一组分位数水平。

QRLSTM模型使用随机梯度下降或者其他优化算法最小化上述损失函数,从而得到最优的模型参数。

程序设计

%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% lstm
layers = [ ...
    sequenceInputLayer(inputSize,'name','input')   %输入层设置
    lstmLayer(numhidden_units1,'Outputmode','sequence','name','hidden1') 
    dropoutLayer(0.3,'name','dropout_1')
    lstmLayer(numhidden_units2,'Outputmode','last','name','hidden2') 
    dropoutLayer(0.3,'name','drdiopout_2')
    fullyConnectedLayer(outputSize,'name','fullconnect')   % 全连接层设置(影响输出维度)(cell层出来的输出层) %
    quanRegressionLayer('out',i)];

% 参数设定
opts = trainingOptions('adam', ...
    'MaxEpochs',10, ...
    'GradientThreshold',1,...
    'ExecutionEnvironment','cpu',...
    'InitialLearnRate',0.001, ...
    'LearnRateSchedule','piecewise', ...
    'LearnRateDropPeriod',2, ...   %2个epoch后学习率更新
    'LearnRateDropFactor',0.5, ...
    'Shuffle','once',...  % 时间序列长度
    'SequenceLength',1,...
    'MiniBatchSize',24,...
    'Verbose',0);

%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% 网络训练
tic
net1 = trainNetwork(xnorm,ynorm,layers,opts);
trainNetwork(xnorm,ynorm,layers,opts);
end
————————————————
版权声明:本文为CSDN博主「机器学习之心」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kjm13182345320/article/details/127380096

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/127931217
[2] https://blog.csdn.net/kjm13182345320/article/details/127418340

猜你喜欢

转载自blog.csdn.net/kjm13182345320/article/details/130586921