该代码实现了一个基于随机森林回归模型的SHAPSHapley Additive exPlanations解释性分析流程能够对模型预测结果进行特征归因并通过多种可视化方式展示特征贡献。研究背景随着机器学习模型在金融、医疗、工业等领域的广泛应用模型的可解释性成为关键需求。随机森林等集成模型虽然预测精度高但内部机制复杂难以直接理解特征对预测结果的影响。SHAP方法基于合作博弈论中的Shapley值能够公平地将模型预测值分解为各特征的贡献满足对称性、有效性、线性性和零贡献性等理想性质成为当前主流的模型解释工具。本代码将SHAP分析集成到随机森林回归流程中为回归任务提供可视化的特征贡献解释。主要功能数据预处理读取Excel数据进行归一化并按比例划分训练集和测试集。随机森林建模训练TreeBagger回归模型并输出特征重要性OOBPermutedPredictorDeltaError。模型评估计算训练集和测试集的R²、MAE、RMSE绘制预测对比图、百分比误差曲线和拟合图。SHAP值计算基于测试集通过穷举特征子集组合计算每个样本每个特征的Shapley值。SHAP可视化绘制SHAP摘要蜂群图展示特征贡献方向与大小和特征重要性条形图基于平均绝对SHAP值。新数据预测对新的输入数据进行归一化、预测和反归一化输出预测结果。算法步骤数据加载与归一化读取“回归数据.xlsx”将特征和标签分别归一化至[0,1]区间。训练/测试集划分根据用户选择是否打乱样本按80%比例划分训练集和测试集。随机森林训练使用TreeBagger函数构建包含100棵决策树的回归森林设置最小叶子数为3并开启特征重要性计算。模型预测与评估对训练集和测试集进行预测反归一化后计算R²、MAE、RMSE并绘制相关图表。SHAP计算对测试集每个样本遍历每个特征j。对于特征j枚举所有可能的特征子集不含j构造包含/不包含j的两种输入向量不包含的特征用全局均值替代。计算两种输入下的预测值之差并除以该子集大小对应的组合数nchoosek(numFeatures-1, sum(featureCombination)-1)作为该子集的边际贡献。累加所有子集的边际贡献得到特征j的Shapley值。循环所有特征和样本得到SHAP值矩阵。SHAP可视化根据SHAP值绘制蜂群图散点颜色表示特征原始值高低和条形图平均绝对SHAP值排序。新数据预测读取“新的多输入.xlsx”利用训练时的归一化参数进行预测并保存结果。技术路线开发平台MATLAB核心工具箱Statistics and Machine Learning ToolboxTreeBagger、可能需Deep Learning Toolboxplotregression函数源自神经网络工具箱以及Communications Toolboxdec2binvec函数若不支持可替换为dec2bin。数据处理mapminmax归一化Excel读写使用xlsread/xlswrite。模型解释自定义SHAP计算函数采用穷举组合方式虽复杂度较高特征数较少时适用但原理清晰。公式原理SHAP值基于Shapley值公式ϕj∑S⊆N∖{j}∣S∣! (M−∣S∣−1)!M!(f(S∪{j})−f(S)) \phi_j \sum_{S \subseteq N \setminus \{j\}} \frac{|S|!\,(M-|S|-1)!}{M!} \left( f(S \cup \{j\}) - f(S) \right)ϕjS⊆N∖{j}∑M!∣S∣!(M−∣S∣−1)!(f(S∪{j})−f(S))其中 (M) 为特征总数(S) 为不含特征j的特征子集(f(S)) 表示以子集(S)中特征的真实值、其余特征用参考值如全局均值替代时的模型预测。代码中使用了等权重简化未乘以系数 (\frac{|S|!(M-|S|-1)!}{M!})而是直接除以组合数 (\binom{M-1}{|S|})因此计算值并非严格Shapley值但仍能反映特征的相对贡献方向与大小。参数设定随机种子rng(2222)保证结果可复现。训练集比例ratio 0.8。随机森林参数trees 100决策树数量。leaf 3最小叶子样本数控制过拟合。Importance on计算OOB特征重要性。归一化范围[0,1]。SHAP计算穷举所有子集无近似特征数较少时适用。运行环境软件要求MATLAB R2016b及以上版本推荐R2020a以上以确保函数兼容。应用场景回归问题解释适用于需要理解特征如何影响预测结果的回归任务如房价预测、能源消耗预测、信用评分等。模型诊断通过SHAP值识别关键特征辅助特征工程或模型优化。业务决策支持向非技术人员展示预测依据增强模型可信度。新数据预测集成模型部署对新样本进行预测并保存结果。