Spiegabilità SHAP

Explainable AI in Python

Fouad Trad

Machine Learning Engineer

Introduzione a SHAP

  • SHAPSHapley Additive exPlanations
  • Tecnica model-agnostic
  • Usa valori di Shapley dalla teoria dei giochi
  • Valori SHAP → quantificano il contributo delle feature alle predizioni

Logo SHAP

Explainable AI in Python

Dividere i profitti tra i membri della band

Immagine di una band musicale.

Explainable AI in Python

Explainer SHAP

 

  • Calcolare i valori SHAP
  • Tree explainer → modelli ad albero

Immagine che mostra che gli explainer SHAP si dividono tra explainer generali applicabili a qualsiasi modello ed explainer specifici ottimizzati per tipi di modello.

Explainable AI in Python

Dataset di ammissioni

Punteggio GRE Punteggio TOEFL Valutazione università SOP LOR CGPA Prob. ammissione Accetta
337 118 4 4.5 4.5 9.65 0.92 1
324 107 4 4 4.5 8.87 0.76 1
316 104 3 3 3.5 8 0.72 1
322 110 3 3.5 2.5 8.67 0.8 1
314 103 2 2 3 8.21 0.45 0

 

  • rf_reg: predice la probabilità di ammissione
  • rf_class: predice l’accettazione
  • X: dataframe con le feature
Explainable AI in Python

Calcolare i valori SHAP

import shap
Regressione
explainer_reg = shap.TreeExplainer(rf_reg)

shap_values_reg = explainer_reg.shap_values(X)
Classificazione
explainer_class = shap.TreeExplainer(rf_class)

shap_values_class = explainer_class.shap_values(X)
Explainable AI in Python

Capire l’output SHAP

Regressione
print(shap_values_reg.shape)  
(400, 6)

Immagine che mostra i valori SHAP come una tabella con le stesse dimensioni del dataframe X (numero di campioni, numero di feature)

Explainable AI in Python

Capire l’output SHAP

Regressione
print(shap_values_reg.shape)  
(400, 6)

Immagine che mostra i valori SHAP come una tabella con le stesse dimensioni del dataframe X (numero di campioni, numero di feature)

Classificazione
print(shap_values_class.shape)
(400, 6, 2)

Seleziona i valori della classe positiva

positive_values = shap_values_class[:,:,1]
Explainable AI in Python

Importanza delle feature

mean_shap_values_class = np.abs(shap_values_class[:, :, 1]).mean(axis=0)
mean_shap_values_reg = np.abs(shap_values_reg).mean(axis=0)

plt.bar(X_train.columns, mean_shap_values_class) plt.bar(X_train.columns, mean_shap_values_reg)

Immagine che mostra le feature importance per regressione e classificazione, evidenziando che CGPA e GRE sono i fattori più influenti nell’ammissione.

Explainable AI in Python

Passiamo alla pratica!

Explainable AI in Python

Preparing Video For Download...