Salta al contenuto
Note per Studenti Esercizio - XAI su cardiopatia e calcolo a mano di permutation importance, PDP e Shapley

Esercizio - XAI su cardiopatia e calcolo a mano di permutation importance, PDP e Shapley

Questa pagina non ha ancora la versione ripasso: qui sotto c'è il testo completo.

In questa pagina 5

Testo. Parte A: tre piccoli calcoli a mano. Parte B: lettura del laboratorio sulla cardiopatia (dataset Heart, target AHD).

A1. Sei campioni con etichette vere y=(1,0,1,1,0,0)y=(1,0,1,1,0,0). Un modello dà le predizioni originali (1,0,1,0,0,0)(1,0,1,0,0,0). Mescolando la feature x1x_1 le predizioni diventano (0,0,1,0,1,0)(0,0,1,0,1,0); mescolando x2x_2 diventano (1,0,1,0,0,1)(1,0,1,0,0,1). Si calcoli la permutation importance di x1x_1 e x2x_2.

A2. Modello f(x1,x2)=x2(x1+1)f(x_1,x_2)=x_2(x_1+1) e dati con x2∈{1,2,3}x_2\in\{1,2,3\}. Si calcolino le curve ICE e il PDP di x1x_1 per x1=0x_1=0 e x1=1x_1=1.

A3. f(x1,x2)=3x1+2x2+x1x2f(x_1,x_2)=3x_1+2x_2+x_1x_2, riferimento (0,0)(0,0), istanza x=(2,1)x=(2,1). Si calcolino i valori di Shapley.

B. Nel laboratorio: (i) perché una regressione logistica su feature non normalizzate non permette di confrontare i coefficienti; (ii) cosa mostra il percorso del LASSO al crescere di α\alpha; (iii) come si costruiscono ICE e PDP per una random forest; (iv) come leggere SHAP.

Teoria usata: Explainable AI (XAI)approfondimento: non nel programma di Telecomunicazioni. L'interpretabilità è l'arte di produrre descrizioni di un modello abbastanza semplici da essere capite da un umano; la spiegabilità aggiunge la completezza (permettere di anticipare la previsione). I metodi si classificano in intrinseci o post-hoc, agnostici o specifici del modello, globali o locali. Modelli intrinsecamente interpretabili: regressione lineare (pesi $\beta_j$, intervalli di confidenza, LASSO per la sparsità), regressione logistica ($\log\frac y{1-y}=\beta_0+\sum\beta_jx_j$), alberi. Importanza nelle foreste: MDI $=\sum_{\text{nodi}}\frac{n_p}{n_{TOT}}\Delta Gini$ (con feature selection bias). Metodi agnostici: permutation importance (aumento dell'errore dopo aver mescolato una feature), PDP $\hat f_S(x_S)=\frac1n\sum_if(x_S,x_C^{(i)})$ (media delle curve ICE), LIME (modello semplice locale pesato sui punti perturbati), SHAP (valori di Shapley: media dei contributi marginali su tutti gli ordini, somma $=f(x)-f(\text{base})$). Per le reti profonde: mappe di salienza, Grad-CAM, occlusione. Valutazione: livello applicativo, umano, funzionale. Lab: cardiopatia AHD con logistica, LASSO, random forest, ICE, PDP, SHAP.Explainable AI (XAI) →, Regressione logistica e softmaxLa regressione lineare non è adatta alla classificazione (valori fuori da [0,1], retta tirata dai punti lontani). La regressione logistica passa il predittore lineare dalla sigmoide $\sigma(z)=1/(1+e^{-z})$ e interpreta $\hat y=\sigma(x^T\beta)$ come $P(y=1\mid x)$: si predice la classe 1 se $\hat y\ge0{,}5$, cioè $x^T\beta\ge0$ (bordo lineare). L'errore quadratico dà una funzione non convessa; si usa la log-verosimiglianza negativa $-\sum[y\log\hat y+(1-y)\log(1-\hat y)]$, convessa, con gradiente $X^T(\hat y-y)$ e nessuna formula chiusa (discesa del gradiente). Per più classi: one-vs-one ($C(C-1)/2$ classificatori, voto), one-vs-all ($C$ classificatori, massima probabilità), o la softmax $p_c=e^{z_c}/\sum_ke^{z_k}$ con cross-entropia. Si può regolarizzare (ridge, LASSO, Elastic Net) e la cross-validation si fa stratificata. Approfondimento: non nel programma di Telecomunicazioni.Regressione logistica e softmax →, LASSO e discesa del gradienteIl LASSO è la regressione regolarizzata con penalità $L_1$: minimizza $\sum_i(y_i-x_i^T\beta)^2+\lambda\sum_{j\ge1}|\beta_j|$. A differenza della ridge, porta alcuni coefficienti esattamente a zero (soluzione sparsa, selezione delle feature): geometricamente le curve di livello dell'errore toccano il vincolo $\sum|\beta_j|\le s$ (un rombo) in uno spigolo. Non ha formula chiusa, quindi si minimizza con la discesa del gradiente $W\leftarrow W-\eta,\nabla J(W)$, usando il subgradiente $\operatorname{sign}(\beta_j)$ per il valore assoluto (nel punto 0 qualunque valore in $[-1,1]$). Il passo $\eta$ è critico: per l'errore quadratico converge se $\eta<1/\mu_{\max}(X^TX)$; si può usare $\eta_t=\eta_0/(1+\gamma t)$. L'Elastic Net combina le penalità $L_1$ e $L_2$ con $\lambda_1=\alpha\lambda$, $\lambda_2=(1-\alpha)\lambda$.LASSO e discesa del gradiente →, Calcolo combinatorio per la probabilitàNegli spazi uniformi bisogna contare: principio di moltiplicazione, disposizioni con ripetizione n^k, disposizioni semplici n!/(n−k)!, permutazioni n!, combinazioni (n su k); estrazioni con e senza reinserimento e distribuzione ipergeometrica.Calcolo combinatorio per la probabilità →.

A1. Permutation importance

Errore originale: le predizioni (1,0,1,0,0,0)(1,0,1,0,0,0) confrontate con (1,0,1,1,0,0)(1,0,1,1,0,0) differiscono solo in posizione 44: errore 1/6=16,7%1/6=16{,}7\%.

Mescolando x1x_1: predizioni (0,0,1,0,1,0)(0,0,1,0,1,0) contro (1,0,1,1,0,0)(1,0,1,1,0,0): errori in posizione 11 (00 contro 11), 44 (00 contro 11), 55 (11 contro 00): 3/6=50%3/6=50\%.

Mescolando x2x_2: (1,0,1,0,0,1)(1,0,1,0,0,1) contro (1,0,1,1,0,0)(1,0,1,1,0,0): errori in posizione 44 e 66: 2/6=33,3%2/6=33{,}3\%.

Importanza = aumento dell'errore: x1x_1: 50−16,7=33,350-16{,}7=33{,}3 punti; x2x_2: 33,3−16,7=16,733{,}3-16{,}7=16{,}7 punti. x1x_1 è la più importante: rompere il suo legame con il target peggiora di più il modello. (Con una sola permutazione il risultato è rumoroso: si ripete molte volte e si fa la media.)

A2. ICE e PDP

Le tre ICE sono le funzioni di x1x_1 con x2x_2 fissato al valore di ciascun campione: f=x2(x1+1)f=x_2(x_1+1).

x1=0x_1=0 x1=1x_1=1
ICE campione con x2=1x_2=1 1⋅1=11\cdot1=1 1⋅2=21\cdot2=2
ICE campione con x2=2x_2=2 2⋅1=22\cdot1=2 2⋅2=42\cdot2=4
ICE campione con x2=3x_2=3 3⋅1=33\cdot1=3 3⋅2=63\cdot2=6
PDP (media) (1+2+3)/3=2(1+2+3)/3=2 (2+4+6)/3=4(2+4+6)/3=4

Formula: PDP(x1)=1n∑if(x1,x2(i))=xˉ2 (x1+1)=2(x1+1)\text{PDP}(x_1)=\frac1n\sum_if(x_1,x_2^{(i)})=\bar x_2\,(x_1+1)=2(x_1+1), che dà 22 e 44 ✓. Le tre curve hanno pendenze 11, 22, 33 (l'effetto di x1x_1 cresce con x2x_2: interazione); il PDP ha pendenza 22 e nasconde l'eterogeneità. Per questo si guardano le ICE insieme al PDP.

A3. Valori di Shapley

Con v(S)v(S) la previsione con le feature di SS ai valori dell'istanza e le altre al riferimento: v(∅)=f(0,0)=0v(\emptyset)=f(0,0)=0; v({1})=f(2,0)=6v(\{1\})=f(2,0)=6; v({2})=f(0,1)=2v(\{2\})=f(0,1)=2; v({1,2})=f(2,1)=6+2+2=10v(\{1,2\})=f(2,1)=6+2+2=10.

Con due feature gli ordinamenti sono (1,2)(1,2) e (2,1)(2,1), ciascuno con peso 12\frac12:

  • φ1=12[v({1})−v(∅)]+12[v({1,2})−v({2})]=12⋅6+12⋅8=7\varphi_1=\frac12\big[v(\{1\})-v(\emptyset)\big]+\frac12\big[v(\{1,2\})-v(\{2\})\big]=\frac12\cdot6+\frac12\cdot8=7;
  • φ2=12[v({2})−v(∅)]+12[v({1,2})−v({1})]=12⋅2+12⋅4=3\varphi_2=\frac12\big[v(\{2\})-v(\emptyset)\big]+\frac12\big[v(\{1,2\})-v(\{1\})\big]=\frac12\cdot2+\frac12\cdot4=3.

Verifica dell'efficienza: φ1+φ2=10=f(x)−f(rif)=10−0\varphi_1+\varphi_2=10=f(x)-f(\text{rif})=10-0 ✓. L'interazione x1x2=2x_1x_2=2 è divisa a metà: 11 a ciascuna (infatti φ1=6+1\varphi_1=6+1 e φ2=2+1\varphi_2=2+1).

B. Il laboratorio

(i) Scala dei coefficienti. Nella logistica log⁡y1−y=β0+∑βjxj\log\frac y{1-y}=\beta_0+\sum\beta_jx_j. Se si moltiplica una feature per 100100, il suo coefficiente si divide per 100100 e le previsioni non cambiano: il valore di βj\beta_j dipende dalle unità di misura. Per questo nel lab le feature sono normalizzate con min-max usando minimo e massimo del training (poi applicati al test) prima di confrontare ∣βj∣|\beta_j|. Risultati: accuratezza di training 0,8570{,}857, di test 0,850{,}85.

(ii) LASSO. Si addestra una regressione con penalità ℓ1\ell_1 per 3030 valori di α\alpha tra 0,0010{,}001 e 0,130{,}13 e si disegnano i coefficienti. Al crescere di α\alpha i pesi si riducono e si azzerano uno dopo l'altro; le ultime feature a restare sono ChestPain_asymptomatic, Ca_0.0 e Thal_normal: le più importanti per quel modello. L'ordine di importanza cambia con α\alpha.

(iii) ICE e PDP per una random forest (max_depth=5): per un campione si fa variare una feature in 100100 valori tra 00 e 11 (i dati sono normalizzati) lasciando fissi gli altri e si registra predict_proba(...)[0, 1]: è una ICE. Ripetuta per ogni campione di test e mediata, dà il PDP. Per due feature (età e frequenza massima) si usa una griglia 50×5050\times50 e un grafico a contorni per la previsione di un campione.

(iv) SHAP. explainer = shap.Explainer(clf, X_train, feature_names=...): il training fa da dataset di sfondo per il valore di riferimento. explainer(X_train) dà i valori SHAP globali, shap.summary_plot mostra importanza e verso dell'effetto; per i campioni di test shap.waterfall_plot mostra, per una previsione, come ciascuna feature la sposta dal valore atteso a quello finale. Si usano i valori della classe 00: l'altra classe ha valori opposti (probabilità che sommano 11).

Codice

python
def ice(model, sample, idx, grid=np.linspace(0, 1, 100)):
    out = []
    for v in grid:
        s = sample.copy(); s[0, idx] = v                     # cambia solo la feature idx
        out.append(model.predict_proba(s)[0, 1])
    return grid, out
curve = [ice(clf, X_test[i:i+1], idx_age)[1] for i in range(len(X_test))]
pdp = np.mean(curve, axis=0)                                  # PDP = media delle ICE

Lezioni in cui compare

Teoria collegata