Расчет ожидаемого_значения в пояснениях SHAP классификатора XGBoost ⇐ Python
-
Гость
Расчет ожидаемого_значения в пояснениях SHAP классификатора XGBoost
Как понять SHAP explainer.expected_value? Почему это не то же самое с y_train.mean() после сигмовидного преобразования?
Ниже приведено краткое описание кода для быстрого ознакомления. Полный код доступен в этом блокноте: https://github.com/MenaWANG/ML_toy_exam ... tion.ipynb
model = xgb.XGBClassifier() model.fit(X_train, y_train) объяснитель = shap.Explainer(модель) shap_test = объяснитель (X_test) shap_df = pd.DataFrame(shap_test.values) #Для каждого случая, если мы сложим значения формы для всех функций плюс ожидаемое значение, мы можем получить запас для этого случая, который затем можно преобразовать, чтобы вернуть прогнозируемую вероятность для этого случая: np.isclose(model.predict(X_test, output_margin=True),explainer.expected_value + shap_df.sum(axis=1)) #Истинный Но почему приведенное ниже не соответствует действительности? Почему после сигмовидного преобразования explainer.expected_value не совпадает с y_train.mean() для классификаторов XGBoost?
expit(explainer.expected_value) == y_train.mean() #ЛОЖЬ
Как понять SHAP explainer.expected_value? Почему это не то же самое с y_train.mean() после сигмовидного преобразования?
Ниже приведено краткое описание кода для быстрого ознакомления. Полный код доступен в этом блокноте: https://github.com/MenaWANG/ML_toy_exam ... tion.ipynb
model = xgb.XGBClassifier() model.fit(X_train, y_train) объяснитель = shap.Explainer(модель) shap_test = объяснитель (X_test) shap_df = pd.DataFrame(shap_test.values) #Для каждого случая, если мы сложим значения формы для всех функций плюс ожидаемое значение, мы можем получить запас для этого случая, который затем можно преобразовать, чтобы вернуть прогнозируемую вероятность для этого случая: np.isclose(model.predict(X_test, output_margin=True),explainer.expected_value + shap_df.sum(axis=1)) #Истинный Но почему приведенное ниже не соответствует действительности? Почему после сигмовидного преобразования explainer.expected_value не совпадает с y_train.mean() для классификаторов XGBoost?
expit(explainer.expected_value) == y_train.mean() #ЛОЖЬ
Мобильная версия