时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)
时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)
目录
- 时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)
- 预测效果
- 基本介绍
- 程序设计
- 参考资料
预测效果




基本介绍
Matlab实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测
TSO-XGBoost,金枪鱼算法优化,XGBoost,时间序列预测。
1.data为数据集,单变量时间序列数据集,优化参数(最大迭代次数,深度,学习率),
2.MainTSO_XGboostTS.m为主程序文件,其他为函数文件,无需运行。
3.命令窗口输出R2、MAE、MAE和RMSEP等评价指标,可在下载区获取数据和程序内容。
注意程序和数据放在一个文件夹,文件夹不可以XGBoost命名,因为有函数已经用过,运行环境为Matlab2018及以上。
- xgboost是属于boosting家族,在目标函数中使用了二阶泰勒展开并加入了正则,在决策树的生成过程中采用了精确贪心的思路,寻找最佳分裂点的时候,使用了预排序算法,对所有特征都按照特征的数值进行预排序,然后遍历所有特征上的所有分裂点位,计算按照这些候选分裂点位分裂后的全部样本的目标函数增益,找到最大的那个增益对应的特征和候选分裂点位,从而进行分裂。
- 这样一层一层的完成建树过程, xgboost训练的时候,是通过加法的方式进行训练,也就是每一次通过聚焦残差训练一棵树出来,最后的预测结果是所有树的加和表示。
程序设计
- 完整源码和数据下载地址:MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行%% 优化算法
[Best_pos, Best_score, curve, avcurve] = TSO(pop, Max_iteration, lb, ub, dim, fun);%% 获取最优参数
num_trees = Best_pos(1, 1); % 迭代次数
%params.max_depth = Best_pos(1, 2); % 树的深度
params.max_depth = 18; % 树的深度
params.eta = Best_pos(1, 3); % 学习率%% 建立模型
model = xgboost_train(p_train, t_train, params, num_trees);%% 预测
t_sim1 = xgboost_test(p_train, model);
t_sim2 = xgboost_test(p_test , model);%% 数据反归一化
T_sim1 = mapminmax('reverse', t_sim1', ps_output);
T_sim2 = mapminmax('reverse', t_sim2', ps_output);%% V. 评价指标
%% 均方根误差 RMSE
error1 = sqrt(sum((T_sim1 - T_train).^2)./M);
error2 = sqrt(sum((T_test - T_sim2).^2)./N);%% 决定系数
R1 = rsquare(T_train,T_sim1);
R2 = rsquare(T_test,T_sim2);MAE1 = mean(abs(T_train - T_sim1));
MAE2 = mean(abs(T_test - T_sim2));
%% 平均绝对百分比误差MAPE
MAPE1 = mean(abs((T_train - T_sim1)./T_train));
MAPE2 = mean(abs((T_test - T_sim2)./T_test));
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 适应度曲线
figure
plot(1 : length(curve), curve, 'LineWidth', 1.5);
title('TSO适应度变化曲线', 'FontSize', 13);
xlabel('迭代次数', 'FontSize', 10);
ylabel('适应度值', 'FontSize', 10);
grid onaa=0.7;
z=0.05;
while Iter<Max_iterC=Iter/Max_iter;a1=aa+(1-aa)*C;a2=(1-aa)-(1-aa)*C;for i=1:size(T,1)Flag4ub=T(i,:)>ub;Flag4lb=T(i,:)<lb;T(i,:)=(T(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;fitness(i)=fobj(T(i,:));if fitness(i)<Best_scoreBest_score=fitness(i); Best_pos=T(i,:);endendC_old=T; fit_old=fitness;%-------------------------------------------------t=(1-Iter/Max_iter)^(Iter/Max_iter);if rand<zT(1,:)= (ub-lb)*rand+lb;elseif 0.5<randr1=rand;Beta=exp(r1*exp(3*cos(pi*((Max_iter-Iter+1)/Max_iter))))*(cos(2*pi*r1));if C>randT(1,:)=a1.*(Best_pos+Beta*abs(Best_pos-T(1,:)))+a2.*T(1,:); %Equation (8.3)elseIndivRand=rand(1,dim).*(ub-lb)+lb;T(1,:)=a1.*(IndivRand+Beta*abs(IndivRand-T(1,:)=Best_pos+rand(1,dim).*(Best_pos-T(1,:))+TF.*t^2.*(Best_pos-T(1,:));%Equation (9.1)elseT(1,:) =TF.* t^2.*T(1,:);%Equation (9.2)endendendfor i=2:popif rand<zT(i,:)= (ub-lb)*rand+lb;elseif 0.5<randr1=rand;T(i,:)=a1.*(Best_pos+Beta*abs(Best_pos-T(i,:)))+a2.*T(i-1,:);%Equation (8.4)elseIndivRand=rand(1,dim).*(ub-lb)+lb;T(i,:)=a1.*(IndivRand+Beta*abs(IndivRand-T(i,:)))+a2.*T(i-1,:);%Equation (8.2)endelseTF = (rand>0.5)*2-1;if 0.5>randT(i,:)=Best_pos+rand(1,dim).*(Best_pos-T(i,:))+TF*t^2.*(Best_pos-T(i,:)); %Equation (9.1)elseT(i,:) = TF*t^2.*T(i,:);%Equation (9.2)endendendendIter=Iter+1;curve(Iter)=Best_score;%curve(Iter) = GBestF;avcurve(Iter) = sum(curve) / length(curve);disp(['第' num2str(Iter) '次迭代适应度值:' num2str(Best_score)])
end
参考资料
[1] https://blog.csdn.net/kjm13182345320/article/details/124693040?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/124864369?spm=1001.2014.3001.5502
相关文章:
时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)
时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价) 目录 时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现基于TSO-XGBoost金枪鱼算…...
java- ConcurrentHashMap 并发
1. ConcurrentHashMap 并发 1.1. 减小锁粒度 减小锁粒度是指缩小锁定对象的范围,从而减小锁冲突的可能性,从而提高系统的并发能力。减小锁粒度是一种削弱多线程锁竞争的有效手段,这种技术典型的应用是 ConcurrentHashMap(高性能的 HashMap)…...
java练习8.100m小球落地
题目: 如一个小球从100米高度自由落下,每次落地后就反跳回原高度的一半。 那么求它在第10次落地时,共经过多少米?第10次反弹多高? public static void main(String[] args) {/*假如一个小球从100米高度自由落下,每次落…...
Android JNI系列详解之生成指定CPU的库文件
一、前提 这次主要了解Android的cpu架构类型,以及在使用CMake工具的时候,如何指定生成哪种类型的库文件。 如上图所示,是我们之前使用CMake工具默认生成的四种cpu架构的动态库文件:arm64-v8a、armeabi-v7a、x86、x86_64࿰…...
Leetcode每日一题:1448. 统计二叉树中好节点的数目
原题 给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。 「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。 示例 1: 输入:root [3,1,4,3,null,1,5] 输出:4 解…...
华为OD七日集训第2期 - 按算法分类,由易到难,循序渐进,玩转OD(文末送书)
目录 一、适合人群二、本期训练时间三、如何参加四、7日集训第2期五、精心挑选21道高频100分经典题目,作为入门。第1天、逻辑分析第2天、字符串处理第3天、数据结构第4天、递归回溯第5天、二分查找第6天、深度优先搜索dfs算法第7天、动态规划 六、集训总结1、《代码…...
3d max插件CG MAGIC中的蜂窝材质功能可提升效率吗?
工作中能提升效率也都是大家所想的,对于设计师的一个设计过程中,可能想怎么样可以更快呀,是哪个步骤慢了呢? 这样的结果只能说会很多,但是建模这个步骤,肯定是有多无少的。 为了让模型更加逼真,…...
一句话木马攻击复现:揭示黑客入侵的实战过程
这篇文章旨在用于网络安全学习,请勿进行任何非法行为,否则后果自负。 准备环境 OWASP虚拟机xfp 7与xshell 7 DVWA系统默认的账号密码均为:admin/admin 1、命令注入中复现 攻击payload 127.0.0.1 | echo "<?php eval(…...
【游戏开发教程】Unity Cinemachine快速上手,详细案例讲解(虚拟相机系统 | 新发出品 | 良心教程)
文章目录 一、前言二、插件下载三、案例1:第三人称自由视角,Free Look character场景1、场景演示2、组件参数2.1、CinemachineBrain:核心2.2、CinemachineFreeLook:第三人称自由视角相机2.2.1、设置Follow:跟随2.2.2、…...
当图像宽高为奇数时,如何计算 I420 格式的uv分量大小
背景 I420 中 yuv 数据存放在3个 planes 中。 网上一般说 I420 数据大小为 widthheight1.5 但是当 width 和 height 是奇数时,这个计算公式会有问题。 I420 中 u 和 v 的宽高分别为 y 的一半。 但是当不能整除时,是如何取整呢?向上还是向下&…...
结构型模式-代理模式
代理模式* 定义:在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 意图:为其…...
SpringBoot+Redis BitMap 实现签到与统计功能
最近项目里需要集成签到和统计功能,连续签到后会给用户发放一些优惠券和奖品,以此来吸引用户持续在该品台进行活跃。下面我们一些来聊一聊目前主流的实现方案。 因为签到和统计的功能涉及的数据量比较大,所以在如此大的数据下利用传统的关系…...
P5739 【深基7.例7】计算阶乘
题目描述 求 n ! n! n!,也就是 1 2 3 ⋯ n 1\times2\times3\dots\times n 123⋯n。 挑战:尝试不使用循环语句(for、while)完成这个任务。 输入格式 第一行输入一个正整数 n n n。 输出格式 输出一个正整数,…...
scikit-learn中OneHotEncoder用法
One-Hot编码,又称为一位有效编码,是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值,然后,每个整数值被表示为二进制向量,将整数索引标记为1,其余都标为0。 OneHotEncoder()常用参数解释 …...
linux操作系统的权限的深入学习(未完)
1.Linux权限的概念 Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户…...
C 连接MySQL8
Linux 安装MySQL 8 请参考文章:Docker 安装MySQL 8 详解 Visual Studio 2022 编写C 连接MySQL 8 C源码 #include <stdio.h> #include <mysql.h> int main(void) {MYSQL mysql; //数据库句柄MYSQL_RES* res; //查询结果集MYSQL_ROW row; //记录结…...
福利之舞:员工的心跳与企业的平衡术
引言:员工福利与满意度的关系 在现代企业中,员工福利已经不仅仅是一种待遇,而是与员工满意度、忠诚度和生产力紧密相连的关键因素。一个合理且吸引人的福利制度可以大大提高员工的工作积极性,同时也能够吸引和留住顶尖的人才。但…...
MyBatis动态语句且如何实现模糊查询及resultType与resultMap的区别---详细介绍
前言 前面我们学习了如何使用Mybatis实现简单的增删改查。今天我们来学习如何使用动态语句来根据不同的条件生成不同的SQL语句。这在实际开发中非常有用,因为通常查询条件是多样化的,需要根据实际情况来拼接SQL语句,那什么是MyBatis动态语句呢…...
麒麟OS国产系统身份证阅读器web网页开发使用操作流程
1、打开麒麟软件商店,选择驱动,找到身份证阅读器,找到东信智能身份证社保卡读卡器,点击安装。 2、安装完成后,点击打开 3、进入读卡界面 4、进入代码集成 <script type"text/javascript">var ctnFin…...
前端面试:【事件处理】探索事件流、委托与事件对象
嗨,亲爱的事件探险家!在JavaScript的世界中,事件处理是与用户互动的关键。本文将带你探索事件流、事件委托、常见事件类型和事件对象,这些知识将帮助你成为事件处理的大师。 2. 事件流:事件的旅程 事件流描述了事件从…...
VibeVoice语音合成效果展示:印度英语in-Samuel_man技术讲座样例
VibeVoice语音合成效果展示:印度英语in-Samuel_man技术讲座样例 1. 真实语音合成效果体验 今天我要带大家体验一个让人惊艳的语音合成技术——VibeVoice实时语音合成系统。这不是普通的文字转语音工具,而是一个能够生成极其自然、富有表现力的人工智能…...
终极暗黑破坏神2现代化方案:d2dx让经典游戏在宽屏时代重获新生
终极暗黑破坏神2现代化方案:d2dx让经典游戏在宽屏时代重获新生 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你…...
DeOldify移动端适配初探:基于Android平台的原型开发
DeOldify移动端适配初探:基于Android平台的原型开发 你有没有翻看过家里的老相册?那些泛黄的黑白照片,承载着珍贵的记忆,却总让人觉得少了点色彩的温度。如果能给它们一键上色,让记忆鲜活起来,那该多好。这…...
OpenMP vs C++ 线程池:到底该用谁?
在 C 多线程并行编程中,OpenMP 和线程池是最常用的两种方案。很多开发者都会陷入困惑:同样是实现多线程加速,到底该选 OpenMP 还是 C 线程池?有人觉得 OpenMP 一行代码就能并行,简单高效;也有人偏爱线程池的…...
NaViL-9B效果实测:10类常见图片(图表/证件/包装/截图)理解准确率
NaViL-9B效果实测:10类常见图片理解准确率 1. 模型能力概览 NaViL-9B作为原生多模态大语言模型,在图片理解方面展现出令人印象深刻的能力。不同于传统视觉模型,它不仅能识别图片内容,还能结合上下文进行智能推理和描述。 1.1 核…...
OpenClaw多任务测试:百川2-13B-4bits模型在并行处理中的显存管理
OpenClaw多任务测试:百川2-13B-4bits模型在并行处理中的显存管理 1. 测试背景与动机 上周在调试一个自动化工作流时,遇到了一个典型问题:当OpenClaw同时处理文件格式转换、网页信息抓取和邮件发送任务时,后台的百川2-13B模型频繁…...
3分钟掌握Mermaid:用代码思维绘制专业图表的核心技巧
3分钟掌握Mermaid:用代码思维绘制专业图表的核心技巧 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器,支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程…...
Qt图形视图框架性能调优指南:从QGraphicsScene的ItemIndexMethod到视图更新策略
Qt图形视图框架性能调优实战:从索引算法到渲染优化 在开发CAD设计工具或地理信息系统时,我们团队曾遇到一个棘手问题:当场景中的图元数量超过5000个时,平移视图会出现明显的卡顿。通过系统性的性能分析,我们发现90%的C…...
Z-Image-Turbo镜像效果展示:孙珍妮LoRA在不同画幅(1:1/4:3/9:16)表现
Z-Image-Turbo镜像效果展示:孙珍妮LoRA在不同画幅(1:1/4:3/9:16)表现 1. 引言:当AI遇见明星肖像生成 你是否曾经想过,用AI技术生成自己喜欢的明星肖像?今天我们要展示的Z-Image-Turbo镜像,正是…...
8个Illustrator自动化脚本解决方案,彻底改变设计师工作流程
8个Illustrator自动化脚本解决方案,彻底改变设计师工作流程 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts illustrator-scripts项目提供了一套专业的Adobe Illustrator…...
