机器学习与数据挖掘
SHAP 模型解释
用 Shapley 加性解释量化每个特征把模型预测推高或拉低了多少,并给出全局重要性与方向。
这篇能回答什么
SHAP(SHapley Additive exPlanations)回答的是「模型为什么这样预测」。它把一次预测分解为各特征的边际贡献,使得贡献之和等于预测值相对基准的差。全局上,用平均绝对 SHAP 衡量特征重要性;方向上,用特征取值与 SHAP 值的相关判断正向驱动还是负向驱动。StatsX 底层拟合随机森林,再用 TreeExplainer 计算 SHAP。
适合:打开房价、流失、信用等树模型的黑盒,找出「面积把总价推高了多少」这类可写进结果节的归因。本教学示例目标为总价(万元),特征为面积、楼层、建筑年份与总楼层。
如何选择方法
先分清你要的是可加性归因、不纯度重要性还是线性系数。SHAP 提供一致的局部+全局解释;随机森林重要性更快但没有「把预测推高多少」的单位;线性回归的系数在满足假定时可直接读边际效应。
SHAP 模型解释:≥2 个特征 + 1 个目标,输出 mean|SHAP|、驱动方向与蜂群图。
随机森林特征重要性:同样是树模型,只报告分裂不纯度下降,不做 Shapley 分解。
线性回归:系数有单位、有标准误,适合可加线性关系,而不是复杂交互。
K-Means:无目标变量时的分群,不解释预测。
输入、输出与限制
输入
特征可为定量或定类(定类需能被模型编码为数值)。目标为 1 个定量或定类变量:唯一值较多时按回归森林拟合,唯一值 ≤ 10 或字符串标签时按分类森林拟合。
特征变量:最少 2 个,最多 100 个。
目标变量:正好 1 个定量或定类变量。
输出
结果表列:特征变量、平均绝对 SHAP 值(全局贡献)、驱动方向、与预测目标相关性。驱动方向由特征取值与 SHAP 值的相关系数判定:大于 0.1 为正向,小于 -0.1 为负向,否则为非线性/微弱。同时输出蜂群图与文字洞察。
产品限制
有效样本至少 20 行;拟合最多使用 20000 行。
计算 SHAP 时最多抽取 500 行(随机种子 42);洞察会注明是否抽样。
底层为随机森林:50 棵树、最大深度 8,不是任意用户自带模型。
蜂群图还会再限制点数,完整 mean|SHAP| 以结果表为准。
这些上限来自 StatsX 实现,不要拿 Python shap 库对完整样本、或 SPSS 中不存在的过程来逐格核对。
案例
研究问题。 综合评价教学表希望解释「树模型在预测总价时主要依赖哪些住房特征、方向如何」,而不是只报告一个黑盒 R²。
教学示例目标为总价(万元),特征为面积(平米)、楼层、建筑年份、总楼层。全局 SHAP 基于 500 条抽样计算。面积(平米) 的 mean|SHAP| = 150.3252,方向为正向驱动,与目标相关 0.9476,远高于楼层(32.6425)与建筑年份(20.5409)。下载后按同样角色复现本页表格。
在 StatsX 中操作
步骤 1 · 上传表格
打开工作台,将 Excel / CSV / JSON 拖入上传区。本案例使用综合评价 xlsx,确认工作表为「Sheet1」。单文件不超过 20 MB。
步骤 2 · 查看画像与质量
确认总价为定量目标,面积等为定量特征,缺失可接受。不要把 ID 列当作特征。
步骤 3 · 选择「SHAP 模型解释」
在算法目录搜索「SHAP」并点选。适合/可用标记仅供参考。
步骤 4 · 指定特征与目标并运行
特征勾选面积(平米)、楼层、建筑年份、总楼层(至少 2 个);目标选总价(万元)。点击运行分析。
步骤 5 · 阅读结果
先看 mean|SHAP| 排序,再看驱动方向与蜂群图颜色。抽样计算时以表注与洞察中的 500 条为准。




如何阅读输出
下表由同一份教学示例在 StatsX 中运行 SHAP 得到。目标为总价(万元)。面积(平米) 的平均绝对贡献 150.3252,约为楼层(32.6425)的数倍,且与总价相关 0.9476,故为正向驱动。
| 特征变量 | 平均绝对 SHAP 值 (全局贡献) | 驱动方向 | 与预测目标相关性 |
|---|---|---|---|
| 面积(平米) | 150.3252 | 正向驱动 | 0.9476 |
| 楼层 | 32.6425 | 正向驱动 | 0.2899 |
| 建筑年份 | 20.5409 | 正向驱动 | 0.1031 |
| 总楼层 | 18.7801 | 正向驱动 | 0.2074 |
左右滑动可查看完整表格
SHAP 值衡量了特定特征在预测模型中对最终输出的平均边际贡献。正向驱动意味着特征值增大推高了预测值/发生概率。


【SHAP归因】目标=总价(万元),Shapley加性解释(基于 500 条抽样样本计算全局 SHAP)。
解读顺序建议:任务类型(本案例为回归)→ 是否对 500 条抽样计算 → mean|SHAP| 排序 → 方向是否与业务一致 → 蜂群图是否出现「高面积对应大正 SHAP」的条带。面积与总价几乎共线,模型把大部分预测差归因给面积是预期行为;楼层、总楼层的贡献小且相关中等,不宜写成「楼层不重要」的因果结论。
理论与公式
把特征集合记为 N,模型为 f。特征 i 的 Shapley 值是它在所有特征子集 S 上加入时引起的预测变化的加权平均:
加性说明满足 f(x)=\phi_0+\sum_i \phi_i(x),其中 \phi_0 为基准(通常是训练预测均值)。全局重要性取抽样样本上的平均绝对值:
驱动方向用 corr(x_i, \phi_i) 的符号:正相关表示特征值越大,模型预测越高。树模型用 TreeExplainer 精确计算路径贡献,避免对特征子集做指数级枚举。分类任务对多类 SHAP 取关注类别(默认正类)再汇总。
注意事项
解释对象是随机森林,换模型(线性、神经网络)SHAP 排序可能改变。
相关高的特征会分摊或集中贡献,共线时不要把「面积 SHAP 最大」读成「其它变量无用」。
超过 500 行只对抽样计算全局 SHAP,与全样本均值可能有随机误差。
正向驱动阈值 ±0.1 是产品规则,弱相关会被标成非线性/微弱。
SHAP 单位与目标相同(本案例为万元),不能与标准化回归系数直接比大小。
不能替代随机化试验或工具变量:预测归因 ≠ 干预效应。
常见问题
参考文献
Lundberg, S. M., Lee, S.-I. A unified approach to interpreting model predictions[C]//Advances in Neural Information Processing Systems. 2017.
Shapley, L. S. A value for n-person games[M]//Contributions to the Theory of Games II. Princeton University Press, 1953.
周志华. 机器学习[M]. 北京: 清华大学出版社, 2016.