美文网首页SHAP
SHAP解释模型

SHAP解释模型

作者: xieyan0811 | 来源:发表于2021-09-20 17:00 被阅读0次

简介

近年来,模型的可解释性越来越受到重视,SHAP是一个Python工具包,它可以解析任何模型的输出。本文除了介绍SHAP的基本用法之外,还示例了新版本提供的一些高级用法,进一步提升了预测的归因效果以及分组分析。

环境配置:

以下实验使用当前最新版本shap:0.39.0

$ pip install shap

注意xgboost也需要使用对应的较新版本,如:

$ pip install xgboost==0.82

为使用交互界面,notebook环境下,加载用于可视化的JS代码

import shap
shap.initjs()

实验

实验一

SHAP的可解释性,基于对每一个训练数据的解析。比如:解析第一个实例每个特征对最终预测结果的贡献。

shap.plots.force(shap_values[0])  
(图一)

图中,红色特征使预测值更大(类似正相关),蓝色使预测值变小,而颜色区域宽度越大,说明该特征的影响越大。(此处图中数字是特征的具体数值)
其中base_value是所有样本的平均预测值,output_value即f(x)是本实例的预测值。本例分析了回归问题,对于分类问题,可以看到base_value和output_value并不在0-1之间,这是由于对数转换造成的。

实验二

进而可以画出每个特征对结果影响程度的具体大小(此处图中数字是特征权重)

shap.plots.waterfall(shap_values[0])  
(图二)

实验三

以上都是对于单个实例的解释,更多的时候我们看到的是这种图:

shap.plots.beeswarm(shap_values)![]
(图三)

它对所有实例作图,相当于把图一上的每个特征旋转90度画成点图。这样可以看到特征对预测影响的大小,需要注意的是:这里的横坐标是shap-value,即影响的权重,而非特征的具体值,特征值大小对结果的影响通过颜色表示(红色为值大,蓝色为值小,紫色邻近均值)。因此,区域分布越宽说明它的影响力越大,这个图一般是上宽下窄(影响大的放在上面)。
图中最后一行显示了Sum of other features,如果不需要显示这一行,可使用函数做图 :

shap.summary_plot(shap_values, test, max_display=5)

实验四

以上只是罗列结果,并未进行统计处理,而对模型产生最大影响的前N的特征,一般是通过各个特征绝对值的均值(abs()->mean())得到的,使用绝对值解决了正负抵消的问题,更关注相关性的大小。
从这个图中就没办法看出是正相关还是负相关了,但使用shap工具可以得到具体的shap value,可以自行处理。

shap.plots.bar(shap_values)  
(图四)

实验五

此处可引申出SHAP更多的用法,尤其对于研究和归因,比如研究模型对“老年男性”或者“入院第五天”人群的特征重要性。做柱图的bar函数支持cohort参数,通过传入list(与实例个数相等),来划分人群(当前版本 0.39.0 支持cohort分群逻辑)。

import numpy as np  
idx = ['aa' for i in range(506)] # 定义群及对应标签  
idx[5]='bb'  
idx[8]='bb'  
shap.plots.bar(shap_values.cohorts(idx))  
(图五)

实验六

上述bar画出的是统计图,有时还是想在图中看出特征是正相关还是负相关,使用force函数可将多个实例的特征贡献度画在一张图上。

shap.plots.force(explainer.expected_value, shap_values.values[:10])  
(图六)

force()工具非常灵活,横纵坐标都可以选择,每个横坐标对应一个实例,可选择:按输出排序,按实例顺序排序,按近似实例排序;纵向可以选择查看哪些特征,默认是查看所有特征。通过转入不同的shap value数组,可以研究部分或全部实例。

参考

不再黑盒,机器学习解释利器:SHAP原理及实战
SHAP:Python的可解释机器学习库

相关文章

  • SHAP解释模型

    环境配置: 以下实验使用当前最新版本shap:0.39.0 注意xgboost也需要使用对应的较新版本,如: 为使...

  • SHAP解释模型(二)

    本文在SHAP解析模型[https://blog.csdn.net/xieyan0811/article/deta...

  • 模型可解释性(SHAP)

    SHAP含义:观察到某一个样本的预测中各个特征对预测结果产生的影响。 基本思想:计算一个特征加入到模型时的边际贡献...

  • 建模后可解释性机器学习

    可解释性机器学习_Feature Importance、Permutation Importance、SHAP_L...

  • numpy.expand_dims

    官方文档中[1],如下解释: numpy.expand_dims(a,axis) Expand the shap...

  • 机器学习解释利器:SHAP

    参考【1】https://zhuanlan.zhihu.com/p/106320452 【2】https:/...

  • point-2019-08-13

    1.long类型 jsonformat(shap=jsonfort.shap.STRING) //json的格式转...

  • 机器学习可解释性01--shap

    摘要 本文介绍shap原理,并给出一个简单的示例揭示shap值得计算过程;然后介绍如何将shap值转化为我们更容易...

  • 解释模型

    这么一梳理,整个中国历史的发展大势,就尽收眼底了。你可以从中品味一下,在庞大的史料库中建立一个简洁的“解释模型”的...

  • ISM解释结构模型——研究系统结构关系情况

    一、解释结构模型ISM介绍 ISM(解释结构模型,Interpretative Structural Modeli...

网友评论

    本文标题:SHAP解释模型

    本文链接:https://www.haomeiwen.com/subject/kffvgltx.html