Evalml: Тест SHAP не выполняется с помощью оценщика Elastic Net Classifier

Созданный на 17 мая 2021  ·  4Комментарии  ·  Источник: alteryx/evalml

В этом PR мы изменяем параметры инициализации для ENC, чтобы пройти тесты shap (test_shap) в файле test_algoritthms.py . Если оставить параметры инициализации как alpha = 0.0001 и l1_ratio=0.15 ZeroDivisionError при вычислении shap возникнет этим .

Заполните эту проблему, чтобы определить причину сбоя теста и найти хороший способ избежать этой ошибки.

Все 4 Комментарий

Я думаю, что это проблема. Я отправил https://github.com/slundberg/shap/issues/2000 для обсуждения. В краткосрочной перспективе, я думаю, мы можем сделать следующее:

  • Используйте link = "identity" в KernelExplainer для линейных моделей.
  • Используйте LinearExplainer со ссылкой logit, explainer = shap.LinearExplainer(classifier, X, link=shap.links.logit)

Еще один неудачный тест:

В основном, используя alpha=0.5, l1_ratio=0.5 , что у нас было до этого , если мы добавим этот тест в evalml/tests/model_understanding_tests/prediction_explaination_tests/test_explainers.py :

@pytest.mark.parametrize("estimator", ["Extra Trees Classifier", "Elastic Net Classifier"])
def test_elastic_net(estimator, fraud_100):
    pytest.importorskip('imblearn', reason='Skipping test because imblearn not installed')
    X, y = fraud_100
    pipeline = BinaryClassificationPipeline(component_graph=["Imputer", "One Hot Encoder", "DateTime Featurization Component", estimator])
    pipeline.fit(X=X, y=y)
    pipeline.predict(X)
    importance = explain_predictions(pipeline, X, y, indices_to_explain=[0], top_k_features=4)
    assert report['feature_names'].isnull().sum() == 0
    assert report['feature_values'].isnull().sum() == 0

Тест не пройден:
image

Если мы изменим альфа и l1_ratio, он все равно не сработает.

Хорошо @ bchen1116 ,

Завершение с этим PR

Была ли эта страница полезной?
0 / 5 - 0 рейтинги