Explicatorul kernel SHAP

AI Explicabil în Python

Fouad Trad

Machine Learning Engineer

Explicatorul kernel SHAP

 

  • Calculează valori SHAP pentru orice model

    • K-nearest neighbors
    • Rețele neuronale
    • Modele bazate pe arbori
  • Mai lent decât explicatoarele specifice tipului

Imagine care arată că explicatoarele SHAP sunt împărțite între explicatoare generale, aplicabile oricărui model, și explicatoare specifice tipului, optimizate pentru anumite tipuri de modele.

AI Explicabil în Python

Boli cardiace

age sex chest_pain_type blood_pressure ecg_results thalassemia target
52 1 0 125 1 3 0
53 1 0 140 0 3 0
70 1 0 145 1 3 0
61 1 0 148 1 3 0
62 0 0 138 1 2 0

 

mlp_clf: perceptron multistrat pentru predicția riscului de boală cardiacă

AI Explicabil în Python

Costuri de asigurare

age gender bmi children smoker charges
19 0 27.900 0 1 16884.92
18 1 33.770 1 0 1725.55
28 1 33.000 3 0 4449.46
33 1 22.705 0 0 21984.47
32 1 28.880 0 0 3866.85

 

mlp_reg: perceptron multistrat pentru predicția costurilor de asigurare

AI Explicabil în Python

Crearea explicatoarelor kernel

MLPRegressor
import shap


explainer = shap.KernelExplainer( # Funcția de predicție a modelului, # Rezumat reprezentativ al setului de date )
MLPClassifier
import shap


explainer = shap.KernelExplainer( # Funcția de predicție a modelului, # Rezumat reprezentativ al setului de date )
AI Explicabil în Python

Crearea explicatoarelor kernel

MLPRegressor
import shap

explainer = shap.KernelExplainer(
  mlp_reg.predict, 
  # Rezumat reprezentativ al setului de date
)


MLPClassifier
import shap

explainer = shap.KernelExplainer(
  mlp_clf.predict_proba, 
  # Rezumat reprezentativ al setului de date
)


AI Explicabil în Python

Crearea explicatoarelor kernel

MLPRegressor
import shap

explainer = shap.KernelExplainer(
  mlp_reg.predict, 
  shap.kmeans(X, 10)
)


shap_values_reg = explainer.shap_values(X)
MLPClassifier
import shap

explainer = shap.KernelExplainer(
  mlp_clf.predict_proba, 
  shap.kmeans(X, 10)
)


shap_values_cls = explainer.shap_values(X)
AI Explicabil în Python

Importanța caracteristicilor

MLPRegressor
mean_reg = np.abs(shap_values_reg).mean(axis=0)

plt.bar(X.columns, mean_reg)

Grafic de bare cu importanța caracteristicilor pentru regresia, evidențiind că fumatul și vârsta sunt cei mai influenți factori în predicția costurilor.

MLPClassifier
mean_cls = np.abs(shap_values_cls[:,:,1]).mean(axis=0)

plt.bar(X.columns, mean_cls)

Grafic de bare cu importanța caracteristicilor pentru clasificare, evidențiind că tipul durerii toracice și talasemia sunt cei mai influenți factori.

AI Explicabil în Python

Comparație cu abordări specifice modelului

Regresie liniară
plt.bar(X.columns, np.abs(lin_reg.coef_))

Grafic de bare cu importanța caracteristicilor pentru regresia liniară, evidențiind că fumatul și vârsta sunt cei mai influenți factori în predicția costurilor.

Regresie logistică
plt.bar(X.columns, np.abs(log_reg.coef_[0]))

Grafic de bare cu importanța caracteristicilor pentru clasificare, evidențiind că tipul durerii toracice este cel mai influent factor.

AI Explicabil în Python

Să exersăm!

AI Explicabil în Python

Preparing Video For Download...