正确解释summary_plot shap graph

数据挖掘 Python 数据科学模型 lightgbm
2021-09-24 16:14:06

虽然通过网上的各种资源来了解shap plots,但我最终还是有点困惑。在下面找到我对示例中给出的总体图的解释 -

在此处输入图像描述

  1. 特征的形状值 0 对应于使用除感兴趣特征之外的所有其他可能的特征组合的平均预测。例如,LSTAT 的 shap 值 0 对应于具有不同特征组合的模型的平均预测(不包括 LSTAT)
  2. 相对于 0 的 Shap 值 4 意味着预测为 1 的相对增加。我们如何用外行术语解释相对于 0 的 shap 值 4、2 等?
  3. 在解释整体图与单点图((在此处输入图像描述

) - 在单个数据点示例中,基值/预期值是整个数据集中的平均预测 -> 但在整个图中(在顶部引用)我们说它是没有该特征的平均预测。所以事情不加起来?谢谢您的帮助!:)

2个回答

我认为你的解释并不完全正确。粗略地改写Lundberg 等人。[arXiv:1802.03888],特征的SHAP值一世

[F(X)小号{一世}]-[F(X)小号]
对所有可能的特征子集进行平均 小号, 一世小号. 这里F(X) 是模型对输入的预测 X. 预印本中的图 2 就是一个很好的说明:

形状值

我们对特定特征的(有符号)箭头长度感兴趣,该长度是特征的所有排列的平均值。对于线性模型是的(X)=wX 特征的SHAP值 一世 会很简单 w一世X一世.

现在到您的项目:

  1. 某些特征的 SHAP 值为 0 意味着在当前示例中,该特征的值被模型忽略。在线性模型中,该特征的权重为 0。
  2. SHAP 值为 4 意味着当前示例中该特征的值将模型的输出增加了 4。让我使用您的摘要图作为说明。它是使用波士顿住房数据生成的,我们可以在数据集中检查特征“RM”(每栋房屋的平均房间数)的最大值约为 9。该图显示该特征的最亮红色阴影对应于SHAP 值在 3、4 和 8 左右。这意味着一所房子有 9 个房间往往会增加 3、4 或 8 千美元的价格。
  3. 摘要只是所有示例的 SHAP 值的群图。您在下面包含的功率图示例对应于以下点形状统计数据=4.98, 形状R M=6.575,以此类推。

经过深思熟虑,我得出以下几点:

  1. 你问的第一个问题的顶部情节,第二个问题是shap.summary_plot(shap_values, X)它概述了每个样本的模型最重要的特征,并使用 SHAP 值度量显示了每个特征对模型输出(房价)的影响。当此摘要图中排在最前面的特征是 LSTAT(人口的低状态百分比)形状统计数据=0仅仅意味着它对这些样本的模型输出没有贡献(对房价几乎没有影响)。

  2. 例如,该图揭示了高 LSTAT(例如形状统计数据=-7,等)降低了预测的房价。颜色代表特征值(红色高,蓝色低)。

请注意,即使 LSTAT 也包含所有功能。专门计算和绘制所有实例的 SHAP 值。

如果要绘制第一个\单个实例 x 的 SHAP 值,则需要:

shap.force_plot(explainer.expected_value[0], shap_values[0][0,:], X_test.iloc[0,:])

  1. shap.force_plot(explainer.expected_value, shap_values[0,:], X.iloc[0,:])根据此文档对第一个预测的解释进行可视化 显示:
  • 每个特征都有助于将模型输出从基值(已传递训练数据集上的平均模型输出)推到模型输出。
  • 将预测推高的特征以红色显示(例如形状统计数据=4.98, 形状比例=15.3),那些将预测推低的人是蓝色的(例如形状R M=6.575 , 形状辐射度=1等)当 模型输出=24.41美元的房价。

Lundberg 等人的论文的图 4 也强调了这一贡献量(幅度) 。[Nature BME]在名为“总体积”的特征上稍好,注释如下:

图像