SHAP 值分析在训练集和测试集上给出了不同的特征重要性

数据挖掘 特征 lightgbm 预测重要性 形状
2021-10-13 20:21:48

应该在训练集还是测试集上进行 SHAP 值分析?

如果基于均值 |SHAP 值| 的特征重要性是什么意思?我的 lightgbm 模型的训练集和测试集有什么不同?

我打算使用 SHAP 分析来确定每个特征如何对每个单独的预测做出贡献,并可能识别出异常的单独预测。例如,如果单个预测的最重要 (+/-) 贡献特征与模型的特征重要性大不相同,则该预测的可信度较低。这种方法有意义吗?

2个回答

由于 SHAP 为您提供了对单个样本的估计(他们是本地解释者),因此您的解释是本地的(对于某个实例)

您只是在比较两个不同的实例并得到不同的结果。这是正常的,可能发生在训练和测试集中。这也不意味着您的训练集和测试集的拆分不好,它们可能是好的拆分。

最后,完成 SHAP 是为了帮助您了解模型在特定实例中的行为方式。应该在您有兴趣了解的地方进行。我想您也可以尝试使用 shap 值找出 train 和 test 之间的区别,但它们是本地解释器,因此您可能找不到太多成功。

考虑到特征的重要性,我不会说任何关于预测质量的事情。

您必须确保问题不是来自您的数据或模型:

  • 确保您的数据不会发生显着变化(相同的类百分比),但也要确保特征的一般分布/相关性、特征和输出之间的相关性。

  • 确保您的模型不会过度拟合您的训练数据。

一旦您确定了这一点,使用 SHAP 查找异常值的想法很有趣,但可能根本不起作用,具体取决于您的变量/问题。