Day37 深入理解SHAP图

SHAP值的解读

SHAP 在机器学习中的应用

开店=机器学习

合伙人 = 特征

总收入 = 预测值 - 基准值

每人贡献 = 每个特征的 SHAP 值

基准值(Base Value):模型在所有样本上的平均预测值

三人合伙前,收入是 0,三人合伙后,收入是 100万,要分配的"蛋糕"就是 100万-0=100 万

基准值 = 没有任何特征信息时的"默认"预测(相当于"0"的起点),这个值一般就是平均值,把训练集的所有样本都输入模型,得到所有预测值取平均值,在没有关于这个特定样本的区分性信息时,最合理的猜测就是平均值

预测值 = 加入所有特征后的预测(相当于"100 万"的终点)

要分配的"蛋糕"=预测值 -基准值

核心公式:

模型预测值 = 基准值+SHAP(特征 1)+SHAP(特征 2)+..+SHAP(特征 N)

SHAP 值加起来 =预测值与基准值的差!

那么如何实现 shaply 值动态变化呢?上面说的是平均这一家店是一个样本,对于多家店每个店都是样本,所以特征贡献不同那么对于一个样本,如果控制变量计算特征贡献呢?真实在做的时候肯定是没法实现控制其他特征不动,检测单个特征的贡献,其实还是多样本比对了,shap 值本质上也是一个近似值。

虽然不完美,但 SHAP 是目前理论最完善、应用最广泛的解释方法。

SHAP 值的计算用训练还是测试集?

先说结论,两者均可,但是为了图好看一般都是选择训练集。

  1. 做机器学习的专业大多都是交叉学科,本身你的研究多是针对私有数据集,不会关注你的泛化性。所以不必因为这个纠结。
  2. shap 值是每个样本的每个特征都会得到对应类别的值,所以如果你的数据量本身就不大,用训练集来绘制,点多会让图美观很多,或者也可以对测试集插值也可以起到一样的效果
  3. 补充一个 shap图美观的小技巧,可以绘制出每一个类别 shap 曲线的置信区间,因为机器学习多是点估计,而区间估计会让你的结果更加具有信服力,利用bootstrap 重采样思想可以绘制出置信区间,自己写一下 shap 图函数,不用借助 shap 库的接口。

@浙大疏锦行

相关推荐
HongXu_CaiYi4 分钟前
0103-python相关-函数、文件
python
vortex51 小时前
从Conda到UV:Python项目依赖管理的现代演进
python·conda·uv
何以解忧,唯有..1 小时前
Python time 模块详解:时间处理与日期操作指南
开发语言·python
梅雅达编程笔记2 小时前
Day 18 · 综合实战 B:AI 客服 Agent(专栏收官)
python·智能客服·ai agent·意图识别·ai客服·大模型应用·ai办公自动化
测试老哥2 小时前
Pytest自动化测试框架tep环境变量、fixtures、用例三者之间的关系
自动化测试·软件测试·python·测试工具·测试用例·pytest·职场发展
Buke..2 小时前
【APP 逆向】哔哩哔哩 sign 参数逆向(下):OLLVM 混淆还原 sign 算法
java·javascript·爬虫·python·算法
JacksonMx2 小时前
Java CompletableFuture 异步编程实战:从入门到架构师避坑指南
linux·数据库·python
W_326003 小时前
Python-OpenCV HSV颜色空间与inRange颜色分割:按颜色提取目标物体
图像处理·人工智能·python·opencv·机器学习
Buke..3 小时前
【APP 逆向】哔哩哔哩 sign 参数逆向(上):Frida 反调试绕过与 unidbg 调用
java·开发语言·爬虫·python·安卓
头发够用的程序员4 小时前
ImportError: libopenblas.so.0: cannot open shared object file 完整复盘与解决方案
python·ubuntu