对于给定的预测,SHAP值可以告诉我们模型中的每个因素对预测的贡献程度。我们还可以聚合SHAP值,以了解模型通常如何进行预测。最终,我们可以使用SHAP值来识别和可视化模型中的重要关系。通过这样做,我们了解了我们的模型是如何工作的。我们将在本文中详细解释如何做到这一点。

重点将是解释形状值,并根据它们分析5种类型的图。这就是瀑布、力量、决定、平均形状和蜂群图。我们将讨论如何应用它们,从中我们可以学到什么,以及它们的局限性。我们对预测连续目标变量的模型进行了深入研究。最后,我们将讨论预测二进制目标变量的模型的解释是如何相似的。我们将检查关键的代码片段,您可以在GitHub上找到完整的项目.

数据集

为了演示SHAP包,我们将使用一个包含4177个观测值的鲍鱼数据集。鲍鱼是贝类的美味佳肴,我们想利用数据集来预测它们的年龄。更具体地说,我们的目标变量是鲍鱼壳中的数量。我们将使用鲍鱼的外壳长度、外壳直径总重量等特征。您可以找到有关数据集和其他功能的更多信息.

在下面的图表中,我们可视化了一些特征和目标变量之间的关系剥皮重量是鲍鱼肉的重量(即从壳中取出后)。我们可以看到,随着脱壳重量的增加,环的数量趋于增加。这是有道理的,因为我们预计老鲍鱼会更大,有更多的肉。

图1:吮吸重量和性别特征的数据探索可视化的另一个特征是鲍鱼的性别。这是一个分类变量,鲍鱼可以标记为婴儿(I)雄性(M)或雌性(F)。你可以看到,一般来说,婴儿的戒指数量较少。另一方面,当我们比较男性和女性时,没有太大的差异。我们将能够使用SHAP值进一步分析这些关系。

包装

在下面的代码中,您可以看到我们将使用的包。我们有一些用于管理和可视化数据的标准库(第2-5行)。我们导入XGBoost,用于对目标变量建模(第7行),并导入一些包来评估我们的模型(第8行)。最后,我们导入SHAP包(第10行)。下面,我们初始化这个包,它允许您在笔记本中显示绘图。确保已安装所有这些。

造型

形状值用于解释模型的预测。因此,在计算它们之前,我们需要训练一个模型。我们首先在下面的代码中导入数据集。如前所述,性别是一个分类特征,因此,在我们可以在模型中使用它之前,我们需要将其转换为3个虚拟变量。包括这些虚拟变量,我们总共有10个特性。 在下面的代码中,我们训练了一个用于预测鲍鱼壳中数量的模型。由于我们的目标变量是连续的,我们使用XGBoost回归。我们可以使用图2中的散点图来帮助评估该模型。具体来说,我们可以看到模型预测的环数与实际环数的比较。该模型并不完美,但应该足够好,可以演示SHAP包。 图2:实际与预测环的散点图显示我们解释的形状值取决于我们的目标变量类型。现在,我们已经建模了一个连续的目标变量。因此,在下一节中,我们将了解如何解释连续目标的形状值。在本文的最后,我们将讨论如何解释二进制目标变量的这些值。

形状图

现在我们有了模型,可以计算形状值了。为此,我们将模型传递到SHAP Explainer函数中,以创建一个Explainer对象(第2行)。然后,我们使用它来计算特征矩阵(第3行)中每个观测值的形状值。对于每次观察,我们将有10个形状值。这是我们模型中每个特征的一个形状值。

情节一:瀑布

为了更好地理解这一点,让我们深入了解第一个形状图。下面是为数据集中的第一只鲍鱼创建瀑布图的代码。您可以在图3中看到输出。此图有助于我们可视化每个特征的形状值。这些数据告诉我们,每种特征在多大程度上增加或减少了这种特定鲍鱼的环数。 图3:首次观测的瀑布图从x轴上看,我们可以看到基准值为E[f(x)]-9.933。这是所有4177只鲍鱼的平均预测环数。结束值为f(x)-12.668。这是这条鲍鱼的预测环数。形状值是介于两者之间的所有值。例如,与平均预测环相比,剥皮重量使预测环数增加了1.81。 在我们的数据集中,每个观测/鲍鱼都会有一个独特的瀑布图。它们都可以用与上述相同的方式进行解释。在每种情况下,SHAP值告诉我们,与平均预测相比,每个因素对模型预测的贡献有多大。较大的正/负形状值表明该特征对模型的预测有显著影响。

图2:力图

另一种可视化形状值的方法是使用力图。这些给我们提供了与瀑布图几乎相同的信息。在图4中,您可以看到我们从相同的基值9.933开始。您还可以看到每个特征如何增加/减少预测值,从而得出12.67的最终预测值。

图4:第一次观测的力图图3:决策图

瀑布图和力图非常适合解释个人预测。为了理解我们的模型通常是如何进行预测的,我们需要聚合SHAP值。一种方法是使用决策图。下面是用于输出前10只鲍鱼的决策图的代码。 在图5中,我们可以看到图中有10条线——每只鲍鱼一条。它们都以相同的基值9.933开始,并以最终预测的环数结束。从y轴上的每个特征向上移动时,x轴上的移动由该特征的形状值给出。最终,这将为您提供类似于瀑布图的信息,但我们现在可以通过多次观察看到它。

图5:前10次观测的决策图只有10次观测,我们已经可以看到一些趋势。例如,一些线在图表顶部似乎呈之字形。对于这些观察,脱壳重量增加了预测值(即正形状),壳体重量和总重量减少了预测值(即负形状)。换句话说,这些特征对预测有相反的影响。当我们看plot 5-beeswarm时,我们会发现这是模型的一般情况。 此图表的一个问题是,我们无法使用它一次可视化所有形状值。随着观察次数的增加,它将变得过于杂乱,很难理解模型的工作原理。我们仅限于解释少数观测值的形状值。

图4:平均形状

另一种聚合值的方法是使用平均形状图。对于每个特征,我们计算所有观测值的绝对形状值的平均值。我们采用绝对值,因为我们不希望正负值相互抵消。最后,我们得到了图6中的条形图。每个特征都有一个条形图,我们可以看到,在所有特征中,外壳重量的平均形状最大。 图6:具有较大平均形状值的绝对平均图形特征将倾向于具有较大的正/负形状值。换句话说,这些特征对模型的预测有重大影响。从这个意义上讲,此图可以与特征重要性图相同的方式使用。这是为了突出对模型预测很重要的特征。一个问题是,它没有告诉我们任何关于特性和目标变量之间关系的性质。

情节五:蜂群

我们最后的集合是蜂群图。如图7所示,这是所有形状值的曲线图。这些值按y轴上的特征分组。对于每组,点的颜色由相同特征的值决定(即特征值越高,点越红)。特征按平均形状值排序。换句话说,顺序与上面的图6相同。 图7:BeeSarm图该图解决了前面图中的一些问题。与决策图不同,我们可以绘制所有观察结果,并且仍然有清晰的结果