slundberg/shap中GPUTree和TreeeExplainer之间的差异

2024-10-01 00:21:37 发布

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

我正在使用GPUTree,发现GPUTree和TreeExplainer之间不匹配:

树解释程序代码:

explainer = shap.TreeExplainer(model) 
shap_values_per_entity = explainer.shap_values(x_predict)

GPUTree解释代码:

explainer = shap.explainers.GPUTree(model) 
shap_values_per_entity = explainer.shap_values(x_predict)

型号=lgbm

  1. 当我使用GPUTree解释程序代码时,我得到了以下异常(当使用相同模型和预测的树解释程序时,我得到的形状值没有任何异常): TreeExplainer中的可加性检查失败!请确保传递给解释者的数据矩阵的形状与模型的训练形状相同。如果您的数据形状正确,请在GitHub上报告。考虑使用FrutuxMyPrime=“介入”选项重试。该检查失败,因为其中一个样本的形状值之和为-0.036761,而模型输出为-1.979285。如果此差异可以接受,则可以设置check_additivity=False以禁用此检查。 此外,由于预测与我用来训练模型的预测不同,所以这个例外情况尚不清楚

  2. 在前面的错误之后,我使用check\u additivity=False标志运行了shap\u values函数:

    每个实体的形状值=解释者。形状值(x预测,检查可加性=假) 我得到的结果与TreeExplainer的结果不同,例如:

树形结果:

0.000679,-0.000121,0.000143,0.000715,0.0

Gpu树形状结果:

0.00478,-0.000650,0.000106,0.000587,0.0


Tags: 数据模型modelcheckpredict程序代码entity形状