Metriche di spiegabilità

Explainable AI in Python

Fouad Trad

Machine Learning Engineer

Coerenza

  • Valuta la stabilità delle spiegazioni con addestramenti su sottoinsiemi diversi
  • Bassa coerenza → spiegazioni non robuste

Immagine di un dataset diviso in due sottoinsiemi: sottoinsieme 1 e sottoinsieme 2.

Explainable AI in Python

Coerenza

  • Valuta la stabilità delle spiegazioni con addestramenti su sottoinsiemi diversi
  • Bassa coerenza → spiegazioni non robuste

Un modello viene addestrato su ciascun sottoinsieme.

Explainable AI in Python

Coerenza

  • Valuta la stabilità delle spiegazioni con addestramenti su sottoinsiemi diversi
  • Bassa coerenza → spiegazioni non robuste

Ogni volta che il modello viene addestrato su un sottoinsieme, ricaviamo le importanze delle feature e ne calcoliamo la similarità coseno.

Explainable AI in Python

Similarità coseno per misurare la coerenza

 

 

 

Immagine con i valori chiave della Coerenza e i loro significati: 1 = spiegazioni molto coerenti.

Explainable AI in Python

Similarità coseno per misurare la coerenza

 

 

 

Immagine con i valori chiave della Coerenza e i loro significati: 1 = spiegazioni molto coerenti, 0 = nessuna coerenza,

Explainable AI in Python

Similarità coseno per misurare la coerenza

 

 

 

Immagine con i valori chiave della Coerenza e i loro significati: 1 = spiegazioni molto coerenti, 0 = nessuna coerenza, -1 = spiegazioni opposte.

Explainable AI in Python

Dataset ammissioni

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

 

  • X1, y1: prima parte del dataset
  • X2, y2: seconda parte del dataset
  • model1, model2: random forest regressors
Explainable AI in Python

Calcolo della coerenza

from sklearn.metrics.pairwise import cosine_similarity

explainer1 = shap.TreeExplainer(model1) explainer2 = shap.TreeExplainer(model2)
shap_values1 = explainer1.shap_values(X1) shap_values2 = explainer2.shap_values(X2)
feature_importance1 = np.mean(np.abs(shap_values1), axis=0) feature_importance2 = np.mean(np.abs(shap_values2), axis=0)
consistency = cosine_similarity([feature_importance1], [feature_importance2]) print("Consistency between SHAP values:", consistency)
Consistency between SHAP values: [[0.99706516]]
Explainable AI in Python

Fedeltà

  • Valuta se le feature importanti influenzano le predizioni del modello
  • Bassa fedeltà → fiducia mal riposta nel ragionamento del modello
  • Utile in applicazioni sensibili

Immagine di un modello che genera una predizione originale per un campione in input.

Explainable AI in Python

Fedeltà

  • Valuta se le feature importanti influenzano le predizioni del modello
  • Bassa fedeltà → fiducia mal riposta nel ragionamento del modello
  • Utile in applicazioni sensibili

SHAP o LIME spiegano localmente questa predizione originale.

Explainable AI in Python

Fedeltà

  • Valuta se le feature importanti influenzano le predizioni del modello
  • Bassa fedeltà → fiducia mal riposta nel ragionamento del modello
  • Utile in applicazioni sensibili

Un campione modificato viene dato in input al modello per generare una nuova predizione.

Explainable AI in Python

Fedeltà

  • Valuta se le feature importanti influenzano le predizioni del modello
  • Bassa fedeltà → fiducia mal riposta nel ragionamento del modello
  • Utile in applicazioni sensibili

Formula per calcolare la fedeltà come valore assoluto della differenza tra nuova e originale predizione.

Explainable AI in Python

Calcolo della fedeltà

X_instance = X_test.iloc[[0]]

original_prediction = model.predict_proba(X_instance)[0, 1] print(f"Original prediction: {original_prediction}")
Original prediction: 0.43

Immagine che mostra l'importanza delle feature di LIME per il campione selezionato.

Explainable AI in Python

Calcolo della fedeltà

X_instance['GRE Score'] = 310  


new_prediction = model.predict_proba(X_instance)[0, 1] print(f"Prediction after perturbing {important_feature}: {new_prediction}")
faithfulness_score = np.abs(original_prediction - new_prediction) print(f"Local Faithfulness Score: {faithfulness_score}")
Prediction after perturbing GRE Score: 0.77

Local Faithfulness Score: 0.34
Explainable AI in Python

¡Vamos a practicar!

Explainable AI in Python

Preparing Video For Download...