使用Shap内核解释程序生成本地解释



我正在尝试使用shap内核解释器来解释我的模型。数据集是形状的(17668342(。explainer(xgbexplainer(已成功建模,当我使用它生成shap_value时,它会抛出Memory Error。

import shap
xgb_explainer = shap.KernelExplainer(trained_model.steps[-1][-1].predict,X_for_shap.values)
shap_val = xgb_explainer.shap_values(X_for_shap.loc[0], nsamples=1)

首先,我使用nsamples作为默认值=2*X_for_shap.shap[2]+2048,它返回内存错误:无法分配形状为(2132,7420686(、数据类型为float64的数组

当我将其设置为nsamples=1时,它将无限期运行。请帮我弄清楚我在哪里做错了

这是错误消息的屏幕截图

关于kernelexplainer,我不明白的一件事是,为什么我们需要用一些策略(均值、中值k均值等(来估算缺失的特征?为什么不忽略它们,拟合一个线性学习器,并将其和模型进行比较,而不观察该特征呢?P(y|{S}U feature_i(-P(y|{S}(?SHAP方法提供了什么样的附加值来拥有全部功能,但其中一些功能是未知的?

最新更新