Predicción de intervalos | MATLAB implementa QRBiLSTM bidireccional de memoria a largo plazo a corto plazo, red neuronal, regresión cuantil, predicción de intervalos de múltiples entradas y una sola salida

Predicción de intervalos | MATLAB implementa QRBiLSTM bidireccional de memoria a largo plazo a corto plazo, red neuronal, regresión cuantil, predicción de intervalos de múltiples entradas y una sola salida

Lista de efectos

1

2

3

4

introducción básica

Predicción de intervalos | MATLAB implementa la predicción de intervalos de regresión cuantil de entrada única de una red neuronal bidireccional de memoria a largo plazo QRBiLSTM

QRBiLSTM es una variante de la red neuronal bidireccional de memoria a largo plazo a corto plazo (QR-LSTM) para la previsión de intervalos de series temporales de regresión cuantil. El modelo predice valores para diferentes cuantiles de la serie temporal y puede proporcionar información como intervalos de confianza y estimaciones de riesgo.
QR-LSTM es un método de regresión de cuantiles basado en el modelo LSTM, que puede predecir los valores de diferentes cuantiles mediante el aprendizaje de la función de pérdida de regresión de cuantiles. QRBiLSTM agrega una estructura de transmisión bidireccional basada en QR-LSTM, que puede capturar más información de series temporales.

Descripcion del modelo

La entrada del modelo QRBiLSTM incluye datos históricos y variables externas, y la salida es el valor del cuantil y el intervalo de confianza. Por lo general, utiliza datos de entrenamiento para ajustar los parámetros del modelo y datos de prueba para evaluar el rendimiento predictivo del modelo.
En resumen, QRBiLSTM es un modelo de pronóstico de series temporales muy útil que se puede aplicar en muchos campos, como finanzas, acciones, meteorología, etc. Puede proporcionar información de pronóstico de series temporales más completa y ayudar a mejorar la precisión de la toma de decisiones.

  • La fórmula específica del modelo QRBiLSTM se da a continuación, donde X \textbf{X}X representa la secuencia de entrada,Y \textbf{Y}Y representa la secuencia de salida,H \textbf{H}H significa estado oculto,C \textbf{C}C representa el estado de la memoria,f θ f_{\theta}Firepresenta el modelo de red neuronal, qqq representa el cuantil:

  • Propagación hacia adelante:

H tf , C tf = LSTM θ ( 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=L ST Mi( Xt,Ht - 1f,Ct - 1f)

H tb , C tb = LSTM θ ( X t , H t + 1 segundo , C t + 1 segundo ) \textbf{H}^{b}_{t},\textbf{C}^{b}_{t} = LSTM_{\theta}(\textbf{X}_{t},\textbf{H}^{b}_{t+1},\textbf{C}^{ b}_{t+1})Htsegundo,Ctsegundo=L ST Mi( Xt,Ht + 1segundo,Ct + 1segundo)

Y ^ tq = f θ ( [ H tf , H tb ] ) \hat{Y}^{q}_{t} = f_{\theta}([\textbf{H}^{f}_{t},\textbf{H}^{b}_{t}])Y^tq=Fi([ Htf,Htsegundo])

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

σ ^ tq = mediana { ∣ ϵ ^ t − τ q ∣ : ​​τ ≤ retraso } ⋅ c α ( retraso , norte ) \hat{\sigma}^{q}_{t} = \text{mediana}\{|\hat{\epsilon}^{q}_{t-\tau}|:\tau \leq \text{lag}\} \cdot c_{ \alpha}(\text{retraso},n)pag^tq=mediana { ϵ^t - τq:tretraso }Ca( retraso ,norte )

  • donde, H tf \textbf{H}^{f}_{t}Htfy C tf \textbf{C}^{f}_{t}CtfRepresenta el estado oculto y el estado de la memoria de la propagación directa respectivamente; H tb \textbf{H}^{b}_{t}Htsegundoy C tb \textbf{C}^{b}_{t}CtsegundoRepresenta el estado oculto y el estado de memoria de la propagación hacia atrás respectivamente; Y ^ tq \hat{Y}^{q}_{t}Y^tqIndica el tiempo ttEl cuantil en t es qqEl valor predicho de q ;f θ f_{\theta}FiRepresenta el modelo de red neuronal; ϵ ^ tq \hat{\epsilon}^{q}_{t}ϵ^tqIndica el tiempo ttEl cuantil en t es qqEl error de predicción de q ;σ ^ tq \hat{\sigma}^{q}_{t}pag^tqIndica el tiempo ttEl cuantil en t es qqEl intervalo de confianza del error de predicción de q , dondec α ( lag , n ) c_{\alpha}(\text{lag},n)Ca( retraso ,n ) representa el coeficiente de confianza.

  • El objetivo de entrenamiento del modelo QRBiLSTM es minimizar la función de pérdida cuantil:

Pérdida θ = ∑ t = 1 T ∑ q ∈ Q ρ q ( ∣ ϵ tq ∣ ) − 1 ∣ Q ∣ ∑ q ∈ Q log ( σ ^ tq ) \text{Pérdida}_{\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})Pérdidai=t = 1Tq Qrq( ϵtq)Q 1q Qregistro (pag^tq)

  • donde, ρ q ( x ) \rho_{q}(x)rq( x ) representa la función de pérdida cuantil:

ρ q ( x ) = { qxx ≥ 0 ( q − 1 ) xx < 0 \rho_{q}(x)=\begin{casos}qx&x\geq 0\\(q-1)x&x<0\end{casos}rq( X )={ q x( q1 ) xX0X<0

  • El objetivo de predicción del modelo QRBiLSTM es predecir el valor del cuantil y el intervalo de confianza, es decir, Y ^ tq \hat{Y}^{q}_{t}Y^tqσ^tq \hat{\sigma}^{q}_{t }pag^tq

programación

% 构建模型
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

Referencias

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

Supongo que te gusta

Origin blog.csdn.net/kjm13182345320/article/details/131867074
Recomendado
Clasificación