我可以使用设置为“-1”的单调约束来计算 CatBoost 模型拟合的 SHAP 值吗?

Can I calculate SHAP values on a CatBoost model fit using monotone constraints set to "-1"?

我拟合了一个 CatBoostClassifier 模型(在 Python 中),参数 monotone_constraints 设置为值等于“-1”的字典。

但是,当我尝试计算 SHAP 值时:

df_shap_vals = model.get_feature_importance(data=X_pooled,
                                            type='ShapValues',
                                            prettified=False,
                                            thread_count=-1,
                                            verbose=False)

我收到错误:

CatBoostError: c:/program files (x86)/go agent/pipelines/buildmaster/catboost.git/catboost/libs/fstr/shap_values.cpp:810: Cannot calc shap values, model contains non zero approx for zero-weight leaf

注意:我以前在没有设置 monotone_constraints 参数的情况下能够使用上面的代码计算 SHAP 值。

我在使用 旧版 catboost 时也遇到了同样的问题。

版本0.24.4中,底层问题已经修复,因此我的建议是尝试提到的版本。