我正在用 Python 构建一个 XGBoost 模型,并尝试使用漂亮的shap 包来解释它。除了计算每个特征的 SHAP 值之外,我还想展示如下两个图表(分别是摘要图 A 和依赖图 B):
如果我有一个模型,只有一个训练/测试拆分,这很容易。然而,这是有风险的,因为我可能有选择偏差,所以我通常使用 500 个随机训练/测试拆分来评估我的模型的准确性(然后计算准确性和 Cohen 的 Kappa 的平均值)。
如果这样做,考虑到所有 500 个 XGBoost 模型的平均信息,我怎样才能得到上述图?我想到了三种策略,但似乎没有一个能解决问题:
1- 在所有样本上训练一个模型(没有拆分)并计算 SHAP 值。我会继续计算 500 个具有训练/测试拆分的模型的准确度和 Kappa。
2- 选择最适合测试集的 500 模型,并在其上计算 SHAP 值。
3-我可以计算每个特征的 SHAP 值,每次重复 500 次,然后计算它们的平均值和标准差。然后我可以从中生成直方图。
N.1 似乎不是正确的方法。N.2 似乎也有偏见,事情可能会从一个模型变为另一个模型。N.3 是我迄今为止一直在做的,因为它似乎是最可靠的方法。但是,它的缺点是我无法生成我想要的图表(图 A 和 B)。
考虑到来自重复训练/测试拆分方法的信息,有什么想法可以生成有意义的图(A 和 B)吗?

