保姆级教程!QRCNN-BiLSTM一键实现多变量回归区间预测!区间预测全家桶再更新!

保姆级教程!QRCNN-BiLSTM一键实现多变量回归区间预测!区间预测全家桶再更新!
今天对我们之前推出的区间预测全家桶进行更新将最新推出的QRCNN-BiLSTM模型加入到我们的全家桶当中非常新颖如果你之前购买过区间预测全家桶此次推出的模型免费下载即可同样本期代码大家使用的时候只需要一键运行main即可出来所有图片与区间预测结果非常方便适合新手小白如果你想替换成自己的其他数据集也非常方便只需替换Excel文件即可无需更改代码数据介绍本期数据使用的依旧是多变量回归数据集是某地一个风电功率的数据集经过处理后有3个特征分别用特征1、2、3来表示具体特征含义大家不必深究这边只是给大家提供一个示例而已大家替换成自己的数据集即可~更换自己的数据时只需最后一列放想要预测的列其余列放特征即可无需更改代码非常方便模型原理与流程传统预测是以点预测的形式提供的这种单一的预测信息不足以体现预测的不确定性。分位数回归可以直接估计不同分位数的点值其优点是可以在整个分位数范围内提供预测值而不用提前假设分布函数的参数形式。因此我们结合分位数理论提出基于分位数的 CNN-BiLSTM 预测模型该模型可实现在不同分位数下的预测从而实现区间预测功能。1.CNN卷积神经网络CNN 具有出色的特征提取能力已经在计算机视觉、故障诊断等领域得到了广泛的应用。卷积层和池化层是 CNN 的两个重要组成部分也是 CNN 特有的结构其在CNN结构中通常交替出现 同时在CNN结构通常还包含全连接层。CNN 网络的典型结构如下图所示。卷积层的主要作用是深入挖掘输入数据的特征池化层通常紧随在卷积层后可以降低特征维度使CNN网络的收敛速度更快。具体的卷积计算过程式为式中O 表示神经元局部输出I 为神经元输入l、 m、n 分别表示输出矩阵的 3 个维度i、j、n 分别 表示卷积核 K 的长度、宽度和深度n b 表示卷积核 的阈值⊗表示矩阵的乘法运算。2.BiLSTM双向长短期记忆神经网络LSTM 循环单元中隐藏层主要包含 4 个重要结构分别是细胞状态、遗忘门、输入门和输出门。其中细胞状态是 LSTM 循环单元的核心结构遗忘门、输入门和输出门 3 个门控单元可以达到对细胞状态的控制细胞状态与 3 个门控单元结构配合实现了保持、更新以及传递状态信息的目的。传统的神经网络在训练时总是从前到后传播训练的这种训练方式无法最大程度地挖掘蕴藏在 光伏功率时间序列的内在信息数据的利用率低。而 BiLSTM 网络通过前向传播和后向传播为进一步挖掘当前时刻的功率数据与过去和未来数据之间的内在关联创造了有利条件。BiLSTM 网络模型的结构示意图如下图所示。与传统的单向 LSTM 网 络相比其突出特点是构建了一个双向循环神经网 络即同时包含了前向传播和后向传播克服了单向传播LSTM 神经网络挖掘数据信息不充分的缺陷。3.分位数回归QR分位数回归方法由 Koenker 等人提出通过研究自变量和因变量间的条件分位数关系确定回归模型可以实现由解释变量估计响应变量的条件分位数计算。设有c个解释变量 U{U1,U2,…,Uc}作用于随机变量SS的分布函数可表示为则对任意分位数ττ∈[0,1]有式中 F-1 (τ)为S的第τ分位数 inf(s)为集合s的下确界。线性分位数回归模型中响应变量S在解释变量U下的第τ个条件分位数 QS(τ|U)为式中β(τ)为τ分位点下的回归系数向量。不同分位点下的β(τ)不同因此确定了β(τ)也就确定了该回归模型。另外β(τ)的相关参数可由下式的损失函数进行求解即式中ρτ(μ)为检验函数其通过使ρτ(μ)最小来求解模型回归系数β(τ)。检验函数ρτ(μ)为4.模型结构图以下是程序中的网络结构图跟其他程序中的CNN-BiLSTM模型相比此次模型结构简洁了很多直接将CNN和BiLSTM串行到底省去了很多不必要的网络结构和代码更加清晰易懂适合新手小白同时直接运行main文件即可一键自动生成此网络结构图结果展示这里采用了95%的置信区间如果大家需要其他的置信区间也可以自行更改只需在代码的创建网络处修改即可非常简单区间预测的测试集预测结果区间预测的训练集预测结果网络结构图点预测的误差直方图点预测的线性拟合图我们也很贴心地给出了很多评价指标点预测包括4种评价指标包括R2、MAE、MSE、MAPE区间预测包括2种评价指标区间覆盖率PICP、区间平均宽度百分比PIMWP如果后续有需要增加评价指标的小伙伴可以私聊~可以看到我们的QRBiGRU预测精度非常高在95%置信水平下的PICP甚至达到了98.8%R2也达到了0.99以上与真实值基本吻合这是很多论文都无法达到的效果非常适合用来作为创新点当然如果你觉得效果不好想要效果更好可以增大设置中的最大迭代次数比如500次1000次可根据个人需求调整以上所有图片作者都已精心整理过代码都可以一键运行main直接出图不信的话可以看下面文件夹截图非常清晰明了适用平台Matlab2020B版本及以上没有的文件夹里已免费提供安装包部分代码展示%% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear % 清空变量 clc % 清空命令行 ​ %% 导入数据 res xlsread(数据集.xlsx); ​ %% 数据分析 num_size 0.7; % 训练集占数据集比例 outdim 1; % 最后一列为输出 num_samples size(res, 1); % 样本个数 %res res(randperm(num_samples), :); % 打乱数据集不希望打乱时注释该行 num_train_s round(num_size * num_samples); % 训练集样本个数 f_ size(res, 2) - outdim; % 输入特征维度 ​ %% 划分训练集和测试集 P_train res(1: num_train_s, 1: f_); T_train res(1: num_train_s, f_ 1: end); M size(P_train, 2); ​ P_test res(num_train_s 1: end, 1: f_); T_test res(num_train_s 1: end, f_ 1: end); N size(P_test, 2); ​ %% 数据归一化 [p_train, ps_input] mapminmax(P_train, 0, 1); p_test mapminmax(apply, P_test, ps_input); ​ [t_train, ps_output] mapminmax(T_train, 0, 1); t_test mapminmax(apply, T_test, ps_output); ​ %% 格式转换 for i 1 : M vp_train{i, 1} p_train(:, i); vt_train{i, 1} t_train(:, i); end ​ for i 1 : N vp_test{i, 1} p_test(:, i); vt_test{i, 1} t_test(:, i); end ​ %% 创建网络 save_net []; for i 0.02 : 0.05 : 0.97 % 置信区间范围 0.97 - 0.02 0.95可以看到代码注释非常清晰适合新手小白全家桶代码目录目前全家桶在之前8个模型的基础上又增加了一个共9个之后还会推出更多更新颖的模型更重要的是购买后如果以后推出其他区间预测模型可直接免费下载无需再次付费但如果你之后再买一旦推出新模型价格肯定是会上涨的所以需要创新的小伙伴请早下手早超生目前已经提供了9种区间预测模型如果小伙伴有想要跟自己的预测模型结合起来比如将BiTCN-BiGRU-Attention这类高级的模型形成区间预测都是没有问题的后台留言或私信我即可代码获取1.已将本文算法加入区间预测全家桶中点击下方小卡片后台回复关键字不区分大小写区间预测全家桶2.如果实在只想要QRCNN-BiLSTM单品的同学点击下方小卡片后台回复关键字不区分大小写QR