当前位置: 首页 > news >正文

当极限学习机遇上猛禽:用天鹰算法调参实战

天鹰优化算法AO优化ELM神经网络的权值和阈值参数做多输入单输出的拟合预测建模。 程序内注释详细直接替换数据就可以使用。 程序语言为matlab。 程序直接运行可以出拟合预测图,迭代优化图,线性拟合预测图,多个预测评价指标。 想要的加好友我吧。 PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果以个人的具体数据为准。 2.由于每个人的数据都是独一无二的,因此无法做到可以任何人的数据直接替换就可以得到自己满意的效果。

最近在折腾预测模型时发现,极限学习机(ELM)虽然训练快,但随机初始化的权值和阈值容易让结果坐过山车。试了十几种优化算法,发现天鹰优化器(Aquila Optimizer, AO)在调参上居然比粒子群还猛——关键是MATLAB代码实现起来特别省事。

天鹰优化算法AO优化ELM神经网络的权值和阈值参数做多输入单输出的拟合预测建模。 程序内注释详细直接替换数据就可以使用。 程序语言为matlab。 程序直接运行可以出拟合预测图,迭代优化图,线性拟合预测图,多个预测评价指标。 想要的加好友我吧。 PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果以个人的具体数据为准。 2.由于每个人的数据都是独一无二的,因此无法做到可以任何人的数据直接替换就可以得到自己满意的效果。

直接上干货,咱们先看代码骨架:

%% 天鹰优化ELM主函数 function AO_ELM() % 读取数据(替换成自己的data.csv) data = readmatrix('data.csv'); input = data(:,1:end-1); output = data(:,end); % 参数设置 numSearchAgents = 20; % 天鹰种群数量 maxIter = 100; % 最大迭代次数 inputSize = size(input,2); hiddenSize = 10; % 隐层节点数 % AO优化ELM [bestWeights, bestThreshold, convergenceCurve] = AO(input, output, inputSize, hiddenSize, numSearchAgents, maxIter); % 预测与绘图 predictAndPlot(bestWeights, bestThreshold, input, output); end

这段代码的关键在于AO函数内部怎么玩转ELM的权值矩阵。天鹰算法的核心是模拟猛禽捕猎时的俯冲和包围策略,对应到代码里就是位置更新的两种模式:

% AO位置更新片段(简化版) for i=1:numSearchAgents if rand < 0.5 % 俯冲策略:利用Levy飞行进行全局搜索 step = levyFlight(); newPos = currentPos + step.*(bestPos - currentPos); else % 包围策略:局部精细搜索 radius = mean(bestPos) * rand; newPos = bestPos + radius.*randn(size(bestPos)); end end

适应度函数这里有个小技巧——直接用ELM的输出误差作为优化目标:

function fitness = getFitness(position, input, output, inputSize, hiddenSize) % 拆分位置向量为输入权值和阈值 W = reshape(position(1:inputSize*hiddenSize), hiddenSize, inputSize); B = position(inputSize*hiddenSize+1:end); % ELM训练 H = elmHiddenLayer(input, W, B); beta = pinv(H) * output; % 计算RMSE pred = H * beta; fitness = sqrt(mean((pred - output).^2)); end

运行完优化后,预测部分要注意反标准化。这里用了线性回归图来直观显示预测值和真实值的相关性:

% 预测结果绘图片段 plotregression(target, predict); title('线性拟合效果'); xlabel('实际值'); ylabel('预测值'); grid on;

效果图上那个迭代曲线特别重要——如果曲线在20代以后还没收敛,可能需要调大maxIter或者增加种群数量。测试时发现,对于有噪声的数据,把天鹰的Levy飞行参数调高能避免早熟。

最后给个评价指标计算的彩蛋:

R2 = 1 - sum((target-predict).^2)/sum((target-mean(target)).^2); fprintf('R方:%.4f RMSE:%.4f\n', R2, rmse);

注意事项

  1. 输入数据建议先做归一化,ELM对尺度敏感;
  2. 隐层节点数别贪多,8-15个足够,否则可能过拟合;
  3. 替换数据时保持格式为[特征列... , 目标列]
  4. 想调参的话,优先动Levy飞行的步长参数。

效果图里那个预测曲线看着顺滑,实际跑工业数据可能会有点毛刺——别慌,这是优化器在努力逼近真实规律呢。需要完整代码的私,记得备注来意~

http://www.jsqmd.com/news/326938/

相关文章:

  • 【题解】CF1773G Game of Questions
  • 深度学习框架YOLO+DeepSeek农作物病虫害检测系统 结合DeepSeek、Qwen等大模型对检测结果给出相关建议,并可将检测报告导出为PDF文件。另外添加可视化界面对检测结果进行可视化显示。
  • 【题解】CF2085F2 Serval and Colorful Array (Hard Version)
  • 基于STM32和FreeRTOS的智能家居设计之路 - 指南
  • C++编译期数组操作
  • 【题解】P14561 [CXOI2025] 我常常追忆过去
  • C++中的享元模式变体
  • 深耕蚌埠 全域运营|三十六行蚌埠分公司解锁本地商户增长新路径
  • 高性能网络协议栈
  • 主频、带宽概念
  • 【题解】P10665 [AMPPZ2013] Bytehattan
  • 【题解】P14610 [NWRRC 2025] Keys and Grates
  • 低延迟系统C++优化
  • 【题解】AT_arc098_c [ARC098E] Range Minimum Queries
  • 【题解】P7974 [KSN2021] Delivering Balls
  • 动态库热加载技术
  • C++中的观察者模式变体
  • 备考锦囊:分享主治考试哪个老师讲得好,点亮通关智慧之光
  • 嵌入式C++安全编码
  • C++中的表达式模板
  • 浅谈莫队
  • 混合储能与并网控制:基于Matlab Simulink的蓄电池与超级电容混合储能系统仿真模型研究
  • 教学风格全解析:考主管护师听哪个老师的课?寻找契合您的领路人。
  • 2026执业药师考试教辅书推荐:三大靠谱教材测评对比,备考就选这一套!
  • 《P4587 [FJOI2016] 神秘数》
  • 十大优秀主管护师老师课程推荐排名
  • 执业药师考试教辅书推荐:口碑排行前五的备考用书,考生看过几本?
  • 详细解释xilinx源语的使用:IDELAYCTRL
  • 探寻临床执业医师资格考试机构,锁定高通过率的良方
  • 2026执业中药师在线课程推荐指南:三大神级课程真实测评,闭眼入不踩坑!