当前位置: 首页 > news >正文

【GMDH预测】 基于matlab GMDH时间序列预测【含Matlab源码 2189期】

一、GMDH神经网络法简介

GMDH神经网络法是一种研究变量之间关系的启发式自组织方法。GMDH神经网络法可以自动查找数据中的相互关系、选择模型或网络的最佳结构,并提高现有算法的准确性。Ivakhnenko为更好地预测河流中的鱼类种群,创造了分组数据处理方法(GMDH),使神经元成为具有多项式传递函数的更复杂的单元,并简化了神经元之间的互联,同时开发了用于结构设计和权重调整的自动算法。43-55Ivakhnenko构造的多项式为:
在这里插入图片描述
上式(1)也称为Ivakhnenko多项式。其中,m表示每个神经元进入回归模型的变量数量;a,b,c…是多项式中变量的权重;y是响应变量;xi和xj是探索性变量。在研究中,上述模型仅包含主要影响,由此可表示为:
在这里插入图片描述
若上式(2)为二变量多项式,则将构造m×(m-1) 2个候选神经元,其中m是上一层中的神经元数量。如果选择以允许来自上一层和输入层的输入,则m将是上一层和输入层中神经元数量的总和。如果选择以允许来自任何层的输入,则m将是输入变量的数量加上所有先前层中的神经元数量的总和。

在模型建立和评估过程中,数据被分为三组:训练集(60%)、验证集(20%)和测试集(20%)。训练集包含在模型构建中,验证集则用于对神经元的选择;测试集是用于考察评估模型在未观察数据上的性能。GMDH神经网络法是由神经元构成的层次系统。每层中对应神经元的数量取决于输入的数量。假设进入某一层的输入数量等于p,则该层中的神经元数量变为:
在这里插入图片描述
上式(3)考虑了所有成对的输入组合,但这并不意味着所有层都包括h个神经元。例如,输入层中的输入数量仅定义第一层中的神经元数量。在第一层中选择的神经元数量决定第二层中的神经元数量。该算法自行组织架构,当存在三个层次和四个输入时,GMDH神经网络法的体系结构如图1所示。
在这里插入图片描述
图1 GMDH神经网络法的体系结构
在图1所示的GMDH神经网络法体系结构中,存在四个输入(X1,X2,X3,X4),其中三个变量(X1,X2,X4)主导着系统,而X3对分类没有影响。GMDH神经网络法会自组织选择对分类有影响的输入变量,这说明网络中神经元之间的连接不是固定的,而是在训练期间进行选择以优化网络;网络中的层数也会自动选择,以产生最大的精度而不会过度拟合。

二、部分源代码

%

clc;
clear;
close all;

%% Load Data

data = load(‘global_ice_volume’);
x = data.x;

Delays = [1 2 3 4 5];
[Inputs, Targets] = CreateTimeSeriesData(x,Delays);

nData = size(Inputs,2);
% Perm = randperm(nData);
Perm = 1:nData;

% Train Data
pTrain = 0.7;
nTrainData = round(pTrain*nData);
TrainInd = Perm(1:nTrainData);
TrainInputs = Inputs(:,TrainInd);
TrainTargets = Targets(:,TrainInd);

% Test Data
pTest = 1 - pTrain;
nTestData = nData - nTrainData;
TestInd = Perm(nTrainData+1:end);
TestInputs = Inputs(:,TestInd);
TestTargets = Targets(:,TestInd);

%% Create and Train GMDH Network

params.MaxLayerNeurons = 25; % Maximum Number of Neurons in a Layer
params.MaxLayers = 5; % Maximum Number of Layers
params.alpha = 0; % Selection Pressure
params.pTrain = 0.7; % Train Ratio
gmdh = GMDH(params, TrainInputs, TrainTargets);

%% Evaluate GMDH Network

Outputs = ApplyGMDH(gmdh, Inputs);
TrainOutputs = Outputs(:,TrainInd);
TestOutputs = Outputs(:,TestInd);

%% Show Results

figure;
PlotResults(TrainTargets, TrainOutputs, ‘训练数据’);

figure;
PlotResults(TestTargets, TestOutputs, ‘测试数据’);

figure;
PlotResults(Targets, Outputs, ‘全部数据’);

if ~isempty(which(‘plotregression’))
figure;
plotregression(TrainTargets, TrainOutputs, ‘训练数据’, …
TestTargets, TestOutputs, ‘测试数据’, …
Targets, Outputs, ‘全部数据’);

end

三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 石峰.基于GMDH神经网络法的中小板上市公司ST分类预测研究[J].湖南工程学院学报(社会科学版). 2021,31(02)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

相关文章:

  • mysql数据库笔试题库和答案mysql语句(后端面试必备)
  • 搭建一个自定义的工作流管理平台(一)
  • 【前端】html常用标签介绍
  • 如何从0到1搭建一个个人网站
  • 【uniapp实战开发】uniapp中引入iconfont图标及两种常见的使用方式
  • AirPods Pro 连接Win11的 无声延迟 问题
  • 创建SpringBoot项目(使用阿里云代理)
  • 【Unity Shader】Unity中利用GrabPass实现玻璃效果
  • python实现简易数独小游戏
  • 还未入职,这位将来的博导为学生规划了一条高效学习之路
  • 车联网_网络管理ECU状态转换
  • “舔狗机器人”
  • 服务虚拟化HoverFly入门扫盲
  • 踩坑记录——USB键盘睡眠唤醒
  • 【MySQL】官网学习 order by 优化
  • jquery ajax学习笔记
  • Node 版本管理
  • node和express搭建代理服务器(源码)
  • Redux 中间件分析
  • Vue组件定义
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 那些年我们用过的显示性能指标
  • 微信小程序填坑清单
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 小程序开发中的那些坑
  • 携程小程序初体验
  • 运行时添加log4j2的appender
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • ​如何在iOS手机上查看应用日志
  • ​业务双活的数据切换思路设计(下)
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (31)对象的克隆
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (一)Neo4j下载安装以及初次使用
  • (译) 函数式 JS #1:简介
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .gitignore文件设置了忽略但不生效
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET gRPC 和RESTful简单对比
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .stream().map与.stream().flatMap的使用
  • .ui文件相关
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • []T 还是 []*T, 这是一个问题