


该代码实现了一个基于随机森林回归模型的SHAP(SHapley 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 Toolbox(TreeBagger)、可能需Deep Learning Toolbox(plotregression函数源自神经网络工具箱)以及Communications Toolbox(dec2binvec函数,若不支持可替换为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) ϕj=S⊆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值识别关键特征,辅助特征工程或模型优化。
- 业务决策支持:向非技术人员展示预测依据,增强模型可信度。
- 新数据预测:集成模型部署,对新样本进行预测并保存结果。