# 在预测期间生成 SHAP 数据集

SHAP 重要性数据集可以在运行预测时生成。您可以使用这些数据集中的 SHAP 计算来了解哪些特性是预测值的最重要贡献者。

SHAP 数据集包含用于训练模型的特性的行级 SHAP 计算。这些值表示在给定该行的所有其他特性的情况下，每个特性对目标的预测值的贡献程度。

例如，SHAP 重要性可以告诉我们某个特征是否会让客户或多或少地流失，以及它对结果的影响有多大。

运行预测并生成数据集后，可以将 SHAP 值加载到 Qlik Sense 应用程序中，并将其与预测值一起可视化。有关更多详细信息，请参阅 [在 Qlik Sense 应用程序中可视化 SHAP 值](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/shap-values.htm)和[在实际应用中使用 SHAP 值。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/shap-applications.htm)

本帮助主题侧重于 ML 部署预测期间的 SHAP 数据集生成。有关实验训练期间显示的 SHAP 重要性图表的信息，请参阅[了解实验训练中的 SHAP 重要性](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/shap-importance.htm)。

信息注释使用时间序列模型执行预测时，无法生成 SHAP 数据集。

## 用于生成 SHAP 数据集的可用选项

配置预测时，可以选择以两种不同的格式生成 SHAP 数据集。两个选项都提供相同的信息，但其结构不同。

### SHAP

这是一个数据集，其中每个特性的 SHAP 值被分为一列。此选项不适用于多类别分类模型。

### 坐标 SHAP

这是一个数据集，其中所有 SHAP 值的结构仅包含在两列中：“feature”列和“value”列。此选项适用于所有模型类型。

与二进制模型的数据集相比，多类模型中的数据集的工作方式略有不同。对于每个要预测的记录，都会创建一个新行，其中包含可由模型预测的每个可能类的 SHAP 值。在数据集中，还会创建一个额外的列来标识 SHAP 值所表示的类。

当将预测和 SHAP 值加载到 Qlik Sense 应用程序中并创建数据模型时，坐标 SHAP 数据集可能比 SHAP 数据集更容易使用。

### 实例

下表包含 SHAP 和坐标 SHAP 数据集的样本，这些数据集是通过基于五个特性训练的回归模型生成的。示例包含应用数据集中两条记录的 SHAP 值（对应于两个帐户 ID）。

这些示例突出了数据结构之间的差异。

SHAP dataset sample

| AccountID | AdditionalFeatureSpend\_SHAP | Churned\_SHAP | CurrentPeriodUsage\_SHAP | HasRenewed\_SHAP | NumberOfPenalties\_SHAP |
| --- | --- | --- | --- | --- | --- |
| aa16889 | 1.76830971241 | -0.58154511451721 | -1.106874704361 | -0.36080026626587 | 3.6597540378571 |
| aa33396 | 0.80359643697739 | -0.64805734157562 | 0.076582334935665 | 0.38967734575272 | -0.31007811427116 |

Coordinate SHAP dataset sample

| AccountID | automl\_feature | SHAP\_value |
| --- | --- | --- |
| aa16889 | AdditionalFeatureSpend | 1.76830971241 |
| aa16889 | Churned | -0.58154511451721 |
| aa16889 | CurrentPeriodUsage | -1.106874704361 |
| aa16889 | HasRenewed | -0.36080026626587 |
| aa16889 | NumberOfPenalties | 3.6597540378571 |
| aa33396 | AdditionalFeatureSpend | 0.80359643697739 |
| aa33396 | Churned | -0.64805734157562 |
| aa33396 | CurrentPeriodUsage | 0.076582334935665 |
| aa33396 | HasRenewed | 0.38967734575272 |
| aa33396 | NumberOfPenalties | -0.31007811427116 |

## 解释 SHAP 预测值

与实验训练期间显示的 SHAP 重要性图中的值不同，SHAP 数据集包含具有方向性的行级 SHAP 计算。换句话说，它们不是绝对值，而是可以是正值或负值。在应用程序中可视化值时，可以根据您的用例选择将它们聚合为绝对值。

应该根据该记录的相应预测值来分析该记录的 SHAP 值。根据模型类型（二元分类、多类分类或回归），对 SHAP 值的方向性的解释应略有不同。

### 分类模型

对于二元分类模型，高的正 SHAP 值表示对两种可能结果中的一种的影响更大，而高的负值表示对另一种结果的影响较大。在应用程序中使用数据时，SHAP 值的方向性可能不允许进行所需的分析。要解决此问题，可以反转 SHAP 值的方向（例如，将整列乘以 -1）。有关 SHAP 方向检查的更多信息，请参阅[准备工作](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/shap-values.htm#Preparat)。

来自多类模型的 SHAP 数据集的结构不同。对于要预测的每个记录，它为每个可能的类包括一个单独的行，以及该类的相应 SHAP 值。该类在“Predicted\_class”列中指定。

在坐标 SHAP 数据集中，按如下方式解释来自多类模型预测的 SHAP 值：

* 较高的正 SHAP 值表示该特性对结果为指定的“Predicted\_class”具有较大的影响。

* 较高的负 SHAP 值表示该特性对结果不为指定的“Predicted\_class”具有较大的影响。

#### 示例

以下示例演示了二进制和多类分类模型输出之间数据集结构的差异。

假设我们从每个帐户 ID 包含一行的应用数据集开始。训练模型的每个特性都表示为一个单独的列。

单个帐户 ID 记录如下所示：

Single record from a dataset on which predictions will be generated

| AccountID | AdditionalFeatureSpend | BaseFee | CurrentPeriodUsage | HasRenewed | NumberOfPenalties |
| --- | --- | --- | --- | --- | --- |
| aa16889 | 18 | 33.52 | 210.1 | yes | 4 |

如果我们训练一个二元分类模型来预测 Churned 字段的结果，就会有两种可能的结果：“是”或“否”。基于上面的单个帐户 ID 记录，该记录的坐标 SHAP 数据集如下所示：

Sample from coordinate SHAP dataset for binary classification model prediction

| AccountID | automl\_feature | SHAP\_value |
| --- | --- | --- |
| aa16889 | AdditionalFeatureSpend | -0.049129267835076 |
| aa16889 | BaseFee | -1.5363064624041 |
| aa16889 | CurrentPeriodUsage | 0.10787960191299 |
| aa16889 | HasRenewed | 1.2441783315923 |
| aa16889 | NumberOfPenalties | 2.3803616183224 |

在上表中，显示了单个帐户 ID 的 SHAP 值，并按特性进行了细分。将为每个特性创建一个新行，并为每个特性指定一个 SHAP 值。必须根据两种可能的结果来评估这些 SHAP 值的方向和大小。理想情况下，SHAP 值越高，特性对积极解释结果的影响就越大（在这种情况下为“是”）。如果该表示相反，则可以反转 SHAP 值的方向（将其乘以 -1），以使分析更易于解释。

为了进行比较，假设我们训练一个多类分类模型来预测分类 PlanType 字段（有四种可能的结果 'Blue Plan'、'Green Plan'、'Purple Plan' 和 'Red Plan'）。基于第一个表格中的单个帐户 ID 记录，该记录的坐标 SHAP 数据集如下所示：

Sample from coordinate SHAP dataset for multiclass classification model prediction

| AccountID | automl\_feature | Predicted\_class | SHAP\_value |
| --- | --- | --- | --- |
| aa16889 | AdditionalFeatureSpend | Blue Plan | 0.004155414339679 |
| aa16889 | AdditionalFeatureSpend | Green Plan | 0.0066376343942741 |
| aa16889 | AdditionalFeatureSpend | Purple Plan | -0.014411468558894 |
| aa16889 | AdditionalFeatureSpend | Red Plan | 0.003618419824941 |
| aa16889 | BaseFee | Blue Plan | 0.089301017079318 |
| aa16889 | BaseFee | Green Plan | 0.28876498452748 |
| aa16889 | BaseFee | Purple Plan | 0.055689421438434 |
| aa16889 | BaseFee | Red Plan | -0.43375542304524 |
| aa16889 | CurrentPeriodUsage | Blue Plan | -0.0040098954629816 |
| aa16889 | CurrentPeriodUsage | Green Plan | -0.27902537442842 |
| aa16889 | CurrentPeriodUsage | Purple Plan | -0.21871561841248 |
| aa16889 | CurrentPeriodUsage | Red Plan | 0.50175088830388 |
| aa16889 | HasRenewed | Blue Plan | -0.011878031228962 |
| aa16889 | HasRenewed | Green Plan | 0.036835618725654 |
| aa16889 | HasRenewed | Purple Plan | 0.13798314881109 |
| aa16889 | HasRenewed | Red Plan | -0.16294073630778 |
| aa16889 | NumberOfPenalties | Blue Plan | 0.20519095034486 |
| aa16889 | NumberOfPenalties | Green Plan | 0.0015682625647107 |
| aa16889 | NumberOfPenalties | Purple Plan | -0.084355421853302 |
| aa16889 | NumberOfPenalties | Red Plan | -0.12240379105627 |

在上表中，单个帐户 ID 由 20 个单独的行表示：一行用于每个特性，一行用于对应于目标中每个可能结果的 SHAP 值。Predicted\_class 列表示要预测的可能结果（类），而不一定是预测数据集中显示的实际预测结果。最终，具有最高 SHAP 值的类成为记录的预测值。

此表中的 SHAP 值是指定特征 (automl\_feature) 对可能是指定类 (Predicted\_class) 的结果的影响的测量值。高的正值表示该特性强烈影响预测结果成为指定类别，而高的负值表示该特性有力影响预测结果不成为指定类别。

### 回归模型

在从回归模型生成的 SHAP 数据集中，SHAP 值的方向更易于解释。

* 正的 SHAP 值对应于该行的预测值的增大。

* 负的 SHAP 值对应于该行的预测值的减小。

## 计算 SHAP 值

为各种算法计算 SHAP 值。SHAP importance 使用两种不同的方法计算：

* 树形 SHAP：一种快速准确的方法，用来估计树模型的 SHAP 值：

* 线形 SHAP：一种计算线性模型 SHAP 值的方法

按模型类型和 SHAP 计算方法划分的可用算法

| 算法 | 支持的模型类型 | SHAP 计算方法 |
| --- | --- | --- |
| 随机森林分类 | 二分类、多类别分类 | 树形 SHAP |
| XGBoost 分类 | 二分类、多类别分类 | 树形 SHAP |
| LightGBM 分类 | 二分类、多类别分类 | 树形 SHAP |
| Catboost 分类 | 二分类、多类别分类 | 树形 SHAP |
| 逻辑回归 | 二分类、多类别分类 | 线性 SHAP |
| 套索回归 | 二分类、多类别分类 | 线性 SHAP |
| 弹性网回归 | 二分类、多类别分类 | 线性 SHAP |
| 高斯朴素贝叶斯 | 二分类、多类别分类 | 未计算 SHAP |
| Catboost 回归 | 回归 | 树形 SHAP |
| LightGBM 回归 | 回归 | 树形 SHAP |
| 线性回归 | 回归 | 线性 SHAP |
| 随机森林回归 | 回归 | 树形 SHAP |
| SGD 回归 | 回归 | 线性 SHAP |
| XGBoost 回归 | 回归 | 树形 SHAP |