如何进行医药网站建设,扒站wordpress主题,做网站的图片一般放哪,白银建设工程网站【MATLAB第112期】基于MATLAB的SHAP可解释神经网络回归模型#xff08;敏感性分析方法#xff09;
引言
该文章实现了一个可解释的神经网络回归模型#xff0c;使用BP神经网络#xff08;BPNN#xff09;来预测特征输出。该模型利用七个变量参数作为输入特征进行训练。为…【MATLAB第112期】基于MATLAB的SHAP可解释神经网络回归模型敏感性分析方法
引言
该文章实现了一个可解释的神经网络回归模型使用BP神经网络BPNN来预测特征输出。该模型利用七个变量参数作为输入特征进行训练。为了提高可解释性应用了SHapley Additive exPlanationsSHAP去深入了解每个参数对模型预测的贡献。
一、案例数据
1、导入数据
res xlsread(数据集.xlsx); %103行样本7输入1输出
x res (:,1:end-1); %
y res(:,end); % 最后一列为输出2、数据标准化 该部分使用mapminmax函数对输入和输出数据进行标准化将数据缩放到[-1, 1]范围内。
% 输入数据归一化
[x_norm, x_settings] mapminmax(x,-1,1);
% 输出数据归一化
[y_norm, y_settings] mapminmax(y,-1,1);normalization_x x_settings;
save (normalization_x.mat, x_settings);
normalization_y y_settings;
save (normalization_y.mat, y_settings);x_norm_t x_norm;
y_norm_t y_norm;输入数据标准化输入特征被标准化标准化设置x_settings保存在名为normalization_x.mat的文件中以便后续使用或反转标准化. 输出数据标准化同样输出数据被标准化标准化设置y_settings保存在名为normalization_y.mat的文件中. 标准化后的数据被转置回原始方向以保持模型进一步处理的一致性. 此步骤确保输入和输出数据适当缩放以便于神经网络训练从而有助于提高模型性能和收敛速度.
二、交叉验证和模型评估
该部分执行5折交叉验证以评估基于优化超参数构建的模型性能.
1、交叉验证设置 脚本使用K折交叉验证numFolds 5将数据分成5个子集折。在每次迭代中一个子集用于测试其余子集用于训练模型.
2、模型训练和测试 对于每个折使用cvpartition生成的索引将训练和测试数据分开. 使用BP神经网络BPNN训练模型超参数设置 % 训练模型neuron 5;%% 创建网络net newff(trainData, trainLabels, neuron);%% 设置训练参数net.trainParam.epochs 1000; % 迭代次数 net.trainParam.goal 1e-6; % 误差阈值net.trainParam.lr 0.01; % 学习率3、解释交叉验证结果 RMSE交叉验证后可以计算所有折的平均RMSE。如果所有折的RMSE值一致且相对较低则表明模型对未见数据具有良好的泛化能力。如果RMSE值在各折之间变化较大可能表明模型对训练数据敏感这可能是过拟合的迹象. R²决定系数R²值也应在所有折之间进行平均以评估模型的拟合优度。较高的R²值表明模型能够解释目标变量的更大比例的方差。如果R²值较低则可能表明模型未能很好地捕捉输入特征与目标之间的关系. 最终模型选择完成交叉验证后可以通过所有折的平均RMSE和R²总结模型的整体性能。这有助于选择在偏差和方差之间具有最佳权衡的模型. 通过训练数据集评估模型的预测性能 选择最优数据集进行可视化折数3 三、SHAP分析
1、生成随机数据 在本部分生成一组合成输入数据用于SHAP分析。这种合成数据允许在受控和一致的方式下评估模型的特征贡献。步骤包括
样本数量脚本设置生成的合成样本数量为80numSamples 80. 特征范围 定义操作参数在特定范围内选择训练数据中各个输入变量的最大值和最小值
VarMin [137.0000 0 0 160.0000 4.7000 708.0000 640.6000]
VarMax 1.0e03 *[ 0.3660 0.1930 0.2600 0.2400 0.0190 1.0495 0.9020]随机数据生成 使用rand函数在定义的范围内为每个特征生成随机值创建80个样本.
for i1:size(x,2)
x_shap(:,i)VarMin(i) (VarMax(i) - VarMin(i)) * rand(numSamples, 1);
end此生成数据用于评估SHAP值并分析每个特征如何影响模型的预测。生成随机输入数据确保了SHAP分析中特征值的广泛范围便于更全面地评估特征重要性.
2、计算SHAP值 该代码计算神经网络模型的SHapley Additive exPlanationsSHAP值。SHAP值量化了每个特征对模型预测的贡献。该过程包括
预分配SHAP值矩阵初始化一个矩阵以存储所有输入样本和特征的SHAP值. 2.计算参考值将参考值计算为所有输入特征的平均值用于在排除或包含特征时进行比较. 3.计算SHAP值对于每个输入样本使用自定义的shapley_ann函数计算SHAP值该函数迭代所有可能的特征组合以确定每个特征对预测的贡献. 4.自定义的shapley函数接受一个训练好的神经网络net、当前输入样本和参考值来计算每个特征的SHAP值。该方法提供了对单个特征如何影响模型输出的洞察.
% ------------------------------------
function shapValues shapley(net, x_shap, refValue) % 假设您有一个名为net的训练好的网络% 使用Shapley公式计算SHAP值如果有7个特征则依次分析每个特征的累计贡献值当分析第1个特征时排除当前特征即 1 0 0 0 0 0 0迭代所有可能的特征组合 for i12^(D-1)xt1: 每个样本的特征变量输入值处理后 1*7xt2: 计算的每个样本平均值处理后 1*7xt3: 当分析不同特征时将该特征值替换为平均值。 1*7shapValuesshapValuesnetxt3-netxt2 end3、可视化 ------蜂群图为每个特征创建散点图蜂群图显示所有样本的SHAP值。特征值被标准化并颜色编码以提高可解释性. 包括轴标签、网格、框以提高清晰度以及带有操作参数标签的颜色条. 此SHAP摘要图有助于理解哪些特征对模型的预测影响最大以及特征在样本中的变化情况.显示每个特征对模型预测的贡献。
-----条形图 计算平均绝对SHAP值计算每个特征的绝对SHAP值的平均值以量化每个特征的整体重要性. 条形图可视化创建一个水平条形图特征按其平均绝对SHAP值排序。这提供了模型中特征重要性的清晰、排序表示. 结果的SHAP摘要条形图有助于识别哪些特征对模型的预测影响最大.
四、代码获取
1.阅读首页置顶文章 2.关注CSDN 3.根据自动回复消息私信回复“112期”以及相应指令即可获取对应下载方式。