如何解释特征重要性的沙普利力图?

数据挖掘 机器学习 深度学习 数据挖掘 预测建模 特征选择
2021-10-14 16:15:21

我正在尝试练习和学习 shapley 值方法来解释我对二进制分类问题的预测。但是我很难理解下面的情节。

在此处输入图像描述

1)它是否表明day_2_balance影响预测为1?还是蓝色值会导致预测 1

2)轴刻度呢?( -4.357 to 5.643)

3) 基值是什么意思?

4) 当我将鼠标悬停在粉色附近时,我会看到更多带有一些值的列名。它们表明了什么?

5)特征的大小是否代表了它们的重要性?意义PEEP_min=5比其他特征有更大的尺寸?

6)higher to lower and lower to higher表示什么?

有人可以帮我弄这个吗?

3个回答

我自己从来没有练习过这个包,但是我已经阅读了一些基于 SHAP 的分析,所以我可以说:

  1. 532的 Aday_2_balance有助于增加预测输出。在这个领域,这样的值day_2_balance会让预测值更高。
  2. 轴刻度表示预测输出值刻度。实际预测值以粗体显示(-2.98)。我不知道比例的最小值和最大值是否代表模型预测值的真实最小值和最大值。它们更有可能是由绘图的自动缩放引起的。
  3. 基值应该是估计量在整个输入空间上的平均值。
  4. 这些表示其他特征的值会影响对更高值的预测。特征按局部重要性排序,因此这些特征的影响力低于可见的特征。
  5. 是的,但仅限于本地。在其他一些地方,你可以有其他贡献
  6. higher/lower是标题。它指示每个特征值是否会影响对更高或更低输出值的预测。

从示例图中,您可以得出以下解释:“样本 n°4100 预测为 -2.92,远低于平均预测值 (~0.643),主要是由于特征PEEP_min(5) 的特定值,Fi02_100_max(50) 等,虽然day_2_balance是 532"。

取自 Github 上的这个问题,如果您使用的是基于树的分类器,如 XGBoost:

这是因为 XGBoost 树 SHAP 算法计算的 SHAP 值是关于边距而不是转换后的概率。因此,您看到的值是对数赔率值(如果设置了 pred_margin=True,XGBoost 会输出什么)。

这意味着,力图上的值没有显示概率,如果它们不在 0 和 1 之间,则完全有意义。

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

  • shap.force_plot(explainer.expected_value, shap_values[0,:], X.iloc[0,:])根据此文档对第一个预测的解释进行可视化 显示:

 1.将预测推高的特征以红色显示(例如SHAPday_2_balance=532),那些将预测推低的人是蓝色的(例如SHAPPEEP_min=5 , SHAPFi02_100_max=50等)当 Modelpredicted output=2.92 为您的二元分类模型。

 2. 除了@Sarah 的回答,基于本期讨论的SHAP 值的比例可以通过以下方式转换:inverse_transform()

x_scaler.inverse_transform(shap_values)

 3. 基于Github基础值

训练数据集上的平均模型输出已通过

  • ModelBase value=0.6427
  • 换句话说,它是平均预测,可以通过以下方式计算:
Y_test.mean()

 4. 由于他们对质量评级的贡献几乎为零,因此他们没有被展示。

 5. 是的。Lundberg 等人的论文图 4 中的“特征影响”下也强调了这一贡献量(幅度) 。[Nature BME]在名为“总体积”的特征上略胜一筹,注释如下:

图像

  • 在您的情况下,特征贡献将预测推向左侧(下端)以进行特定观察:

Feature impactPEEP_min>Feature impactFi02_100_max>Feature impactMV_dur_vae>etc.

 6. 特征对推高预测有积极影响(用红色表示),那些对推低预测有负面影响(用蓝色表示)。

  • 注意:可以使用以下方法计算变量的平均值:
X_train.mean()

虽然这个问题正在讨论中,但从我个人的看法来看,这取决于他们对当地价值观的积极或消极影响。对于某个观察,它将向左或向右推动预测。 SHAPpredicted>variablemean  或者  SHAPpredicted<variablemean