Могу ли я рассчитать значения SHAP для подгонки модели CatBoost, используя монотонные ограничения, установленные на -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

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


person Aaron England    schedule 07.10.2020    source источник
comment
Вы используете встроенные возможности catboost, которые, похоже, не работают. Вы можете попробовать KernelExplainer, который должен работать для любой функции, или TreeExplainer из пакета shap и посмотреть, проходит ли ваш классификатор [через последний].   -  person Sergey Bushmanov    schedule 03.12.2020


Ответы (1)


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

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

person Chuci Chen    schedule 04.01.2021