时序预测 | Matlab实现INFO-ELM向量加权算法优化极限学习机时间序列预测

news2024/9/21 17:24:34

时序预测 | Matlab实现INFO-ELM向量加权算法优化极限学习机时间序列预测

目录

    • 时序预测 | Matlab实现INFO-ELM向量加权算法优化极限学习机时间序列预测
      • 效果一览
      • 基本介绍
      • 程序设计
      • 学习总结
      • 参考资料

效果一览

1
2

3

基本介绍

Matlab实现INFO-ELM向量加权算法优化极限学习机时间序列预测
1.data为单变量时间序列数据集,运行环境Matlab2018b及以上。
2.运行主程序文件,其余为函数文件,无需运行。
3.命令窗口输出MAE、MBE和R2,可在下载区获取数据和程序内容。
4.Matlab向量加权算法优化极限学习机(INFO-ELM)时间序列预测,优化参数为权值和阈值。

程序设计

  • 完整程序和数据下载方式1(资源处直接下载):Matlab实现INFO-ELM向量加权算法优化极限学习机时间序列预测
  • 完整程序和数据下载方式2(订阅《ELM极限学习机》专栏,同时可阅读《ELM极限学习机》专栏收录的所有内容,数据订阅后私信我获取):Matlab实现INFO-ELM向量加权算法优化极限学习机时间序列预测
  • 完整程序和数据下载方式3(订阅《智能学习》专栏,同时获取《智能学习》专栏收录程序5份,数据订阅后私信我获取):Matlab实现INFO-ELM向量加权算法优化极限学习机时间序列预测
%%  优化参数设置
dim = hiddennum * inputnum + hiddennum;             % 优化参数个数
lb  = -1 * ones(1, dim);                            % 优化参数目标下限
ub  =  1 * ones(1, dim);                            % 优化参数目标上限

%%  优化算法
fobj = @(x)fun(x, p_train, t_train, hiddennum);
[Best_pos,Best_score, curve] = INFO(Particles_no, Max_iter, lb, ub, dim, fobj);

%%  获取最优权值
w1 = Best_pos(1 : inputnum * hiddennum);
B1 = Best_pos(inputnum * hiddennum + 1 : inputnum * hiddennum + hiddennum);

IW = reshape(w1, hiddennum, inputnum);
B  = reshape(B1, hiddennum, 1);

%%  网络训练
[IW, B, LW, TF, TYPE] = elmtrain(p_train, t_train, 'sig', 0, IW, B);

%%  网络预测
T_sim1 = elmpredict(p_train, IW, B, LW, TF, TYPE);
T_sim2 = elmpredict(p_test , IW, B, LW, TF, TYPE);

%%  均方根误差
error1 = sqrt(sum((T_sim1 - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2 - T_test ).^2) ./ N);

%%  绘图
figure
plot(1: M, T_train, 'r-*', 1: M, T_sim1, 'b-o', 'LineWidth', 1)
legend('真实值','预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'训练集预测结果对比'; ['RMSE=' num2str(error1)]};
title(string)
xlim([1, M])
grid

figure
plot(1: N, T_test, 'r-*', 1: N, T_sim2, 'b-o', 'LineWidth', 1)
legend('真实值','预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'测试集预测结果对比';['RMSE=' num2str(error2)]};
title(string)
xlim([1, N])
grid


%-------------------------------------------------------------------------------------------------------------------------
function [Best_pos,Best_Cost,curve,avcurve]=INFO(pop,Max_iter,lb,ub,dim,fobj)
%% Initialization
        Cost=zeros(pop,1);
        M=zeros(pop,1);
        
        X=initialization(pop,dim,ub,lb);
        
        for i=1:pop
           Cost(i) = fobj(X(i,:)); 
           M(i)=Cost(i);
        end
        
        [~, ind]=sort(Cost);
        Best_pos = X(ind(1),:);
        Best_Cost = Cost(ind(1));
        
        Worst_Cost = Cost(ind(end));
        Worst_X = X(ind(end),:);
        
        I=randi([2 5]);
        Better_X=X(ind(I),:);
        Better_Cost=Cost(ind(I));
        
%% Main Loop of INFO
        for it=1:Max_iter
            alpha=2*exp(-4*(it/Max_iter));                                                           % Eqs. (5.1) & % Eq. (9.1)                                     
            
            M_Best=Best_Cost;
            M_Better=Better_Cost;
            M_Worst=Worst_Cost;
            
            for i=1:pop
                
               % Updating rule stage
                del=2*rand*alpha-alpha;                                                           % Eq. (5)
                sigm=2*rand*alpha-alpha;                                                          % Eq. (9)                                          
                                                                 
                % Select three random solution
                A1=randperm(pop);
                A1(A1==i)=[];
                a=A1(1);b=A1(2);c=A1(3);
                
                e=1e-25;
                epsi=e*rand;
                
                omg = max([M(a) M(b) M(c)]);
                MM = [(M(a)-M(b)) (M(a)-M(c)) (M(b)-M(c))];
                
                W(1) = cos(MM(1)+pi)*exp(-(MM(1))/omg);                                           % Eq. (4.2)
                W(2) = cos(MM(2)+pi)*exp(-(MM(2))/omg);                                           % Eq. (4.3)
                W(3)= cos(MM(3)+pi)*exp(-(MM(3))/omg);                                            % Eq. (4.4)
                Wt = sum(W);
                
                WM1 = del.*(W(1).*(X(a,:)-X(b,:))+W(2).*(X(a,:)-X(c,:))+ ...                      % Eq. (4.1)
                    W(3).*(X(b,:)-X(c,:)))/(Wt+1)+epsi;
                
                omg = max([M_Best M_Better M_Worst]);
                MM = [(M_Best-M_Better) (M_Best-M_Better) (M_Better-M_Worst)];
                
                W(1) = cos(MM(1)+pi)*exp(-MM(1)/omg);                                             % Eq. (4.7)
                W(2) = cos(MM(2)+pi)*exp(-MM(2)/omg);                                             % Eq. (4.8)
                W(3) = cos(MM(3)+pi)*exp(-MM(3)/omg);                                             % Eq. (4.9)
                Wt = sum(W);
                
                WM2 = del.*(W(1).*(Best_pos-Better_X)+W(2).*(Best_pos-Worst_X)+ ...                   % Eq. (4.6)
                    W(3).*(Better_X-Worst_X))/(Wt+1)+epsi;
                
                % Determine MeanRule 
                r = unifrnd(0.1,0.5);
                MeanRule = r.*WM1+(1-r).*WM2;                                                     % Eq. (4)
                
                if rand<0.5
                    z1 = X(i,:)+sigm.*(rand.*MeanRule)+randn.*(Best_pos-X(a,:))/(M_Best-M(a)+1);
                    z2 = Best_pos+sigm.*(rand.*MeanRule)+randn.*(X(a,:)-X(b,:))/(M(a)-M(b)+1);
                else                                                                              % Eq. (8)
                    z1 = X(a,:)+sigm.*(rand.*MeanRule)+randn.*(X(b,:)-X(c,:))/(M(b)-M(c)+1);
                    z2 = Better_X+sigm.*(rand.*MeanRule)+randn.*(X(a,:)-X(b,:))/(M(a)-M(b)+1);
                end
                
               % Vector combining stage
                u=zeros(1,dim);
                for j=1:dim
                    mu = 0.05*randn;
                    if rand <0.5 
                        if rand<0.5
                            u(j) = z1(j) + mu*abs(z1(j)-z2(j));                                   % Eq. (10.1)
                        else
                            u(j) = z2(j) + mu*abs(z1(j)-z2(j));                                   % Eq. (10.2)
                        end
                    else
                        u(j) = X(i,j);                                                            % Eq. (10.3)
                    end
                end               

学习总结

极限学习机,为人工智能机器学习领域中的一种人工神神经网络模型,是一种求解单隐层前馈神经网路的学习演算法。极限学习机是用于分类、回归、聚类、稀疏逼近、压缩和特征学习的前馈神经网络,具有单层或多层隐层节点,其中隐层节点的参数(不仅仅是将输入连接到隐层节点的权重)不需要被调整。这些隐层节点可以随机分配并且不必再更新(即它们是随机投影但具有非线性变换),或者可以从其祖先继承下来而不被更改。在大多数情况下,隐层节点的输出权重通常是一步学习的,这本质上相当于学习一个线性模型。

参考资料

[1] G.-B. Huang, Q.-Y. Zhu, and C.-K. Siew, “Extreme learning machine: A new learning scheme of feedforward neural networks,” in Proc. Int. Joint Conf. Neural Networks, July 2004, vol. 2, pp. 985–990.
[2] https://blog.csdn.net/kjm13182345320/article/details/127361354

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

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

相关文章

skywalking 源码

源码核心是SkyWalkingAgent 找到一堆插件&#xff0c;来对符合条件的类来代理 通过AbstractClassEnhancePluginDefine.define方法来。 如果有很多版本的插件&#xff0c;spring有2.0版本,3.0版本,4.0版。 具体使用哪个版本&#xff0c;看被增加的类使用的是哪个版本的spring …

vue基础--计算商品的总价格

计算商品的总价格&#xff1a; 1、在 父组件中 通过计算属性 动态把总价格计算出来&#xff0c; 2、通过 父向子传值&#xff0c;通过自定义属性&#xff0c;把值传给 子组件 父组件&#xff1a; 1、使用计算属性computed 计算总价格&#xff1a; 1.1、先用filter 过滤出 数…

Unity UGUI5——图集

一、Drawcall ​ 字面理解 DrawCall&#xff0c;就是绘制呼叫的意思&#xff0c;表示 CPU&#xff08;中央处理器&#xff09;通知 GPU&#xff08;图形处理器-显卡&#xff09; &#xff08;一&#xff09;DrawCall 概念 就是 CPU &#xff08;处理器&#xff09;准备好渲染…

基于Web的停车场管理系统(Java)

目录 一、系统介绍 1.开发的环境 2.本系统实现的功能 3.数据库用到的表 4.工程截图 二、系统展示 1、登录页面 2、首页 3、系统信息管理模块 4、车位信息管理模块 5、IC卡信息管理模块 ​编辑6、固定车主停车管理模块 7、临时车主停车管理模块 8、系统功能操作模块 …

unity3d:小地图UV,UGUIshader毒圈挖孔,缩圈

运行效果 场景中缩圈 小地图中挖孔 大地图中挖孔 小地图 方案1使用Mask 给了一个方形的mask组件&#xff0c;然后根据玩家位置计算出地图左下角的位置进行移动。这种实现方式虽然简单&#xff0c;但是会有两个问题&#xff1a; 1.Overdraw特别大&#xff0c;几乎很多时候会有…

【LLMs 入门实战 】Vicuna 模型学习与实战

UC伯克利学者联手CMU、斯坦福等&#xff0c;再次推出一个全新模型70亿/130亿参数的Vicuna&#xff0c;俗称「小羊驼」&#xff0c;小羊驼号称能达到GPT-4的90%性能。 欢迎使用小羊驼&#x1f999;环境搭建权重下载下载 Vicuna Weight下载 LLAMA Weight构建真正的 working weigh…

Lattice Planner从入门到放弃

Lattice Planner相关背景和更正式的公式推导可以直接参考其原始论文《Optimal Trajectory Generation for Dynamic Street Scenarios in a Frent Frame》&#xff08;ICRA 2010&#xff09;&#xff0c;本文侧重于Lattic planner理论和代码的结合。 1. Lattice Planner基本流程…

2023年6月GESP能力等级认证C++一级真题

2023-06 GESP一级真题 题数&#xff1a;27 分数&#xff1a;100 测试时长&#xff1a;60min 一、选择题(每题 2 分&#xff0c;共 30 分) 1.以下不属于计算机输入设备的有 (B ) 。&#xff08;2分&#xff09; A、键盘 B、音箱 C、鼠标 D、传感器 答案解析&#xff1…

如果你正在做AI测试,那么这十点你必须注意

AI是一个已经进入人类日常生活的新技术时代&#xff0c;例如Siri&#xff0c;Alexa语音接口等。通过大数据和数据科学实现数据存储的进步&#xff0c;使用户能够进行快速分析和数据检索。机器学习是一个新领域&#xff0c;机 AI是一个已经进入人类日常生活的新技术时代&#x…

今天我们来说说MySQL的缓存机制

原文链接&#xff1a;http://www.ibearzmblog.com/#/technology/info?id5770c555acd4302f81d86976c06e2319 前言 当我们向数据库服务器发送一条SQL的时候&#xff0c;但数据库收到后就会执行&#xff0c;但是如果在短时间内都执行同一条SQL&#xff0c;如果每次数据库都会执…

CUDA和显卡驱动以及pytorch版本的对应关系

1 支持CUDA 的GPU 支持 CUDA 的 NVIDIA Quadro 和 NVIDIA RTX CUDA GPU | NVIDIA Developer您的 GPU 计算能力 您是否正在寻找 GPU 的计算能力然后查看以下表格。您可以在这里了解更多 计算能力 。 NVIDIA GPU 为全球数百万台台式机笔记本电脑工作站和超级计算机提供动力加速…

《计算机网络——自顶向下方法》精炼——4.4.3-4.4.5

学习是终身的职业。在学习的道路上&#xff0c;谁想停下来就要落伍。 文章目录 UPnP因特网控制报文协议&#xff08;ICMP&#xff09;IPv6IPv6数据报格式IPv4到IPv6的变革 UPnP 通用即插即用&#xff08;UPnP&#xff09;提供了一种让外部网络的主机与NAT内主机交换数据的方式…

六十分之十七———低头拉车后的抬头看路

目录 前言&#xff1a;一、目标二、计划三、完成情况四、提升改进(最少3点)五、意外之喜(最少2点)六、总结 前言&#xff1a; 距离上次的月总已经过去四个多月时间了&#xff0c;这段时间里又是一次阶段性的下沉和突破&#xff0c;于是也就有了现在的总结。 此时还想将自己17…

未来10年,网络安全人才就业的黄金期

随着大数据、物联网、人工智能等新技术的发展&#xff0c;信息技术与经济社会各领域的融合也更加深入。网络攻击行为日趋复杂、黑客攻击行为组织性更强、针对手机无线终端的网络攻击日趋严重&#xff0c;近几年有关网络攻击和数据泄露的新闻层出不穷。因此&#xff0c;随着国家…

Planning-oriented Autonomous Driving 解析

abstract 现代自动驾驶系统通常是模块化的序列任务&#xff0c;这种方式很容易造成累积误差和任务协调不足&#xff0c;因此设计一个端到端架构&#xff0c;从全局的视角出发为agent的交互提供互补的特征提取。 introduction (a) Most industrial solutions deploy separate …

【QQ界面展示-获取监听到的通知的具体内容 Objective-C语言】

一、获取监听到的通知的具体内容 1.刚才这个没说啊,给大家补充一下, 我们看一下,刚才我们只说了一个通知的发布、和移除吧, 刚才我们这里,只是说了一个通知的发布、和移除吧, 以及监听, 那么,大家有没有发现, 我们一开始,给大家介绍的时候,是不是有两个对象啊,…

关于手机Camera的硬件电路知识

前阶段&#xff0c;小白教同事测了些Camere的基本功耗。正愁不知道写什么的小白&#xff0c;突然想到了素材&#xff0c;于是乎便趁着周末雷雨天宅家之际&#xff0c;写一篇关于手机Camere的硬件文章。 手机Camera 一、工作原理 关于Camera&#xff0c;景物通过镜头生成光学…

CRM软件能否代替Excel进行客户管理?

很多销售习惯使用Excel表格来管理客户&#xff0c;觉得这样既简单又方便。但随着客户的增多&#xff0c;使用Excel表格管理客户会带来很多问题。因此&#xff0c;客户管理不用Excel表格用CRM软件&#xff0c;是一种更加明智的选择。 1、统一管理数据 数据是企业的命脉。一旦客…

Python二级综合应用题:通讯录管理

Python二级考试中的最后一题一般是压轴题&#xff0c;有一定的难度&#xff0c;而且分值也高。此题一般分为1~3个问题&#xff0c;步步为赢&#xff0c;才能更好地解决。遇到这种问题&#xff0c;首先是不要怕&#xff0c;能解决几步是几步。今天我们一个通讯录管理题来说明一下…

Unbuntu下载Clion并配置Cmake工具

Clion 下载CLion安装Cmake工具 下载CLion 如果使用的是Unbuntu系统&#xff0c;一行命令就搞定了 sudo snap install clion --classic其他系统的下载方法就不在这里记载了 安装Cmake工具 刚下好Clion的时候&#xff0c;打开之后&#xff0c;如果没有Cmake工具.Clion是不会帮…