Evalml: Tes SHAP gagal dengan penaksir Elastic Net Classifier

Dibuat pada 17 Mei 2021  ·  4Komentar  ·  Sumber: alteryx/evalml

Dalam PR ini , kami mengubah parameter init untuk ENC agar lulus tes bentuk (test_shap) dalam file test_algoritthms.py . Membiarkan params init sebagai alpha = 0.0001 dan l1_ratio=0.15 menyebabkan ZeroDivisionError saat menghitung shap, yang kemungkinan terkait dengan this .

Mengajukan masalah ini untuk menentukan mengapa pengujian gagal dan mencari cara yang baik untuk menghindari kesalahan ini.

bug

Semua 4 komentar

Saya pikir ini adalah masalah bentuk. Saya mengajukan https://github.com/slundberg/shap/issues/2000 untuk diskusi. Dalam jangka pendek, saya pikir kita bisa melakukan hal berikut:

  • Gunakan link="identity" di KernelExplainer untuk model linier
  • Gunakan LinearExplainer dengan tautan logit, explainer = shap.LinearExplainer(classifier, X, link=shap.links.logit)

Tes lebih lanjut yang gagal:

Di main, menggunakan alpha=0.5, l1_ratio=0.5 , yang kita miliki sebelum this , jika kita menambahkan tes ini ke 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

Tes gagal:
image

Jika kita mengubah alpha dan l1_ratio, masih gagal.

Oke @bchen1116 , lakukanlah.

Ditutup dengan PR ini

Apakah halaman ini membantu?
0 / 5 - 0 peringkat