Interval prediction | MATLAB realizes multi-variable time series interval prediction based on QRCNN-BiGRU-Multihead-Attention multi-head attention convolution bidirectional gated recurrent unit

Interval prediction | MATLAB implements multi-variable time series interval prediction based on QRCNN-GRU-Multihead-Attention multi-head attention convolution bidirectional gated recurrent unit

List of effects

1
3
2
4
5
6

basic introduction

1. Matlab implements multi-head attention multivariate time series interval prediction based on QRCNN-BiGRU-Multihead-Attention convolutional neural network combined with bidirectional gated recurrent unit;

2. Multi-map output, point prediction multi-index output (MAE, MAPE, RMSE, MSE, R2), interval prediction multi-point ratio output (interval coverage PICP, interval average width percentage PINAW), multi-input single output, including point prediction Graphs, different confidence interval prediction graphs, error analysis graphs, kernel density estimation probability density graphs;

1

3. data is a data set, power data set, using multiple associated variables to predict the last column of power data, which is also applicable to load forecasting and wind speed forecasting; MainQRCNN_BiGRU_MATTNTS is the main program, and the rest are function files, no need to run;

4. The code is of high quality, with clear annotations, including data preprocessing part, handling missing values, if it is nan, delete it, and also includes kernel density estimation;

5. The operating environment is Matlab2021 and above.

Model description

Multi-head Attention Convolutional Bi-directional Gated Recurrent Unit
Multi-head Attention Convolutional Bi-directional Gated Recurrent Unit (Multi-head Attention Convolutional Bi-directional Gated Recurrent Unit) is a deep learning model for multivariate Time Series Forecasting. The model combines multiple techniques such as attention mechanism, convolutional neural network, bidirectional gated recurrent unit, etc., and can effectively capture nonlinear relationships and long-term dependencies in time series.
The input data are multiple time series, each time series contains multiple variables. The model first performs a convolution operation on each time series to extract its local features. Then, the sequences are encoded using bidirectionally gated recurrent units, which capture long-term dependencies in sequences. Next, a multi-head attention mechanism is used to interact and fuse information between different time series to obtain global features. Finally, a fully connected layer is used to aggregate all features to make a prediction.
The model can be used for interval forecasting of multivariate time series, that is, predicting the value of variables over a period of time. The advantage of this model is that it can handle complex relationships between multiple time series, and it can handle sequences of different lengths. In addition, the model can also be adapted to different datasets and prediction tasks by adjusting hyperparameters and network structures.

programming

  • Complete program and data acquisition method: private message blogger.
ntrain=round(nwhole*num_size);
	ntest =nwhole-ntrain;
	% 准备输入和输出训练数据
	input_train =input(:,temp(1:ntrain));
	output_train=output(:,temp(1:ntrain));
	% 准备测试数据
	input_test =input(:, temp(ntrain+1:ntrain+ntest));
	output_test=output(:,temp(ntrain+1:ntrain+ntest));
	%% 数据归一化
	method=@mapminmax;
	[inputn_train,inputps]=method(input_train);
	inputn_test=method('apply',input_test,inputps);
	[outputn_train,outputps]=method(output_train);
	outputn_test=method('apply',output_test,outputps);
	% 创建元胞或向量,长度为训练集大小;
	XrTrain = cell(size(inputn_train,2),1);
	YrTrain = zeros(size(outputn_train,2),1);
	for i=1:size(inputn_train,2)
		XrTrain{
    
    i,1} = inputn_train(:,i);
		YrTrain(i,1) = outputn_train(:,i);
	end
	% 创建元胞或向量,长度为测试集大小;
	XrTest = cell(size(inputn_test,2),1);
	YrTest = zeros(size(outputn_test,2),1);
	for i=1:size(input_test,2)
		XrTest{
    
    i,1} = inputn_test(:,i);
		YrTest(i,1) = outputn_test(:,i);
	end

	%% 创建混合网络架构
%%  区间覆盖率
RangeForm = [T_sim(:, 1), T_sim(:, end)];
Num = 0;

for i = 1 : length(T_train)
    Num = Num +  (T_train(i) >= RangeForm(i, 1) && T_train(i) <= RangeForm(i, 2));
end

picp = Num / length(T_train);     


    S = cumtrapz(X,Y);
    Index = find(abs(m-S)<=1e-2);
    Q = X(max(Index));



References

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

Guess you like

Origin blog.csdn.net/kjm13182345320/article/details/131031521