GMDH自组织网络模型时间序列预测,可预测未来

GMDH自组织网络模型时间序列预测,可预测未来

目录

    • GMDH自组织网络模型时间序列预测,可预测未来
      • 效果一览
      • 基本介绍
      • 模型构建
      • 程序设计
      • 学习总结
      • 参考资料

效果一览

1
2
3
4

5

基本介绍

GMDH自组织网络模型是自组织数据挖掘中的一种模型方法,是基于计算机科学和神经网络的迅速发展而产生和发展的.在信息爆炸和信息不完全的求解条件下,自组织方法能够有效避免个人主观因素的干扰.,是前苏联乌克兰科学院的 1968年运用多层神经网络原理和品种改良假说提出的一种复杂非线性系统的启发式自组织建模方法,以 K-G多项式为基础通过不断筛选组合建立非线性系统的模型,对高阶非线性系统的辨识很有效。GMDH神 经 网 络 是 前 馈 神 经 网络中一种用于预测的实用神经网络,其特点是网络结构不固定,在训练过程中不断变化。GMDH神经网络具有以下特点:
(1)建 模 过 程 自 组 织 控 制,不 需 任 何 初 始假设;
(2)最优复杂性及高精度预测;
(3)能够自组织多层神经网络每层的最佳结构,即能够自动保留有用变量和删除多余变量;
(4)能够自动选择最佳网络层数和每层的神经元数目。GMDH 算法由系统各输入单元交叉组合产生一系列的活动神经元,其中每一神经元都具有选择最优传递函数的功能,再从已产生的一代神经元中选择若干与目标变量最为接近的神经元,被选出神经元强强结合再次产生新的神经元,重复这样的优势遗传、竞争生存和进化的过程,直至具有最佳复杂性的模型被选出。

模型构建

6
7

程序设计

  • 完整程序和数据下载:GMDH自组织网络模型时间序列预测
  • 运行主程序MainGMDHTS.m即可。
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% GMDH时间序列预测
%% 环境准备
clc
clear;
close all;
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 可视化
% figure;
% PlotResults(TrainTargets, TrainOutputs, 'Train Data');
% figure;
% PlotResults(TestTargets, TestOutputs, 'Test Data');
figure;
set(gcf, 'Position',  [50, 100, 1200, 450])
[MSE RMSE ErrorMean ErrorStd Errors]=PlotResults(Targets, Outputs, 'All Data');
figure;
plotregression(TrainTargets, TrainOutputs, 'Train Data', ...TestTargets, TestOutputs, 'TestData', ...Targets, Outputs, 'GMDH All Data');
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% Forecast Plot
fore=180;
sizee=size(x);
sizee=sizee(1,2);
forecasted=Outputs(1,end-fore:end);
forecasted=forecasted+x(end)/2.5;
ylbl=sizee+fore;
t = linspace(sizee,ylbl,length(forecasted));
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% Compare the simulated output with measured data to ensure it is a good fit.
nstep=32;
sys = nlarx(Outputs',64);
figure;
set(gcf, 'Position',  [50, 200, 1300, 400])
compare(Outputs',sys,nstep);title('Covid Iran Death');
grid on;
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
figure;
regres=compare(Outputs',sys,nstep);title('Covid Iran Death');
b1 = regres\Outputs';
yCalc1 = b1*regres;
scatter(regres,Outputs','MarkerEdgeColor',[0 .5 .5],...'MarkerFaceColor',[0 .8 .8],...'LineWidth',1);
hold on
plot(regres,yCalc1,':',...'LineWidth',2,...'MarkerSize',5,...'Color',[0.6350 0.0780 0.1840]);
title(['Regression :   ' num2str(b1) ])
grid on
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%
figure;
set(gcf, 'Position',  [20, 20, 1000, 250])
plot(x,'--',...'LineWidth',1,...'MarkerSize',5,...'Color',[0,0,0.7]);
hold on;
plot(t,forecasted,'-.',...'LineWidth',2,...'MarkerSize',10,...'Color',[0.9,0.5,0]);
title('COVID Deaths - Orange is Forcasted')
xlabel('Days - From Jan 2020 Till Dec 2021','FontSize',12,...'FontWeight','bold','Color','b');
ylabel('Number of People','FontSize',12,...'FontWeight','bold','Color','b');datetick('x','mmm');
legend({'Measured','GMDH Forecasted'});
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 指标分析
% Explained Variance (EV)
va=var(Outputs-Targets);vc=var(Targets);
vd=abs(va/vc);vb = vd / 10^floor(log10(vd));
EV=vb*0.1
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% MSE
MSE 
% RMSE
RMSE
% Mean Error
ErrorMean
% STD Error
ErrorStd 
% Mean Absolute Error (MAE)
MAE = mae(Targets,Outputs)
% Root Mean Squared Log Error (RMSLE) 
RMSLE = sum((log(Targets)-log(Outputs)).^2)*0.1
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function [X, Y] = CreateTimeSeriesData(x, Delays)T = size(x,2);MaxDelay = max(Delays);Range = MaxDelay+1:T;X= [];for d = DelaysX=[X; x(:,Range-d)];endY = x(:,Range);end
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function p = FitPolynomial(x1, Y1, x2, Y2, vars)X1 = CreateRegressorsMatrix(x1);c = Y1*pinv(X1);Y1hat = c*X1;e1 = Y1- Y1hat;MSE1 = mean(e1.^2);RMSE1 = sqrt(MSE1);f = @(x) c*CreateRegressorsMatrix(x);Y2hat = f(x2);e2 = Y2- Y2hat;MSE2 = mean(e2.^2);RMSE2 = sqrt(MSE2);p.vars = vars;p.c = c;p.f = f;p.Y1hat = Y1hat;p.MSE1 = MSE1;p.RMSE1 = RMSE1;p.Y2hat = Y2hat;p.MSE2 = MSE2;p.RMSE2 = RMSE2;end
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function X = CreateRegressorsMatrix(x)X = [ones(1,size(x,2))x(1,:)x(2,:)x(1,:).^2x(2,:).^2x(1,:).*x(2,:)];end
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

学习总结

GMDH算法通过遗传、变异和选择,从一个简单的初始模型生成很多具有不断增长复杂度的候选模型,直至模型在观测样本数据上产生过拟合,即最优复杂度为止。

参考资料

[1] https://download.csdn.net/download/kjm13182345320/86818342?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/127484826?spm=1001.2014.3001.5501
[3] https://download.csdn.net/download/kjm13182345320/86811416?spm=1001.2014.3001.5501

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/66614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【docker系列】可视化Docker 管理工具——Portainer

1. 介绍 Portainer是一个可视化的Docker操作界面,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录…

开源靶场1

我来为您介绍一些知名的开源漏洞靶场平台: DVWA (Damn Vulnerable Web Application) 最流行的 Web 漏洞靶场之一包含 SQL 注入、XSS、文件包含等常见漏洞基于 PHP MySQL适合 Web 安全入门学习 WebGoat OWASP 开源项目基于 Java包含大量 Web 安全漏洞练习提供详细的教程和解…

Linux/Ubuntu/银河麒麟 arm64 飞腾FT2000 下使用 arm64版本 linuxdeployqt 打包Qt程序

文章目录 一、前言二、环境三、准备1、下载Linuxdeployqt源码2、下载Appimagetool-aarch64.AppImage四、编译linuxdeployqt1.配置环境变量2.编译linuxdeployqt五、安装patchelf六、配置Appimagetool七、打包Qt程序重要提示:测试启动应用八、其他九、最后一、前言 因为项目需要…

OpenCV相机标定与3D重建(49)将视差图(disparity map)重投影到三维空间中函数reprojectImageTo3D()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将视差图像重投影到3D空间。 cv::reprojectImageTo3D 是 OpenCV 库中的一个函数,用于将视差图(disparity map&#xff09…

Python 通过命令行在 unittest.TestCase 中运行单元测试

文章目录 unittest 模块简介编写单元测试在命令行中运行所有测试在命令行中运行单个测试使用装饰器跳过测试总结常用断言方法 unittest 模块简介 unittest是Python标准库中的一个模块,用于编写和运行单元测试。它提供了一个单元测试框架,使得编写测试用…

Rabbitmq Fanout如何保证不重复消费及应用场景

rabbitmq fanout业务场景,一个交换机对应多个队列,不会重复消费吗 在 RabbitMQ 中,使用 Fanout 类型的交换机时,确实可以将一个交换机绑定到多个队列。每当有消息发布到这个交换机时,交换机会把消息广播到所有绑定的队…

pg数据库运维经验2024

这篇文章主要是讲pg运维常见问题,两三年见一次的疑难杂症就不说了。 主要是技术性运维总结,主打通俗易懂和快速上手,尽量避免源码层面等深入分析。 SQL性能与执行计划 执行计划突变 pg官方不支持hint功能,并且计划永远不支持&…

缓存-Redis-常见问题-缓存击穿-永不过期+逻辑过期(全面 易理解)

缓存击穿(Cache Breakdown) 是在高并发场景下,当某个热点数据在缓存中失效或不存在时,瞬间大量请求同时击中数据库,导致数据库压力骤增甚至崩溃的现象。为了解决这一问题,“永不过期” “逻辑过期” 的策略…

Hadoop 实战笔记(一) -- Windows 安装 Hadoop 3.x

环境准备 安装 JAVA 1.8 Java环境搭建之JDK下载及安装下载 Hadoop 3.3.5 安装包 Hadoop 下载:https://archive.apache.org/dist/hadoop/common/ 一、JAVA JDK 环境检查 二、Hadoop(HDFS)环境搭建 1. 解压安装文件 hadoop-3.3.5.tar 2. 配置环境变量 HADOOP_HO…

点赞模块的实现思路

在现代应用程序中,点赞功能已经成为用户互动的重要方式。无论是社交媒体平台、新闻网站还是在线论坛,点赞功能都可以帮助用户表达对内容的认可和喜爱。 点赞功能的基本原理是将用户对某个内容的赞记录到数据库中。当用户点击点赞时,系统会检…

个人博客搭建(二)—Typora+PicGo+OSS

个人博客站—运维鹿: http://www.kervin24.top CSDN博客—做个超努力的小奚: 做个超努力的小奚-CSDN博客 一、前言 博客搭建完一直没有更新,因为WordPress自带的文档编辑器不方便,以前用CSDN写作的时候,习惯了Typora。最近对比了…

【向量数据库】搜索算法

最近几年,一种叫做向量数据库的产品,正趁着AI的热潮开始崭露头角。伴随着AI时代的到来,向量将成为一种重要的数据形式,而传统数据库并不适合用来存储和检索向量数据,因此我们大约需要一种专门设计的数据库来处理这些问…

前端开发中常用的插件库

ahooks 一个高质量且可靠的React Hooks库。class-variance-authority(CVA) 是一个专注于解决CSS类管理问题的库。classnames 是一个在React开发中非常流行的JavaScript工具库,它可以帮助开发者有条件地连接类名字符串。copy-to-clipboard 一个…

什么是cline?

Cline 是一个功能强大的 AI 编程助手,专为 Visual Studio Code(VSCode)设计。它通过结合大语言模型(如 Claude、GPT 等)和工具链,帮助开发者自动化任务、生成代码、执行命令等。以下是对 Cline 的深入理解和…

启动tomcat出现的The JRE_HOME environment variable is not defined correctl

很久没使用Tomcat了,最近配置JDK 17 Tomcat 10,竟然报错 the JRE_HOME environment variable is not defined correctly很明显就是环境变量没有配置 JRE_HOME这个变量,但我明明是环境变量是配置了JAVA_HOME以及JRE_HOME这两个变量。 奇怪了…

ARM CCA机密计算安全模型之安全生命周期管理

安全之安全(security)博客目录导读 目录 一、固件启用的调试 二、CCA系统安全生命周期 三、重新供应 四、可信子系统与CCA HES 启用 CCA(机密计算架构)的安全系统是指 CCA 平台的实现处于可信状态。 由于多种原因,CCA 启用系统可能处于不…

[读书日志]从零开始学习Chisel 第八篇:Scala的集合(敏捷硬件开发语言Chisel与数字系统设计)

5.Scala的集合 Scala的集合包括数组,列表,集,映射,序列,元组,数组缓冲和列表缓冲等。 5.1 数组 5.1.1数组的定义 数组是计算机内一片地址连续的内存空间。数组元素类型可以是任意的,不同元素…

k8s排错集:zk集群的pod报错 Init:CrashLoopBackOff无法启动

zk三节点集群,zk-0无法启动 statefulset 进到该node节点上查看容器的报错日志,发现在初始化container的时候一个命令有问题 查看正常zk集群的pod的资源配置文件 解决办法: 修改资源配置文件 应该修改为 chown -R 1000:1000 /zkenv kubec…

Golang的并发编程框架比较

# Golang的并发编程框架比较 中的并发编程 在现代软件开发中,处理高并发的能力愈发重要。Golang作为一门支持并发编程的编程语言,提供了丰富的并发编程框架和工具,使得开发者能够更轻松地处理并发任务。本文将介绍Golang中几种常用的并发编程…

【Web】软件系统安全赛CachedVisitor——记一次二开工具的经历

明天开始考试周,百无聊赖开了一把CTF,还顺带体验了下二开工具,让无聊的Z3很开心🙂 CachedVisitor这题 大概描述一下:从main.lua加载一段visit.script中被##LUA_START##(.-)##LUA_END##包裹的lua代码 main.lua loca…