【课程编码:011】基于麻雀搜索算法优化的XGBoost多变量回归预测 (仅在合集销售)

作品简介

零基础用代码丨SSA-XGBoost


购买后获取全套代码、数据以及视频指导教程

麻雀算法(SSA)原理

麻雀优化算法是2020年被提出的新型智能优化算法,主要根据麻雀的觅食、反捕食行为启发二提出。算法具有全局寻优能力强,收敛效率高的特点。【Xue J , Shen B . A novel swarm intelligence optimization approach: sparrow search algorithm[J]. Systems ence & Control Engineering An Open Access Journal, 2020, 8(1):22-34-8】


SSA优化XGBoost

  • 利用SSA的全局寻优能力,在模型构建过程中,寻找最优异的超参数组合,此处,我们优化XGBoost中的迭代次数、树的深度、学习率
%%  获取最优参数
num_trees = Best_pos(1, 1);         % 迭代次数
params.max_depth = Best_pos(12);  % 树的深度
params.eta = Best_pos(13);        % 学习率
  • SSA的初始参数设置如下
fun = @getObjValue;                 % 目标函数
dim = 3;                            % 优化参数个数
lb  = [0010010.01];             % 优化参数目标下限(最大迭代次数,深度,学习率)
ub  = [100,  20,  1];               % 优化参数目标上限(最大迭代次数,深度,学习率)
pop = 30;                           % 麻雀数量
Max_iteration = 10;                 % 最大迭代次数
params.objective = 'reg:linear';    % 回归函数
  • 目标函数getObjValue是计算XGBoost模型的预测误差
function objValue = getObjValue(parameter)

%%  从主函数中获取训练数据
    p_train = evalin('base''p_train');
    t_train = evalin('base''t_train');

%%  获取最优参数
    num_trees = round(parameter(11));
    params.max_depth = round(parameter(12));
    params.eta = parameter(13);

%% 建立模型
    model = xgboost_train(p_train, t_train, params, num_trees);
    
%%  模型预测
    t_sim = xgboost_test(p_train, model);
    
%%  性能评价
    accuracy = sqrt(sum((t_sim - t_train).^2) ./ length(t_sim));

%%  以分类预测错误率作为优化的目标函数值
    if size(accuracy, 1) == 0
        objValue = 1;
    else
        objValue = accuracy;
    end
end
  • 最终预测结果展示

训练集测试集迭代曲线

购买后获取全套代码、数据以及视频指导教程

包含未优化XGBoost、SSA优化后的XGBoost、麻雀优化算法全套代码

以及C语言编译器最新安装教程

【【保姆级】MATLAB安装C语言编译器轻松安装】 https://www.bilibili.com/video/BV1tw411e7w8/?share_source=copy_web&vd_source=8f14cc4e9cb08bc7f5242306eec62c02



创作时间: