使用 SHAP 的集成模型可解释性

时间:2021-06-14 15:41:47

标签: python scikit-learn ensemble-learning shap

我创建了一定数量的 XGBoost 模型的集成模型。所有 XGBoost 模型都是相同的,它们具有相同的超参数,并且在相同的训练样本上进行训练,没有启用 random_seed

有关更多上下文,我使用 VotingClassifier 中的 sklearn,我需要此解决方案的原因是我希望每次我使用相同实例时最终模型的概率输出都是稳定的重新训练我的模型(测试样本)。由于 ML 算法的随机性,我从训练模型到训练模型(单调谐模型)的概率略有漂移,因此我认为 XGBoosts 的平均 n number 可以解决问题。结果很好,但可解释性变得更加复杂。

-我想问:

由于我使用了 XGBoosts 的 n number 并且它们的权重相等,因此每个实例的概率输出将只是所有单个模型概率的平均值。我可以将相同的假设级联到 SHAP 值吗?

我的意思是,我可以用 TreeExplainer 计算每个模型的 shapley 值集,然后通过对每个实例的所有模型求平均值来计算每个特征的最终 SHAP 值吗?

例如,如果我有 3 个 XGBoost 并且对于 feature_1,我从我的第一个测试实例的每个模型中获得 SHAP 值 4、5 和 6,那么说最终模型(平均集合)和对于相同的第一个实例,feature_1 的 shap 值为 5(平均值为 4,5,6)。

我知道另一种解决方法是 KernelExplainer,它更适合模型不可知方法,但我有大量样本,这是非常密集的计算解决方案。

我之前平均 SHAP 值的方法是否正确?在 SHAP 和可解释性方面还有其他建议吗?

0 个答案:

没有答案