198种组合算法+双重优化BP神经网络+SHAP分析+新数据预测!机器学习可解释分析,粉丝必备!

发布于:2025-08-20 ⋅ 阅读:(22) ⋅ 点赞:(0)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码主要功能

该Matlab代码实现了一个198种组合算法双重优化的BP神经网络回归模型,结合特征贡献度分析(SHAP)和新数据预测功能。核心功能包括:

  1. 双重参数优化:先用智能算法(以chebyshev映射改进SSA麻雀算法为例)优化隐藏层神经元数量和学习率,再用智能算法(以chebyshev映射改进PSO粒子群算法为例)优化权重/偏置初始值
  2. 特征贡献分析:通过SHAP值量化各输入特征对输出的影响
  3. 多维度评估:提供RMSE、R²、MAE等指标对比及可视化
  4. 一站式流程:数据预处理 → 模型优化 → 训练预测 → 结果解释 → 新数据预测

其中:代码采用9种映射方法选择种群初始值,改进22种智能算法

9种映射方法包括
1.tent 映射
2.chebyshev 映射
3.singer 映射
4.logistic 映射
5.sine 映射
6.circle 映射
7.立方映射
8.Hénon 映射
9.广义Logistic映射

22种智能算法包括:
1.PSO 粒子群
2.SSA 麻雀
3.ZOA 斑马
4.WOA 鲸鱼群
5.WSO 白鲨
6.GWO 灰狼
7.GA 遗传算法
8.C_PSO 横向交叉粒子群
9.COA 小龙虾
10.DA 蜻蜓
11.IGWO 改进灰狼
12.SMA 黏菌
13.RIME 雾凇/霜冰
14.NRBO 牛顿-拉夫逊优化算法
15.CPO 冠豪猪
16.DBO 蜣螂
17.E-WOA 改进鲸鱼群
18.FSA 火焰鸟
19.GEO 金鹰
20.GoldSA 黄金正弦
21.LVY 常青藤
22.KOA 开普勒

以上共计9*22=198种智能算法组合


算法步骤

  1. 数据预处理

    • 导入Excel数据(回归数据.xlsx
    • 归一化特征/标签(mapminmax
    • 按7:3划分训练/测试集(可选随机打乱)
  2. 第一段优化(以SSA为例)

    • 优化目标:隐藏层神经元数 + 学习率
    • 搜索空间:
      lb1 = [floor(sqrt(inp+put)), 0];   % 神经元下限, 学习率下限
      ub1 = [10+ceil(sqrt(inp+put)), 0.1]; % 神经元上限, 学习率上限
      
    • 输出:最优神经元数 besthiddens、学习率 bestlearn
  3. 第二段优化(以PSO为例)

    • 优化目标:权重矩阵(Ⅰ/Ⅱ) + 偏置向量(Ⅰ/Ⅱ)
    • 变量维度:inp*besthiddens + besthiddens + besthiddens*put + put
    • 输出:最优初始参数 gBest2
  4. 模型构建与训练

    • 使用优化参数初始化BP网络
    • 设置双曲正切隐藏层 + 线性输出层
    • 训练1000轮(目标误差1e-6)
  5. 预测与评估

    • 反归一化预测结果
    • 对比优化/未优化模型的:
      • 预测曲线图
      • 百分比误差图
      • 线性拟合图
      • 雷达图(RMSE/R²/MAE)
  6. SHAP特征分析

    • 基于测试集计算Shapley值
    • 生成三种可视化:
      • 特征重要性条形图
      • 特征效应散点图
      • 摘要图(特征影响方向)
  7. 新数据预测

    • 加载新的多输入.xlsx
    • 自动应用相同归一化参数
    • 输出预测结果到新的输出.xlsx

技术路线

数据预处理
优化神经元/学习率
优化权重/偏置
BP网络训练
预测评估
SHAP特征分析
新数据预测

关键参数设定

参数 说明
ratio 0.7 训练集占比
N1/N2 10 种群大小
Max_iteration 30 优化算法迭代次数
chaos_label 2 混沌映射类型(Chebyshev)
tf {‘tansig’,‘purelin’} 隐藏层/输出层激活函数
epochs 1000 最大训练轮次
goal 1e-6 训练目标误差

运行环境要求

  1. MATLAB版本:R2020b及以上
  2. 必要工具箱
    • Deep Learning Toolbox
    • Optimization Toolbox
    • Parallel Computing Toolbox(可选,加速SHAP计算)
  3. 依赖文件
    • OA_ToolBox\(智能算法实现)
    • spider_plot\(雷达图绘制)
    • 自定义函数
  4. 数据格式:Excel文件(特征列+标签列)

应用场景

  1. 科研论文:提供完整的优化-评估-解释流程,可直接生成论文图表
  2. 数模比赛:适用于数学建模比赛的回归问题
  3. 工业预测:如:
    • 设备寿命预测
    • 金融风险评估
    • 销售量预测
  4. 特征工程:通过SHAP分析识别关键特征
  5. 算法对比:验证智能优化算法对传统BP网络的改进效果

注意:代码中使用的混沌映射(Chebyshev)可增强优化算法的全局搜索能力,避免早熟收敛。SHAP分析部分需确保特征名称(featureNames)与实际数据匹配。

部分源码




X = res(:,1:end-1);  %输入特征
Y = res(:,end);  %输出
%计算输入和输出维度
inp = size(X,2);  %输入特征数
put = size(Y,2);  %输出个数
%%  数据归一化 索引
X = res(:,1:inp);  %输入特征
Y = res(:,end-put+1:end);  %输出
[x,psin]= mapminmax(X', 0, 1);
%保留归一化后相关参数
[y, psout] = mapminmax(Y', 0, 1);
%%  划分训练集和测试集
num = size(res,1);%总样本数
k = input('是否打乱样本(是:1,否:0):');
if k == 0
   state = 1:num; %不打乱样本
else
   state = randperm(num); %打乱样本
end
ratio = 0.7; %训练集占比
trainnum = floor(num*ratio);
testnum = num-trainnum;
%取出训练集的x,y
x_train = x(:,state(1: trainnum));
y_train = y(:,state(1: trainnum));
%取出测试集的x,y
x_test = x(:,state(trainnum+1: end));
y_test = y(:,state(trainnum+1: end));
%% 智能优化算法的初始值
% label=1 对应 tent 映射  
% label=2 对应 chebyshev 映射  
% label=3 对应 singer 映射  
% label=4 对应 logistic 映射  
% label=5 对应 sine 映射  
% label=6 对应 circle 映射
% label=7 对应 立方映射
% label=8 对应 Hénon 映射
% label=9 对应广义Logistic映射
% 如果label不是1-9之间的整数,则默认生成随机矩阵 
label = 2;  %自行指定
%%  第一步优化隐藏层神经元个数、学习率
%调用算法,两个变量:x1为神经元个数,x2为学习率
N1=10; %种群数
Max_iteration1 = 30; %迭代次数
%神经元个数范围,floor(sqrt(inp+put))~10+ceil(sqrt(inp+put)),可以自行改变
%学习率范围0-0.1,可以自行改变
lb1=[floor(sqrt(inp+put)) 0];%下限值
ub1=[10+ceil(sqrt(inp+put)) 0.1];%上限值
dim1=2; %2个变量,神经元个数、学习率
disp('第一步SSA优化隐藏层神经元个数、学习率')
[gBestScore1,gBest1,cg_curve1]=SSA(N1,Max_iteration1,lb1,ub1,dim1,fitness1,label);
%gbest为最优参数(对应误差最小情况时神经元、学习率)
besthiddens = round(gBest1(1));
bestlearn = gBest1(2);
%迭代曲线1
figure
plot(cg_curve1,'->','LineWidth',2,Color=[200,68,94]./255)
% 添加图例,并设置字体大小  
legend('SSA','FontSize',10); 
% 设置 x 轴和 y 轴的标签,并设置字体大小  
xlabel('迭代次数','FontSize',12); 
ylabel('rmse误差','FontSize',12);
title('SSA优化神经元与学习率','FontSize',12)
% 显示网格(可选)  
grid on; 
%%  第二步优化权重、偏置初始值
disp('-------------------------------')%分割线
disp('第二步PSO优化权重、偏置初始值')

N2=10; %种群数
Max_iteration2 = 30; %迭代次数
%神经元个数范围,floor(sqrt(inp+put))~10+ceil(sqrt(inp+put)),可以自行改变
%学习率范围0-0.1,可以自行改变
lb2=-1;%下限值
ub2=1;%上限值
dim2=inp * besthiddens + besthiddens + besthiddens * put + put; %变量个数
[gBestScore2,gBest2,cg_curve2]=PSO(N2,Max_iteration2,lb2,ub2,dim2,fitness2,label);
%迭代曲线2
figure
plot(cg_curve2,'-*','LineWidth',1,Color=[233,122,94]./255)
% 添加图例,并设置字体大小  
legend('PSO','FontSize',10); 
% 设置 x 轴和 y 轴的标签,并设置字体大小  
xlabel('迭代次数','FontSize',12); 
ylabel('rmse误差','FontSize',12);
title('PSO优化权重与偏置初始值','FontSize',12)
% 显示网格(可选)  
grid on; 

数据集

数据集(训练和测试数据)
在这里插入图片描述
数据集(新数据输入)
在这里插入图片描述

代码获取私信回复198种组合算法+双重优化BP神经网络+SHAP分析+新数据预测!机器学习可解释分析,粉丝必备!


网站公告

今日签到

点亮在社区的每一天
去签到