Могу ли я вычислить значения SHAP для подгонки модели CatBoost, используя монотонные ограничения, установленные на «-1»?

#python #catboost #shap

#python #catboost #shap

Вопрос:

Я подгоняю модель 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
  

Примечание: ранее я мог вычислять значения SHAP, используя приведенный выше код, когда я не задавал monotone_constraints аргумент.

Комментарии:

1. Вы используете встроенные возможности catboost , которые, похоже, не работают. Вы можете попробовать KernelExplainer , который должен работать для любой функции или TreeExplainer из shap пакета, и посмотреть, проходит ли ваш классификатор [через последний].

Ответ №1:

У меня также была такая же проблема при использовании старой версии catboost.

В версии 0.24.4 основная проблема была исправлена, поэтому я предлагаю попробовать указанную версию.