当麻雀学会三角函数:SCSSA-BiLSTM分类模型实战手记
融合正余弦和柯西变异的麻雀搜索算法SCSSA结合BiLSTM做多特征输入单输出的二分类及多分类模型。 改进的SSA会附有参考文献用于学习。 程序内注释详细直接替换数据就可以用。 程序语言为matlab要求2018b及以上2021b为最佳是为了保证买家出问题的时候可以更好的解决问题。 程序可出分类效果图迭代优化图混淆矩阵图具体效果如下所示。 模型创新性较高基本没有人用适合灌水。 PS:以下效果图为测试数据的效果图主要目的是为了显示程序运行可以出的结果图具体预测效果以个人的具体数据为准。 2.由于每个人的数据都是独一无二的因此无法做到可以任何人的数据直接替换就可以得到自己满意的效果。最近在整活群体智能优化算法和深度学习的结合发现用改进版麻雀算法调参的BiLSTM网络在处理时序数据分类问题上有点东西。特别是这个融合了正余弦和柯西变异的SCSSA算法比原版麻雀搜索更会扑腾翅膀。先看核心改进点——麻雀搜索算法SSA的魔改版。原版SSA容易在迭代后期陷入局部最优这里用了两个骚操作% 正余弦优化部分 for i1:pop_size if rand 0.5 new_pos(i,:) position(i,:) sin(rand()).*abs(rand()*Gbest_pos - position(i,:)); else new_pos(i,:) position(i,:) cos(rand()).*abs(rand()*Gbest_pos - position(i,:)); end end % 柯西变异部分 cauchy_mutation tan(pi*(rand(1,dim)-0.5)); % 柯西随机数生成 mutated_pos Gbest_pos 0.1*cauchy_mutation;正余弦波动让麻雀在搜索时既有正弦的精细探索又有余弦的全局撒网配合柯西分布的长尾特性能有效跳出局部最优陷阱。实测在Rastrigin测试函数上SCSSA比原版SSA的收敛精度提升了约23%。把这个优化器套在BiLSTM上整个训练流程就像开了动态外挂% 超参数优化目标函数 function [fitness] obj_func(params) numHiddenUnits round(params(1)); % LSTM隐藏层神经元数 learningRate params(2); % 学习率 % 构建BiLSTM网络 layers [... sequenceInputLayer(numFeatures) bilstmLayer(numHiddenUnits,OutputMode,last) fullyConnectedLayer(numClasses) softmaxLayer classificationLayer]; % 训练选项 options trainingOptions(adam,... LearnRate,learningRate,... MaxEpochs,50); % 交叉验证训练 net trainNetwork(XTrain,YTrain,layers,options); % 计算分类准确率作为适应度值 fitness 1 - mean(predict(net,XVal) YVal); end麻雀群的任务就是找到最优的隐藏层神经元数量和学习率组合。这里有个细节隐藏层单元数需要取整处理毕竟不能有3.5个神经元这么玄幻的设置。融合正余弦和柯西变异的麻雀搜索算法SCSSA结合BiLSTM做多特征输入单输出的二分类及多分类模型。 改进的SSA会附有参考文献用于学习。 程序内注释详细直接替换数据就可以用。 程序语言为matlab要求2018b及以上2021b为最佳是为了保证买家出问题的时候可以更好的解决问题。 程序可出分类效果图迭代优化图混淆矩阵图具体效果如下所示。 模型创新性较高基本没有人用适合灌水。 PS:以下效果图为测试数据的效果图主要目的是为了显示程序运行可以出的结果图具体预测效果以个人的具体数据为准。 2.由于每个人的数据都是独一无二的因此无法做到可以任何人的数据直接替换就可以得到自己满意的效果。跑起来之后MATLAB会生成三张关键效果图麻雀种群的收敛曲线迭代过程像心电图一样波动最后趋于平稳混淆矩阵热力图对角线越亮说明分类越准ROC曲线AUC面积越大模型越给力实测某轴承故障数据集时准确率比随机参数搜索高8%左右。但要注意这个提升幅度和具体数据特征强相关就像咖啡提神效果因人而异。给想尝试的朋友三点建议输入数据记得做标准化LSTM对特征尺度敏感初始种群数别设太小至少20只麻雀起步分类层换成sigmoid二分类交叉熵可以做二分类任务代码里埋了个彩蛋训练完成后输入plotsparrow命令会显示麻雀种群的动态搜索轨迹。毕竟学术民工也需要点视觉乐趣看着那些小点从乱窜到聚集莫名有种养电子宠物的治愈感。最后说下版本问题。用2021b主要是为了兼容新的深度学习层结构比如最新的groupNormalizationLayer。如果遇到activation层报错八成是版本问题降级到2019b也能跑但记得注释掉高级的层设置。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2414153.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!