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

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

目录

效果一览




基本介绍

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

QRBiLSTM是一种双向长短期记忆(QR-LSTM)神经网络的变体,用于分位数回归时间序列区间预测。该模型可以预测时间序列的不同分位数的值,并且可以提供置信区间和风险评估等信息。

QR-LSTM是一种基于LSTM模型的分位数回归方法,可以通过学习分位数回归损失函数来预测不同分位数的值。而QRBiLSTM则是在QR-LSTM的基础上加入了双向传输的结构,可以捕捉更多的时间序列信息。

模型描述

QRBiLSTM模型的输入包括历史数据,输出为分位数值和置信区间。通常情况下,可以使用训练数据来拟合模型参数,并使用测试数据来评估模型的预测性能。

总之,QRBiLSTM是一种非常有用的时间序列预测模型,可以应用于许多领域,如金融、股票、气象学等,可以提供更全面的时间序列预测信息,有助于提高决策的准确性。

  • 下面给出QRBiLSTM模型的具体公式,其中 X \textbf{X} X表示输入序列, Y \textbf{Y} Y表示输出序列, H \textbf{H} H表示隐藏状态, C \textbf{C} C表示记忆状态, f θ f_{\theta} fθ表示神经网络模型, q q q表示分位数:

  • 正向传播:

H t f , C t f = L S T M θ ( X t , H t − 1 f , C t − 1 f ) \textbf{H}^{f}{t},\textbf{C}^{f}{t} = LSTM_{\theta}(\textbf{X}{t},\textbf{H}^{f}{t-1},\textbf{C}^{f}_{t-1}) Htf,Ctf=LSTMθ(Xt,Ht−1f,Ct−1f)

H t b , C t b = L S T M θ ( X t , H t + 1 b , C t + 1 b ) \textbf{H}^{b}{t},\textbf{C}^{b}{t} = LSTM_{\theta}(\textbf{X}{t},\textbf{H}^{b}{t+1},\textbf{C}^{b}_{t+1}) Htb,Ctb=LSTMθ(Xt,Ht+1b,Ct+1b)

Y ^ t q = f θ ( [ H t f , H t b ] ) \hat{Y}^{q}{t} = f{\theta}([\textbf{H}^{f}{t},\textbf{H}^{b}{t}]) Y^tq=fθ([Htf,Htb])

ϵ ^ t q = Y t q − Y ^ t q \hat{\epsilon}^{q}{t} = Y^{q}{t} - \hat{Y}^{q}_{t} ϵ^tq=Ytq−Y^tq

σ ^ t q = median { ∣ ϵ ^ t − τ q ∣ : τ ≤ lag } ⋅ c α ( lag , n ) \hat{\sigma}^{q}{t} = \text{median}\{|\hat{\epsilon}^{q}{t-\tau}|:\tau \leq \text{lag}\} \cdot c_{\alpha}(\text{lag},n) σ^tq=median{∣ϵ^t−τq∣:τ≤lag}⋅cα(lag,n)

  • 其中, H t f \textbf{H}^{f}{t} Htf和 C t f \textbf{C}^{f}{t} Ctf分别表示正向传播的隐藏状态和记忆状态; H t b \textbf{H}^{b}{t} Htb和 C t b \textbf{C}^{b}{t} Ctb分别表示反向传播的隐藏状态和记忆状态; Y ^ t q \hat{Y}^{q}{t} Y^tq表示时间 t t t处分位数为 q q q的预测值; f θ f{\theta} fθ表示神经网络模型; ϵ ^ t q \hat{\epsilon}^{q}{t} ϵ^tq表示时间 t t t处分位数为 q q q的预测误差; σ ^ t q \hat{\sigma}^{q}{t} σ^tq表示时间 t t t处分位数为 q q q的预测误差的置信区间,其中 c α ( lag , n ) c_{\alpha}(\text{lag},n) cα(lag,n)表示置信系数。

  • QRBiLSTM模型的训练目标是最小化分位数损失函数:

Loss θ = ∑ t = 1 T ∑ q ∈ Q ρ q ( ∣ ϵ t q ∣ ) − 1 ∣ Q ∣ ∑ q ∈ Q log ( σ ^ t q ) \text{Loss}{\theta}=\sum{t=1}^{T}\sum_{q\in Q}\rho_{q}(|\epsilon^{q}{t}|)-\frac{1}{|Q|}\sum{q\in Q}\text{log}(\hat{\sigma}^{q}_{t}) Lossθ=t=1∑Tq∈Q∑ρq(∣ϵtq∣)−∣Q∣1q∈Q∑log(σ^tq)

  • 其中, ρ q ( x ) \rho_{q}(x) ρq(x)表示分位数损失函数:

ρ q ( x ) = { q x x ≥ 0 ( q − 1 ) x x < 0 \rho_{q}(x)=\begin{cases}qx&x\geq 0\\(q-1)x&x<0\end{cases} ρq(x)={qx(q−1)xx≥0x<0

  • QRBiLSTM模型的预测目标是预测分位数值和置信区间,即 Y ^ t q \hat{Y}^{q}{t} Y^tq和 σ ^ t q \hat{\sigma}^{q}{t} σ^tq。

程序设计

clike 复制代码
% 构建模型
numFeatures = size(XTrain,1); % 输入特征数
numHiddenUnits = 200; % 隐藏单元数
numQuantiles = 1; % 分位数数目
layers = [ ...
    sequenceInputLayer(numFeatures)
    bilstmLayer(numHiddenUnits,'OutputMode','last')
    dropoutLayer(0.2)
    fullyConnectedLayer(numQuantiles)
    regressionLayer];
options = trainingOptions('adam', ...
    'MaxEpochs',50, ...
    'MiniBatchSize',64, ...
    'GradientThreshold',1, ...
    'Shuffle','every-epoch', ...
    'Verbose',false);
net = trainNetwork(XTrain,YTrain,layers,options); % 训练模型

% 测试模型
YPred = predict(net,XTest); % 预测输出
quantiles = [0.1,0.5,0.9]; % 分位数
for i = 1:length(quantiles)
    q = quantiles(i);
    epsilon = YTest - YPred(:,i); % 预测误差
    lag = 10; % 滞后期数
    sigma = median(abs(epsilon(max(1,end-lag+1):end))) * 1.483; % 置信区间
    lb = YPred(:,i) - sigma * norminv(1-q/2,0,1); % 置信区间下限
    ub = YPred(:,i) + sigma * norminv(1-q/2,0,1); % 置信区间上限
    disp(['Quantile:',num2str(q),' MAE:',num2str(mean(abs(epsilon))),' Width:',num2str(mean(ub-lb))]);
end

参考资料

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

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

相关推荐
机器学习之心3 天前
论文辅导 | 基于贝叶斯优化-卷积神经网络-双向长短期记忆神经网络的锂电池健康状态评估
人工智能·神经网络·cnn·卷积神经网络·贝叶斯优化·双向长短期记忆神经网络·锂电池健康状态评估
机器学习之心22 天前
高创新 | CEEMDAN-VMD-BiLSTM-Attention双重分解+双向长短期记忆神经网络+注意力机制多元时间序列预测
注意力机制·双向长短期记忆神经网络·bilstm-atten·ceemdan-vmd·双重分解·多元时间序列预测
机器学习之心24 天前
区间预测 | Matlab实现QRCNN-BiGRU-Attention分位数回归卷积双向门控循环单元注意力机制时序区间预测
attention·分位数回归·卷积双向门控循环单元·注意力机制时序区间预测·qrcnn-bigru
机器学习之心1 个月前
区间预测 | Matlab实现QRCNN-BiLSTM-Attention分位数回归卷积双向长短期记忆网络注意力机制时序区间预测
matlab·attention·分位数回归·卷积双向长短期记忆网络·qrcnn-bilstm·注意力机制时序区间预测
机器学习之心2 个月前
BiLSTM-KDE的双向长短期记忆神经网络结合核密度估计多变量回归区间预测(Matlab)
双向长短期记忆神经网络·核密度估计·多变量回归区间预测·bilstm-kde
机器学习之心3 个月前
锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测
双向长短期记忆神经网络·bilstm·锂电池寿命预测
机器学习之心3 个月前
时序预测 | Matlab实现BiTCN-BiLSTM双向时间卷积神经网络结合双向长短期记忆神经网络时间序列预测
神经网络·时间序列预测·双向长短期记忆神经网络·双向时间卷积神经网络·bitcn-bilstm
机器学习之心4 个月前
多维时序 | Matlab实现BiLSTM-MATT双向长短期记忆神经网络融合多头注意力多变量时间序列预测模型
双向长短期记忆神经网络·融合多头注意力·多变量时间序列预测模型·bilstm-matt
机器学习之心4 个月前
回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测
attention·双向长短期记忆神经网络·粒子群算法优化·多变量回归预测·融合注意力机制·pso-bilstm-att
机器学习之心5 个月前
回归预测 | Matlab实现CPO-BiLSTM【24年新算法】冠豪猪优化双向长短期记忆神经网络多变量回归预测
双向长短期记忆神经网络·多变量回归预测·冠豪猪优化·cpo-bilstm