做公司网站协议书模板下载,排名优化软件点击,seo经验,义乌网站建设公司排名时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价) 目录 时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现基于TSO-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 onaa0.7;
z0.05;
while IterMax_iterCIter/Max_iter;a1aa(1-aa)*C;a2(1-aa)-(1-aa)*C;for i1:size(T,1)Flag4ubT(i,:)ub;Flag4lbT(i,:)lb;T(i,:)(T(i,:).*(~(Flag4ubFlag4lb)))ub.*Flag4ublb.*Flag4lb;fitness(i)fobj(T(i,:));if fitness(i)Best_scoreBest_scorefitness(i); Best_posT(i,:);endendC_oldT; fit_oldfitness;%-------------------------------------------------t(1-Iter/Max_iter)^(Iter/Max_iter);if randzT(1,:) (ub-lb)*randlb;elseif 0.5randr1rand;Betaexp(r1*exp(3*cos(pi*((Max_iter-Iter1)/Max_iter))))*(cos(2*pi*r1));if CrandT(1,:)a1.*(Best_posBeta*abs(Best_pos-T(1,:)))a2.*T(1,:); %Equation (8.3)elseIndivRandrand(1,dim).*(ub-lb)lb;T(1,:)a1.*(IndivRandBeta*abs(IndivRand-T(1,:)Best_posrand(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 i2:popif randzT(i,:) (ub-lb)*randlb;elseif 0.5randr1rand;T(i,:)a1.*(Best_posBeta*abs(Best_pos-T(i,:)))a2.*T(i-1,:);%Equation (8.4)elseIndivRandrand(1,dim).*(ub-lb)lb;T(i,:)a1.*(IndivRandBeta*abs(IndivRand-T(i,:)))a2.*T(i-1,:);%Equation (8.2)endelseTF (rand0.5)*2-1;if 0.5randT(i,:)Best_posrand(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)endendendendIterIter1;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?spm1001.2014.3001.5502 [2] https://blog.csdn.net/kjm13182345320/article/details/124864369?spm1001.2014.3001.5502