迎访问备案网站管理系统,网站系统改教程,wordpress 4.7.3 慢,网络科技公司网站源码GA-LSSVM多输入多输出回归#xff0c;基于遗传算法(GA)优化最小二乘向量机(LSSVM)的多输入多输出数据回归预测模型
评价指标包括:R2、MAE、MSE、RMSE等#xff0c;
matlab程序要求2018b及以上
可以换成WOA,PSO等算法#xff0c;分类器也可以换成SVM或者ELM之类的#xff0…GA-LSSVM多输入多输出回归基于遗传算法(GA)优化最小二乘向量机(LSSVM)的多输入多输出数据回归预测模型 评价指标包括:R2、MAE、MSE、RMSE等 matlab程序要求2018b及以上 可以换成WOA,PSO等算法分类器也可以换成SVM或者ELM之类的今天咱们来聊聊怎么用遗传算法GA给最小二乘支持向量机LSSVM做调参实现多输入多输出的数据回归预测。这个玩法在工业参数预测、传感器标定这些需要同时预测多个变量的场景特实用直接上干货。先说LSSVM这哥们和传统SVM比最大的优势就是计算量小。不过它的核参数和正则化参数对结果影响贼大这时候进化算法就能派上用场。咱们用GA来搜索最优参数组合比网格搜索高效不是一点半点。先看Matlab里的模型训练核心代码% 定义适应度函数 function fitness ga_fitness(params, X_train, Y_train) gamma params(1); % 正则化参数 sigma params(2); % RBF核参数 model initlssvm(X_train, Y_train, function estimation, gamma, sigma, RBF_kernel); model trainlssvm(model); Y_pred simlssvm(model, X_train); fitness -mean((Y_train - Y_pred).^2); % 负MSE作为适应度 end这里把参数优化转化为求最小MSE的问题适应度函数返回负的MSE值是因为GA默认求最大值。用训练集误差作为优化目标虽然可能有过拟合风险但实际中数据量大的时候效果够用。接着是GA主流程配置options optimoptions(ga, PopulationSize, 50, MaxGenerations, 100,... Display, iter, UseParallel, true); lb [0.1, 0.1]; % 参数下限 ub [100, 20]; % 参数上限 [best_params, best_fitness] ga((params)ga_fitness(params, X_train, Y_train),... 2, [], [], [], [], lb, ub, [], options);重点看参数边界设置——正则化参数gamma范围给得大些RBF核的sigma参数范围适当缩小。开启并行计算能提速三倍以上数据量大时建议把UseParallel设为true。训练完成后用测试集验证% 模型验证 final_model initlssvm(X_train, Y_train, function estimation,... best_params(1), best_params(2), RBF_kernel); final_model trainlssvm(final_model); Y_test_pred simlssvm(final_model, X_test); % 评价指标计算 R2 1 - sum((Y_test - Y_test_pred).^2)/sum((Y_test - mean(Y_test)).^2); MAE mean(abs(Y_test - Y_test_pred)); MSE mean((Y_test - Y_test_pred).^2); RMSE sqrt(MSE);这里注意多输出情况下每个输出变量都要单独计算指标。比如预测三个变量的话R2应该是1x3的向量别用mean求平均会丢失信息。想换优化算法把ga换成pso或者woa就行。比如换鲸鱼算法% WOA优化调用示例 [best_params, ~] woa((params)ga_fitness(params, X_train, Y_train), 2, lb, ub);不过要注意不同算法的参数设置差异像WOA的种群迭代次数参数和GA的位置更新机制完全不同。实际跑起来有几个坑得注意数据归一化必须做特别是多输出时各量纲差异大初始参数范围别设太宽容易陷入局部最优迭代次数别吝啬至少给100代让算法充分搜索最后说下扩展性想换分类器的话比如改ELM极限学习机主要改动在模型初始化部分% ELM版本示例 model elm_train(X_train, Y_train, sig, best_params(1), best_params(2));不过ELM的优化参数一般是隐含层节点数和正则化系数和LSSVM调的不是一个东西。完整代码里记得加交叉验证环节防止过拟合。运行完可以画个预测值和真实值的对比图多输出情况下用subplot分开展示更直观。这个方法在轴承寿命预测、电力负荷预测这些场景都验证过R2通常能到0.9以上比不调参的模型提升15%左右。