在预测期间生成 SHAP 数据集
SHAP 重要性数据集可以在运行预测时生成。您可以使用这些数据集中的 SHAP 计算来了解哪些特性是预测值的最重要贡献者。
SHAP 数据集包含用于训练模型的特性的行级 SHAP 计算。这些值表示在给定该行的所有其他特性的情况下,每个特性对目标的预测值的贡献程度。
例如,SHAP 重要性可以告诉我们某个特征是否会让客户或多或少地流失,以及它对结果的影响有多大。
运行预测并生成数据集后,可以将 SHAP 值加载到 Qlik Sense 应用程序中,并将其与预测值一起可视化。有关更多详细信息,请参阅 在 Qlik Sense 应用程序中可视化 SHAP 值和在实际应用中使用 SHAP 值。
本帮助主题侧重于 ML 部署预测期间的 SHAP 数据集生成。有关实验训练期间显示的 SHAP 重要性图表的信息,请参阅了解实验训练中的 SHAP 重要性。
用于生成 SHAP 数据集的可用选项
配置预测时,可以选择以两种不同的格式生成 SHAP 数据集。两个选项都提供相同的信息,但其结构不同。
SHAP
这是一个数据集,其中每个特性的 SHAP 值被分为一列。此选项不适用于多类别分类模型。
坐标 SHAP
这是一个数据集,其中所有 SHAP 值的结构仅包含在两列中:“feature”列和“value”列。此选项适用于所有模型类型。
与二进制模型的数据集相比,多类模型中的数据集的工作方式略有不同。对于每个要预测的记录,都会创建一个新行,其中包含可由模型预测的每个可能类的 SHAP 值。在数据集中,还会创建一个额外的列来标识 SHAP 值所表示的类。
当将预测和 SHAP 值加载到 Qlik Sense 应用程序中并创建数据模型时,坐标 SHAP 数据集可能比 SHAP 数据集中更容易使用。
示例
下表包含 SHAP 和坐标 SHAP 数据集的样本,这些数据集是通过基于五个特性训练的回归模型生成的。示例包含应用数据集中两条记录的 SHAP 值(对应于两个帐户 ID)。
这些示例突出了数据结构之间的差异。
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 |
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 方向检查的更多信息,请参阅准备工作。
来自多类模型的 SHAP 数据集的结构不同。对于要预测的每个记录,它为每个可能的类包括一个单独的行,以及该类的相应 SHAP 值。该类在“Predicted_class”列中指定。
在坐标 SHAP 数据集中,按如下方式解释来自多类模型预测的 SHAP 值:
较高的正 SHAP 值表示该特性对结果为指定的“Predicted_class”具有较大的影响。
较高的负 SHAP 值表示该特性对结果不为指定的“Predicted_class”具有较大的影响。
示例
以下示例演示了二进制和多类分类模型输出之间数据集结构的差异。
假设我们从每个帐户 ID 包含一行的应用数据集开始。训练模型的每个特性都表示为一个单独的列。
单个帐户 ID 记录如下所示:
AccountID | AdditionalFeatureSpend | BaseFee | CurrentPeriodUsage | HasRenewed | NumberOfPenalties |
---|---|---|---|---|---|
aa16889 | 18 | 33.52 | 210.1 | yes | 4 |
如果我们训练一个二元分类模型来预测 Churned 字段的结果,就会有两种可能的结果:“是”或“否”。基于上面的单个帐户 ID 记录,该记录的坐标 SHAP 数据集如下所示:
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 数据集如下所示:
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 |
XGBoost 分类 | 二分类、多类别分类 | 树形 SHAP |
LightGBM 分类 | 二分类、多类别分类 | 树形 SHAP |
Catboost 分类 | 二分类、多类别分类 | 树形 SHAP |
逻辑回归 | 二分类、多类别分类 | 线性 SHAP |
套索回归 | 二分类、多类别分类 | 线性 SHAP |
弹性网回归 | 二分类、多类别分类 | 线性 SHAP |
高斯朴素贝叶斯 | 二分类、多类别分类 | 未计算 SHAP |
Catboost 回归 | 回归 | 树形 SHAP |
LightGBM 回归 | 回归 | 树形 SHAP |
线性回归 | 回归 | 线性 SHAP |
随机森林回归 | 回归 | 树形 SHAP |
SGD 回归 | 回归 | 线性 SHAP |
XGBoost 回归 | 回归 | 树形 SHAP |