【发布时间】:2021-06-23 07:04:23
【问题描述】:
问题背景
我想解释使用在shap Python 库中实现的 SHapley Additive exPlanations (SHAP) 的机器学习 (ML) 模型的结果。作为函数shap.Explainer()的参数,我需要传递一个ML模型(例如XGBRegressor())。但是,在留一法交叉验证 (LOOCV) 的每次迭代中,ML 模型都会有所不同,因为在每次迭代中,我都在不同的数据集上进行训练(1 个参与者的数据会不同)。此外,由于我在每次迭代中都进行特征选择,因此模型会有所不同。
那么,我的问题
在LOOCV中,如何使用shap库的shap.Explainer()函数来呈现机器学习模型的性能?可以注意到,我检查了 SO 的几个教程(例如this one、this one)和几个问题(例如this one)。但我没能找到问题的答案。
感谢阅读!
更新
我知道在LOOCV中,每次迭代找到的模型都可以用shap.Explainer()解释。但是,由于有 250 个参与者的数据,如果我在这里为每个模型申请 shap,将有 250 个输出!因此,我想获得一个输出来展示 250 个模型的性能。
【问题讨论】:
-
LOOCV 仍然是一个 CV,您可以在其中遗漏一个数据点,训练一个模型并检查模型对遗漏数据的泛化能力。在 LOOCV 中应用 SHAP 是没有问题的。我建议您检查您的定义或描述您遇到的确切问题。
-
嗨@SergeyBushmanov,感谢您的回复。我已经更新了我的问题。请检查。
标签: python cross-validation shap leave-one-out