Evalml: SHAP-Test schlägt mit dem Elastic Net Classifier Estimator fehl

Erstellt am 17. Mai 2021  ·  4Kommentare  ·  Quelle: alteryx/evalml

In dieser PR ändern wir die Init-Parameter für ENC, um die Shap-Tests (test_shap) in der Datei test_algoritthms.py . Verlassen der init params als alpha = 0.0001 und l1_ratio=0.15 verursacht ein ZeroDivisionError während Schap Berechnung, die wahrscheinlich verbunden ist dies .

Melden Sie dieses Problem, um festzustellen, warum der Test fehlschlägt, und finden Sie eine gute Möglichkeit, diesen Fehler zu vermeiden.

bug

Alle 4 Kommentare

Ich denke, das ist ein Shaping-Problem. Ich habe https://github.com/slundberg/shap/issues/2000 zur Diskussion gestellt. Kurzfristig denke ich, können wir Folgendes tun:

  • Verwenden Sie link="identity" in KernelExplainer für lineare Modelle
  • Verwenden Sie LinearExplainer mit Logit-Link, explainer = shap.LinearExplainer(classifier, X, link=shap.links.logit)

Ein weiterer fehlgeschlagener Test:

Am wichtigsten, mit alpha=0.5, l1_ratio=0.5 , das ist das, was wir vor haben diese , wenn wir diesen Test in hinzufügen 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

Der Test schlägt fehl:
image

Wenn wir Alpha und l1_ratio ändern, schlägt es immer noch fehl.

Ok @bchen1116 , mach es.

Abschluss mit diesem PR

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen