Evalml: La prueba SHAP falla con el estimador Elastic Net Classifier

Creado en 17 may. 2021  ·  4Comentarios  ·  Fuente: alteryx/evalml

En este PR , cambiamos los parámetros de inicialización de ENC para pasar las pruebas shap (test_shap) en el archivo test_algoritthms.py . Dejar los parámetros de inicialización como alpha = 0.0001 y l1_ratio=0.15 provocó un ZeroDivisionError al calcular la forma, que probablemente esté vinculada a esto .

Presentar este problema para determinar por qué falla la prueba y encontrar una buena manera de evitar este error.

bug

Todos 4 comentarios

Creo que este es un problema de shap. Presenté https://github.com/slundberg/shap/issues/2000 para su discusión. A corto plazo, creo que podemos hacer lo siguiente:

  • Use link = "identity" en KernelExplainer para modelos lineales
  • Utilice LinearExplainer con enlace logit, explainer = shap.LinearExplainer(classifier, X, link=shap.links.logit)

Una prueba más que falló:

En main, usando alpha=0.5, l1_ratio=0.5 , que es lo que tenemos antes de esto , si agregamos esta prueba en 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

La prueba falla:
image

Si cambiamos el alpha y l1_ratio, aún falla.

Ok @ bchen1116 , hazlo.

Cerrando con este PR

¿Fue útil esta página
0 / 5 - 0 calificaciones