用SHAP解释集成模型

2024-10-03 02:38:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

-我想问:

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

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

例如,如果我有3个XGBoots,对于feature_1,我从我的第一个测试实例的每个模型中得到了SHAP值4、5和6,那么说最终模型(平均集合)和相同的第一个实例的feature_1(平均4、5、6)的SHAP值为5是否正确

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

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


Tags: 实例方法模型参数数量random解决方案概率