SHAP快速入门

1 SHAP概述

SHAP (SHapley Additive explanation)是一种解释任何机器学习模型输出的博弈论方法

SHAP库的特性:

  • 支持任意机器学习的可解释输出与可视化展示
  • 针对集成树和神经网络类模型进行特定优化与加速
  • 能解释每一个样本的每一个特征的重要性(区分正负)
  • 能揭示不同特征间的相互作用,以及不同模型间的深入对比

SHAP解释模型的基本原理:

  • 假设存在$M$个特征,则随机抽取特征构成的特征子集会有$2^M$种
  • 针对某个特征$F$,将特征子集按是否包含特征$F$分为A、B两组,每组长度均为$2^{M-1}$
  • 已知不含特征$F$的组为B,假设B组存在特征子集Q,则A组会有对应的特征子集$Q+{F}$,这就构成了关于“是否包含特征$F$”的一对特征子集,最终会有$2^{M-1}$对特征子集
  • 将每对特征子集分别带入模型,得到输出$y_{with\ F}$和$y_{without\ F}$,因此每对特征子集都能计算并得到的一次特征$F$的边际贡献:($y_{with\ F}-y_{without\ F}$)
  • 重复以上过程$2^{M-1}$次,汇总每次得到的特征$F$边际贡献,最终特征$F$对应的Shaplet是这些边际贡献的加权求和(假设对应特征子集长度为$N$,权重为$N\times {M \choose N}$)

更多SHAP的相关原理细节可参考 可解释机器学习-SHAP #待补充

项目地址

官方文档

2 入门案例

官方提供了三个入门案例,其中揉合了SHAP库的多种用法,很适合快速入门

2.1 案例1:基于Shapley值解释多种模型

  • 首先构建基于线性回归的房价预测模型,回归系数本身具备较好的解释性,但不能直接体现每个特征的重要程度。而SHAP库通过了解特征改变对模型输出的影响,对线性回归模型的可解释性进行了增强
  • 通过绘制线性模型的部分依赖图(Partial Dependence Plot),发现其与SHAP值的散点图存在较高的相似性,这是因为线性回归模式是加性模型(输出结果是每个特征的边际贡献的累加),与SHAP的核心思想是一致的
  • 广义加法模型(GAM)在线性模型的基础上,拓展了非线性的拟合能力同时维持了加法性质,当然SHAP库也可以对GAM进行可解释性的增强
  • 除此之外,本案例还针对非加性的增强树(xgboost)、逻辑回归、基于Transformer的复杂模型都进行了简单的解释性可视化展示

2.2 案例2:分析模型可解释性的注意事项

  • 理解相关性和因果性的根本区别,SHAP算法只能分析解释模型内部的相关性
  • 在探究客户保留率问题时,案例发现反馈问题更多的客户留存率更高;而优惠力度更大的客户留存率更低。这似乎是违背常识的,需要思考背后的因果关系
  • 经过因果关系探索后容易发现,重视产品的用户体验产品时候更长,也会遇到并反馈更多的问题;销售人员倾向于给不容易留存的客户施加更多的优惠力度。
  • 避免相关性影响独立性的几个技巧:尽量保证特征的独立性(借助柱状图中的聚类方法检查特征的冗余度),挖掘可得的潜在特征补充信息(问题反馈量&体验时长,优惠力度&产品需求度),融合领域知识

2.3 案例3:注重模型解释结果的公平性

  • 对模型进行可解释性分析时,需重视人类伦理原则与价值判断
  • 常见的几种公平原则包括:人口平等、赔率均等、机会均等、服务质量均等
  • 一个关于性别公平的简单案例:假设男女违约率没有差异,但女性平均收入低于男性;那么模型就会容易得出女性违约率高的错误判断
  • 模型结果的偏见是客观存在的,问题的关键在于理解这些偏见。比如深入分析偏见背后的特征差异;主动引入公平类指标,与其他特征进行相互作用的探索

3 常用绘图

3.1 柱状图

官方API说明:绘制柱状图

图像说明:

  • 灵活多变,既可以用于单样本分析,整体分析,特征对比分析
  • 控制SHAP值取绝对值,可以作为特征重要性的度量方式
  • 可以通过聚类的方式,评估特征的冗余问题(见下图右侧)

3.2 蜂群图

官方API说明:绘制蜂群图

图像说明:

  • 蜂群图包含的信息丰富,常用于对多样本进行整体解释性分析
  • 蜂群图日常使用频次高,可直接调用summary_plot函数进行图像绘制
  • 特征默认按照SHAP绝对均值从高到低排序,可通过参数order调整为其他排序方式

3.3 决策图

官方API说明:绘制决策图

图像说明:

  • 决策图种类较多,功能丰富,下图只展现出了最常见的一种决策图
  • 通过设定参数link='logit'可以针对分类问题进行决策图绘制
  • 决策图既可以针对整体样本,也可以针对单样本分析(效果接近force_plot
  • 决策图还可以针对多输出模型进行可解释性分析multioutput_decision_plot
  • 决策图常用于探究特征间的交互作用、识别异常样本、模型对比

3.4 热力图

官方API说明:绘制热力图

图像说明:

  • 多用于整体解释性分析,表述内容与蜂群图差不多

3.5 散点图

官方API说明:绘制散点图

图像说明:

  • 适用于整体分析,常用作特征间相互作用的探索

3.6 瀑布图

官方API说明:绘制瀑布图

绘制过程:

  • 从无到有地依次添加特征(按照重要程度倒序),直到实现模型的完整预测

图像说明:

  • 一般用于单样本的预测输出解释

3.7 神经网络可视化

官方API说明:图像类问题的可视化文本类问题的可视化

4 进阶技巧

围绕格式化数据、文本类数据、图像类数据分别建模并进行可解释性的探索

官方文档:格式化数据的使用示例

官方文档:文本类数据的使用示例

官方文档:图像类数据的使用示例

往年同期文章