Spiegatore kernel SHAP

Explainable AI in Python

Fouad Trad

Machine Learning Engineer

Spiegatore kernel SHAP

 

  • Calcola valori SHAP per qualsiasi modello

    • K-nearest neighbors
    • Reti neurali
    • Modelli ad alberi
  • Più lento degli spiegatori specifici per tipo

Immagine che mostra che gli spiegatori SHAP sono divisi tra spiegatori generali applicabili a qualsiasi modello e spiegatori specifici ottimizzati per tipi di modello specifici.

Explainable AI in Python

Cardiopatie

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: percettrone multistrato che predice il rischio di cardiopatia

Explainable AI in Python

Costi assicurativi

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: percettrone multistrato che predice i costi assicurativi

Explainable AI in Python

Creare spiegatori kernel

MLPRegressor
import shap


explainer = shap.KernelExplainer( # Funzione di predizione del modello, # Sintesi rappresentativa del dataset )
MLPClassifier
import shap


explainer = shap.KernelExplainer( # Funzione di predizione del modello, # Sintesi rappresentativa del dataset )
Explainable AI in Python

Creare spiegatori kernel

MLPRegressor
import shap

explainer = shap.KernelExplainer(
  mlp_reg.predict, 
  # Sintesi rappresentativa del dataset
)


MLPClassifier
import shap

explainer = shap.KernelExplainer(
  mlp_clf.predict_proba, 
  # Sintesi rappresentativa del dataset
)


Explainable AI in Python

Creare spiegatori 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)
Explainable AI in Python

Importanza delle feature

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

plt.bar(X.columns, mean_reg)

Immagine con un grafico a barre delle importanze delle feature nel compito di regressione, che evidenzia fumo ed età come fattori più influenti nel predire i costi.

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

plt.bar(X.columns, mean_cls)

Immagine con un grafico a barre delle importanze delle feature nel compito di classificazione, che evidenzia tipo di dolore toracico e talassemia come fattori più influenti nel predire i costi.

Explainable AI in Python

Confronto con approcci specifici del modello

Regressione lineare
plt.bar(X.columns, np.abs(lin_reg.coef_))

Immagine con un grafico a barre delle importanze delle feature usando una regressione lineare, che evidenzia fumo ed età come fattori più influenti nel predire i costi.

Regressione logistica
plt.bar(X.columns, np.abs(log_reg.coef_[0]))

Immagine con un grafico a barre delle importanze delle feature nel compito di classificazione, che evidenzia il tipo di dolore toracico come fattore più influente nel predire i costi.

Explainable AI in Python

Passons à la pratique !

Explainable AI in Python

Preparing Video For Download...