尚未发表的创新点!基于QRBiGRU的多变量回归区间预测!直接替换Excel数据即可用!

        声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 

目录

数据介绍

模型原理与流程

1.BiGRU(双向门控循环单元)

2.分位数回归(QR)

3.模型结构图

结果展示

部分代码展示

完整代码


        传统的点预测相信大家已经做腻了,审稿人也看腻了!其输出的仅有一个预测值,无法定量描述预测结果的不确定性!今天为大家带来一期基于QRBiGRU的区间预测代码与原理讲解,非常新颖!

        区间预测能够得到预测值可能出现的范围,即上界和下界!目前应用在电气学科比较多,如光伏功率预测、风电功率预测、风速预测等等,如果你想应用在其他学科,都是完全可以的,并且能给审稿人眼前一亮,也能增加工作量和Accept的概率和机会!比如碳价预测、剩余寿命预测、降水量预测等等!

        本期代码大家使用的时候只需要一键运行main即可出来所有图片与区间预测结果!非常方便!适合新手小白!如果你想替换成自己的其他数据集,也非常方便!只需替换Excel文件即可,无需更改代码!

        老规矩!本期的这个算法在知网和WOS都是搜索不到的!大家用来写论文都是完全可以的!不信的可以看下面截图!

        知网平台:

        WOS平台:

        你先用,你就是创新!!!

数据介绍

        本期数据使用的依旧是多变量回归数据集,是某地一个风电功率的数据集,经过处理后有3个特征,分别用特征1、2、3来表示,具体特征含义大家不必深究,这边只是给大家提供一个示例而已,大家替换成自己的数据集即可~

        更换自己的数据时,只需最后一列放想要预测的列,其余列放特征即可,无需更改代码,非常方便!

模型原理与流程

        传统预测是以点预测的形式提供的,这种单一的预测信息不足以体现预测的不确定性。分位数回归可以直接估计不同分位数的点值,其优点是可以在整个分位数范围内提供预测值,而不用提前假设分布函数的参数形式。

        因此,我们结合分位数理论,提出基于分位数的 BiGRU 预测模型,该模型可实现在不同分位数下的预测,从而实现区间预测功能。

1.BiGRU(双向门控循环单元)

        门控循环单元(GRU)是循环神经网络的一种, 是循环神经网络(RNN)和长短期记忆网络(LSTM) 的改进。BiGRU 本质上是一个双层 GRU 网络,在前向 GRU 层中,通过前向传播将特征输入到网络训练中,并挖掘数据的前向相关性。在逆向 GRU 层中,输入序列通过反向传播进行训练,挖掘数据的逆相关性。这种网络架构可以对输入的特征进行双向提取,更好地提高特征的完整性和全局性。

2.分位数回归(QR)

        分位数回归方法由 Koenker 等人提出,通过研究自变量和因变量间的条件分位数关系确定回归模型,可以实现由解释变量估计响应变量的条件分位数计算。设有c个解释变量 U={U1,U2,…,Uc}作用于随机变量S,S的分布函数可表示为:

        则对任意分位数τ,τ∈[0,1],有:

        式中 F-1 (τ)为S的第τ分位数 ;inf(s)为集合s的下确界。

        线性分位数回归模型中,响应变量S在解释变量U下的第τ个条件分位数 QS(τ|U)为:

        式中β(τ)为τ分位点下的回归系数向量。

        不同分位点下的β(τ)不同,因此确定了β(τ)也就确定了该回归模型。另外,β(τ)的相关参数可由下式的损失函数进行求解,即:

        式中ρτ(μ)为检验函数,其通过使ρτ(μ)最小,来求解模型回归系数β(τ)。检验函数ρτ(μ)为:

3.模型结构图

        这边找了一张论文里的QRLSTM的结构图,大家看的时候把里面的LSTM换成BiGRU即可!

        以下是程序中的网络结构图:

结果展示

        这里采用了95%的置信区间,如果大家需要其他的置信区间,也可以自行更改,只需在代码的创建网络处修改即可,非常简单!

        区间预测的测试集预测结果:

        区间预测的训练集预测结果:

        网络结构图:

        点预测的误差直方图:

        点预测的线性拟合图:

        我们也很贴心地给出了很多评价指标,点预测包括4种评价指标,包括R2、MAE、MSE、MAPE,区间预测包括2种评价指标,区间覆盖率PICP、区间平均宽度百分比PIMWP,如果后续有需要增加评价指标的小伙伴可以私聊~

        可以看到,我们的QRBiGRU预测精度非常高,在95%置信水平下的PICP甚至达到了97%,R2也达到了0.99,与真实值基本吻合,这是很多论文都无法达到的效果,非常适合用来作为创新点!

        以上所有图片,作者都已精心整理过代码,都可以一键运行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);
​
%%  数据平铺
%   将数据平铺成1维数据只是一种处理方式
%   也可以平铺成2维数据,以及3维数据,需要修改对应模型结构
%   但是应该始终和输入层数据结构保持一致
P_train =  double(reshape(P_train, f_, 1, 1, M));
P_test  =  double(reshape(P_test , f_, 1, 1, N));
​
t_train = t_train';
t_test  = t_test' ;
​
%%  数据格式转换
for i = 1 : M
    p_train{i, 1} = P_train(:, :, 1, i);
end
​
for i = 1 : N
    p_test{i, 1}  = P_test( :, :, 1, i);
end
​
%%  创建网络
save_net = [];
for i = 0.02 : 0.05 : 0.97     % 置信区间范围 0.97 - 0.02 = 0.95
​
    layers = layerGraph();

        可以看到,代码注释非常清晰,适合新手小白!

完整代码

         点击下方小卡片,后台回复关键字,不区分大小写:

GZZDA

        其他更多需求或想要的代码均可点击下方小卡片后后台私信,看到后会秒回~

         更多代码链接:更多代码链接

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-02 10:28:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-02 10:28:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-02 10:28:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-02 10:28:04       20 阅读

热门阅读

  1. 常见故障排查和优化

    2024-04-02 10:28:04       12 阅读
  2. Spark面试整理-Spark如何处理大数据

    2024-04-02 10:28:04       15 阅读
  3. C++4.2

    2024-04-02 10:28:04       13 阅读
  4. 深入理解 C++ Lambda 表达式

    2024-04-02 10:28:04       14 阅读
  5. 【DevOps工具篇】安装 LDAP 管理 GUI PhpLdapAdmin

    2024-04-02 10:28:04       15 阅读
  6. Docker:使用MinIO搭建对象存储平台

    2024-04-02 10:28:04       16 阅读
  7. 在k8s中部署高可用程序实践和资源治理

    2024-04-02 10:28:04       16 阅读
  8. 【数据结构】二叉树

    2024-04-02 10:28:04       13 阅读
  9. Unity 读写Excel打包后无法运行可能的解决方案

    2024-04-02 10:28:04       18 阅读
  10. ubuntu 20.04 SD 卡分区类型 msdos 改为 GPT 的方法

    2024-04-02 10:28:04       15 阅读
  11. LeetCode热题Hot100 - 最长回文子串

    2024-04-02 10:28:04       19 阅读