零基础用代码丨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(1, 2); % 树的深度
params.eta = Best_pos(1, 3); % 学习率
- SSA的初始参数设置如下
fun = @getObjValue; % 目标函数
dim = 3; % 优化参数个数
lb = [001, 001, 0.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(1, 1));
params.max_depth = round(parameter(1, 2));
params.eta = parameter(1, 3);
%% 建立模型
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