Regressione logistica e softmax
In questa pagina 7
La regressione logistica è il modello di riferimento per la classificazione con un modello lineare e probabilistico (Lezione 13 · Regressione logistica, softmax e metriche di classificazione). Usa la discesa del gradiente (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 →) e si valuta con le Metriche di classificazioneIn classificazione binaria ogni previsione è vero positivo (TP), vero negativo (TN), falso positivo (FP, errore di tipo I) o falso negativo (FN, errore di tipo II). Da queste quattro quantità: accuracy $=\frac{TP+TN}{TP+TN+FP+FN}$, specificità $=\frac{TN}{TN+FP}$, precision $=\frac{TP}{TP+FP}$, recall $=\frac{TP}{TP+FN}$, e la loro media armonica $F_1=\frac{2PR}{P+R}$. Con dati sbilanciati l'accuracy inganna (un modello che predice sempre la classe maggioritaria ha 99%): si usano precision, recall, F1, ROC-AUC, la cross-validation stratificata e il riequilibrio con undersampling o oversampling (non SMOTE). Cambiando la soglia sulla probabilità si ottiene la curva ROC (TPR contro FPR) e l'area AUC. Approfondimento: non nel programma di Telecomunicazioni.Metriche di classificazione →; è il «neurone» con attivazione sigmoide che ritorna nelle reti (Reti neurali - neuroni e funzioni di attivazioneUn neurone calcola $\hat y=g(w_0+w^\top x)$: somma pesata degli ingressi più bias, poi una funzione di attivazione $g$ non lineare (Perceptron a soglia, sigmoide, tanh, ReLU e varianti). Senza non linearità ogni rete è equivalente a un solo modello lineare. Una rete feed-forward impila strati di neuroni: $a^{(k)}=g(W^{(k)}a^{(k-1)}+b^{(k)})$; con uno strato nascosto è già un approssimatore universale, ma più strati rappresentano funzioni complesse con molti meno neuroni e imparano feature gerarchiche (bordi, parti, oggetti). Lo strato di uscita e la loss si scelgono dal compito: lineare+MSE (regressione), sigmoide+cross-entropy binaria, softmax+cross-entropy (multiclasse). Il numero di parametri di uno strato denso è $n_{in}n_{out}+n_{out}$. Nel lab (Keras, MNIST) una rete 784-512-10 ha 407 050 parametri e supera il 98% di accuratezza.Reti neurali - neuroni e funzioni di attivazione →). Esercizi: Esercizio - Regressione logistica su sei punti con discesa del gradiente, Esercizio - Pseudo-etichette con k-NN e regressione logistica e Esercizio - Regressione logistica one-vs-one e one-vs-all sul dataset iris (Lezione 15 · Laboratorio kNN e regressione logistica).
Perché non la regressione lineare
Sia dato un problema binario: classe negativa (non spam, malattia assente) codificata con , positiva (spam, malattia presente) con . Per usare la regressione (adattare una retta, calcolare l'RMSE) serve un'uscita numerica, quindi si assegnano arbitrariamente e alle due classi. Con una variabile di ingresso si adatta con l'OLS una retta e si classifica con una soglia, il bordo di decisione (decision boundary): se , positivo altrimenti.
I difetti sono due:
- i dati in classificazione sono tipicamente molto lontani dal bordo: un punto estremo della classe positiva tira la retta e sposta la soglia, facendo sbagliare punti vicini al bordo;
- la retta assume valori fuori da , che non hanno senso come previsione di un'etichetta.
Serve una funzione che descriva in modo naturale due livelli di uscita: la sigmoide.
La sigmoide e il modello logistico
Definizione (funzione logistica o sigmoide). (esponenziale: Esponenziale e logaritmoLa funzione esponenziale a^x (base positiva diversa da 1) e la sua inversa, il logaritmo in base a, con grafici e proprietà.Esponenziale e logaritmo →). Ha valori in , è crescente, vale in , tende a per e a per .
Esempio (dalle slide). ; ; . Inoltre e : vale la simmetria .
Grafico interattivo: Sigmoide σ(z) = 1/(1 + e^(−z)): trasforma qualunque numero reale in un valore in (0, 1); σ(0) = 0,5 è la soglia di decisione, σ(5) = 0,99
Definizione (regressione logistica). Si prende la combinazione lineare delle feature (come nella Regressione lineareNell'apprendimento supervisionato si impara una funzione $F(x)$ dagli esempi $(x,y)$: regressione se $y$ è continua, classificazione se è categorica. Il modello lineare è $F_\beta(x)=\beta_0+\beta_1x_1+\dots+\beta_px_p=X\beta$ (con una colonna di uni per $\beta_0$) e i parametri si scelgono minimizzando l'errore quadratico medio $\mathrm{MSE}=\frac1n\sum_i(y_i-F_\beta(x_i))^2$, funzione convessa dei parametri. Annullando il gradiente di $J(\beta)=|y-X\beta|^2$ si ottengono le equazioni normali $X^TX\beta=X^Ty$ e la soluzione dei minimi quadrati ordinari $\beta=(X^TX)^{-1}X^Ty$. Il coefficiente di determinazione $R^2=1-SS_{res}/SS_{tot}$ misura la qualità del fit (0 = come la media, negativo = peggio della media). Un modello va valutato su un test set mai usato per addestrare: l'errore sul training è ottimistico e un polinomio di grado alto lo azzera senza generalizzare.Regressione lineare →, con la colonna di uni) e la si trasforma con la sigmoide: La classe predetta è se , altrimenti .
L'uscita ha quindi un'interpretazione probabilistica (probabilità della classe positiva, Probabilità condizionataLa probabilità di A sapendo che si è verificato B è P(A ∣ B) = P(A ∩ B) / P(B), con P(B) > 0; è una nuova misura di probabilità, e da essa seguono la regola del prodotto e la regola della catena.Probabilità condizionata →). Poiché , la regola equivale a: classe se . Il bordo di decisione è l'insieme , un iperpiano (una retta se ): la regressione logistica è un classificatore lineare.
Il significato di . Dalla definizione, (infatti ), cioè il logaritmo dell'odds (rapporto di probabilità) è lineare: . Aumentare di la feature somma al log-odds, cioè moltiplica l'odds per . Il modello rientra nei modelli lineari generalizzati (GLM), che permettono una risposta non gaussiana (binomiale, di Poisson) e una funzione di collegamento non lineare tra la media della risposta e il predittore lineare: qui il collegamento è il logit.
Esempio. Se e : , : classe con probabilità . Per : , , classe .
Grafico interattivo: Con β = (−3; 1; 1) il bordo di decisione è la retta x₁ + x₂ = 3 (probabilità 0,5); le rette parallele x₁ + x₂ = 3 ± 2,2 sono le curve di probabilità 0,9 e 0,1: la probabilità varia solo nella direzione perpendicolare al bordo
La funzione di costo: perché non l'errore quadratico
Come per la regressione (Regressione lineareNell'apprendimento supervisionato si impara una funzione $F(x)$ dagli esempi $(x,y)$: regressione se $y$ è continua, classificazione se è categorica. Il modello lineare è $F_\beta(x)=\beta_0+\beta_1x_1+\dots+\beta_px_p=X\beta$ (con una colonna di uni per $\beta_0$) e i parametri si scelgono minimizzando l'errore quadratico medio $\mathrm{MSE}=\frac1n\sum_i(y_i-F_\beta(x_i))^2$, funzione convessa dei parametri. Annullando il gradiente di $J(\beta)=|y-X\beta|^2$ si ottengono le equazioni normali $X^TX\beta=X^Ty$ e la soluzione dei minimi quadrati ordinari $\beta=(X^TX)^{-1}X^Ty$. Il coefficiente di determinazione $R^2=1-SS_{res}/SS_{tot}$ misura la qualità del fit (0 = come la media, negativo = peggio della media). Un modello va valutato su un test set mai usato per addestrare: l'errore sul training è ottimistico e un polinomio di grado alto lo azzera senza generalizzare.Regressione lineare →) servono i parametri che rendono il modello migliore su un criterio. Si potrebbe provare con l'errore quadratico , ma con la sigmoide dentro non è convesso e la discesa del gradiente può bloccarsi. Per capirlo: se e il modello sbaglia molto (), l'errore quadratico vale ma la sua pendenza rispetto a è minuscola (la sigmoide è piatta in quella zona): il gradiente è quasi nullo proprio dove l'errore è massimo e l'apprendimento è lentissimo. Serve una perdita che misuri un errore di classificazione:
| vicino a | vicino a | |
|---|---|---|
| vero | costo basso | costo alto |
| vero | costo alto | costo basso |
Definizione (log-verosimiglianza negativa o cross-entropia binaria). Spesso si usa la media .
Da dove viene. Dato , la probabilità di osservare l'etichetta è (vale se e se ). Se le osservazioni sono indipendenti (Indipendenza di eventiA e B sono indipendenti se P(A ∩ B) = P(A) P(B), cioè se sapere che uno si è verificato non cambia la probabilità dell'altro; l'indipendenza passa ai complementari, non va confusa con l'incompatibilità, e per più eventi va richiesta su ogni sottofamiglia.Indipendenza di eventi →), la probabilità di tutti i dati è il prodotto (verosimiglianza). Massimizzare la verosimiglianza equivale a massimizzare il suo logaritmo (che trasforma il prodotto in somma, perché il logaritmo è crescente: Esponenziale e logaritmoLa funzione esponenziale a^x (base positiva diversa da 1) e la sua inversa, il logaritmo in base a, con grafici e proprietà.Esponenziale e logaritmo →) e quindi a minimizzare il suo opposto: la formula sopra.
Perché ha senso. Per un solo esempio, se il costo è : vale per e cresce senza limite per ; se il costo è : per e infinito per . Un errore «convinto» è punito molto.
Esempio. Per e : costo ; per : ; per (modello indeciso): . Con tutte le previsioni valgono e la media della perdita è qualunque siano i dati.
Grafico interattivo: Costo per un esempio con y = 1 in funzione di z = xᵀβ: l'errore quadratico (1 − σ(z))² si appiattisce a sinistra (gradiente quasi nullo anche se l'errore è massimo), la log-verosimiglianza −log σ(z) = log(1 + e^(−z)) cresce linearmente per z molto negativo e fornisce sempre un gradiente utile
La log-verosimiglianza negativa è convessa nei parametri: si può usare la discesa del gradiente, senza il rischio di minimi locali spuri (Funzioni convesse in più variabiliUn insieme C è convesso se contiene il segmento tra due suoi punti; f: C → R è convessa se f(tx + (1−t)y) ≤ t f(x) + (1−t) f(y) per t in [0,1], cioè il grafico sta sotto le corde. Se f è differenziabile, è convessa se e solo se f(y) ≥ f(x) + ∇f(x)·(y − x) (il grafico sta sopra ogni piano tangente). Se f è C² su un aperto convesso, è convessa se e solo se l'hessiana è semidefinita positiva in ogni punto; se è definita positiva ovunque f è strettamente convessa (non vale il viceversa: x⁴). Per una funzione convessa ogni punto critico è un minimo globale.Funzioni convesse in più variabili →).
Il gradiente
Si calcola prima la derivata della sigmoide: da , perché e (Regole di derivazioneDerivate delle funzioni elementari e delle loro inverse (arcsin, arctan, settcosh...) e regole di calcolo: linearità, prodotto (Leibniz), quoziente, funzione composta (regola della catena), funzione inversa, f(x)^g(x).Regole di derivazione →). Per un solo esempio con e :
Nel primo termine e nel secondo (è la formula di divisa per o per ). Quindi , cioè . Con la regola della catena (, Regola della catena in più variabiliSe x(t) è una curva derivabile e f è differenziabile in x(t₀), allora (f∘x)'(t₀) = ∇f(x(t₀))·x'(t₀) = Σ ∂ᵢf(x(t₀)) xᵢ'(t₀): la variazione di f lungo il moto è il gradiente per la velocità. Serve per derivare composte come f(2t, t²), per ricavare il gradiente da informazioni lungo curve, per le derivate di f(g(s,t)) e per provare che il gradiente è ortogonale alle curve di livello.Regola della catena in più variabili →) e sommando sugli esempi:
Formula (gradiente della log-verosimiglianza negativa). Qui include la colonna di uni, e sono vettori .
È la stessa forma del gradiente della regressione lineare (, con ): cambia solo la previsione, invece di . Non esiste formula chiusa, perciò si usa la discesa del gradiente:
Esempio completo. Dati , , . Partendo da tutte le previsioni sono e l'errore . Gradiente: la prima componente è ; la seconda è . Con : . Le previsioni diventano ; secondo gradiente , quindi ; terzo passo . A convergenza (verificata con il metodo di Newton e con scikit-learn senza penalità) , con perdita media (era ): il bordo cade in e le probabilità previste sono .
Grafico interattivo: Sei dati (y = 0 per x = 1, 2, 4 e y = 1 per x = 3, 5, 6) e curva logistica σ(−4,249 + 1,214 x): supera 0,5 in x = 3,5, il bordo di decisione
Se le due classi sono perfettamente separabili, la perdita continua a diminuire aumentando senza minimo finito (le probabilità tendono a e ): in questo caso serve regolarizzare. Con o (ridge, LASSO, Elastic Net: Overfitting, ridge regression e cross-validationUna buona prestazione sul training non basta: serve stimare quella su dati nuovi. La cross-validation (K-fold: $k$ parti, ciascuna a turno come test, errore medio; Monte Carlo: $k$ divisioni casuali con quota di test $q$; leave-one-out se $k=n$) evita di dipendere da una sola divisione casuale. L'errore atteso si scompone in $\text{bias}^2+\text{varianza}+\sigma^2$: i modelli semplici fanno underfitting (bias alto), quelli complessi overfitting (varianza alta). La regolarizzazione aggiunge alla perdita una penalità: la ridge regression minimizza $|y-X\beta|^2+\lambda\sum_{j\ge1}\beta_j^2$ e ha soluzione $\beta=(X^TX+\lambda\tilde I)^{-1}X^Ty$ (l'intercetta non si penalizza, le feature si standardizzano): riduce i coefficienti, rende l'inversa stabile con feature collineari, e $\lambda$ è un iperparametro scelto con la validazione (cross-validation annidata per non contaminare il test).Overfitting, ridge regression e cross-validation →, 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 →) si somma alla perdita o . Gli stessi metodi kernel (opzionali) si vedono con le SVM (Support vector machines e metodi kernelUna SVM cerca l'iperpiano $w\cdot x+b=0$ che separa due classi con il margine più largo possibile: normalizzando $y_i(w\cdot x_i+b)\ge1$ il margine totale vale $2/|w|$, quindi si risolve $\min\frac12|w|^2$ (problema convesso, nessun minimo locale). Con classi sovrapposte si ammettono errori con le variabili di scarto $\xi_i$ e il parametro $C$ (soft margin, equivalente alla hinge loss più una penalità su $|w|^2$); $C$ piccolo = margine largo e più bias, $C$ grande = margine stretto e più varianza, si sceglie per cross-validation. La soluzione dipende solo dai vettori di supporto ($w=\sum\alpha_iy_ix_i$) e solo tramite prodotti scalari, per questo si può sostituire $x_i\cdot x_j$ con un kernel $K(x_i,x_j)=\langle\phi(x_i),\phi(x_j)\rangle$ (polinomiale, RBF) senza calcolare $\phi$: così si ottengono bordi non lineari. La SVR usa lo stesso schema con un tubo di tolleranza $\varepsilon$. Nell'esame le SVM sono solo nella parte teorica.Support vector machines e metodi kernel →): permettono bordi non lineari mappando i dati in uno spazio di dimensione più alta.
import numpy as np
sigmoid = lambda z: 1 / (1 + np.exp(-z))
def train_logreg(X, y, lr0, decay, n_iter):
X = np.hstack([np.ones((len(X), 1)), X]) # colonna di uni
beta = np.random.rand(X.shape[1], 1)
for i in range(n_iter):
lr = lr0 / (1 + decay * i) # passo adattivo
y_hat = sigmoid(X @ beta) # (n, 1)
grad = X.T @ (y_hat - y.reshape(-1, 1)) / len(X)
beta = beta - lr * grad
return betaClassificazione multiclasse
Con classi si possono combinare classificatori binari, oppure usare direttamente la softmax.
One-vs-one
Si costruiscono classificatori, uno per ogni coppia di classi (addestrato solo sui dati di quelle due classi); per un nuovo campione si applicano tutti e si conta quante volte vince ciascuna classe; si assegna la classe con più vittorie. Per gestire i pareggi: usare conoscenza del dominio, la media delle probabilità per ciascuna classe, oppure una scelta casuale.
Esempio. Con ci sono classificatori: A contro B, B contro C, A contro C. Per un campione che vince (contro B), (contro B) e (contro C): A ha 2 vittorie, C ne ha 1: si assegna A.
One-vs-all
Si costruiscono classificatori: per la classe si crea un nuovo vettore di etichette con se il campione appartiene alla classe , altrimenti (si usano tutti i campioni). Per un nuovo campione si applicano i classificatori e si sceglie la classe del classificatore con il punteggio più alto (con la regressione logistica, la probabilità).
Esempio. Con e probabilità delle tre classi, si assegna la classe 2.
Entrambi sono molto usati ma hanno difetti: one-vs-all ha distribuzioni sbilanciate (la classe «resto» è in genere molto più numerosa), one-vs-one ha ambiguità quando due classi hanno lo stesso numero di voti. Sull'iris con due feature, nel laboratorio, entrambi danno accuracy sul test.
Regressione softmax
Un approccio diretto alle classi: ogni classe ha il proprio vettore di parametri e il suo punteggio ; la softmax li trasforma in probabilità, La perdita è la cross-entropia (il logaritmo della probabilità assegnata alla classe vera), che per coincide con la log-verosimiglianza della logistica (e è la softmax con punteggi ). Il suo gradiente rispetto a è , la generalizzazione di .
Esempio. Punteggi : gli esponenziali sono con somma , quindi . Se la classe vera è la prima, la perdita è .
Bordi di decisione
Con feature i bordi sono iperpiani (rette in 2D). Nel laboratorio, con tre classi di punti in 2D (generati con make_blobs) il modello one-vs-rest produce tre regioni separate da rette; quando le feature sono più di due, il bordo si disegna dopo una riduzione a due dimensioni con la PCA (Analisi delle componenti principali (PCA)Con $p>3$ variabili non si può disegnare il dataset. La PCA (analisi delle componenti principali) lo proietta su pochi assi ortogonali, le componenti principali: dopo aver centrato (e di solito standardizzato) i dati, le direzioni sono gli autovettori della matrice di covarianza $S=\frac1{n-1}X_c^TX_c$ ordinati per autovalore $\lambda_1\ge\lambda_2\ge\dots$; $\lambda_k$ è la varianza lungo la componente $k$ e $\lambda_k/\sum\lambda_j$ la frazione spiegata (scree plot). Trovare la retta che minimizza le distanze dai punti equivale a massimizzare la varianza delle proiezioni (Pitagora). È lineare e conserva la struttura globale, non quella locale; t-SNE e UMAP sono alternative non lineari solo per visualizzare. Approfondimento: non nel programma di Telecomunicazioni.Analisi delle componenti principali (PCA) →).
Validazione stratificata
Con le classi si usa la cross-validation stratificata: nel k-fold e nel Monte Carlo la proporzione tra le classi è mantenuta (circa) la stessa in ogni fold e nel test. È particolarmente utile se le classi sono sbilanciate (per esempio di classe A e di B) e per una valutazione più affidabile (Metriche di classificazioneIn classificazione binaria ogni previsione è vero positivo (TP), vero negativo (TN), falso positivo (FP, errore di tipo I) o falso negativo (FN, errore di tipo II). Da queste quattro quantità: accuracy $=\frac{TP+TN}{TP+TN+FP+FN}$, specificità $=\frac{TN}{TN+FP}$, precision $=\frac{TP}{TP+FP}$, recall $=\frac{TP}{TP+FN}$, e la loro media armonica $F_1=\frac{2PR}{P+R}$. Con dati sbilanciati l'accuracy inganna (un modello che predice sempre la classe maggioritaria ha 99%): si usano precision, recall, F1, ROC-AUC, la cross-validation stratificata e il riequilibrio con undersampling o oversampling (non SMOTE). Cambiando la soglia sulla probabilità si ottiene la curva ROC (TPR contro FPR) e l'area AUC. Approfondimento: non nel programma di Telecomunicazioni.Metriche di classificazione →).
Errori tipici
- Usare la regressione lineare con soglia per classificare.
- Minimizzare l'errore quadratico con la sigmoide: usare la log-verosimiglianza.
- Dimenticare che è una probabilità, non un'etichetta: l'etichetta si ottiene con una soglia (che si può cambiare se un tipo di errore costa di più).
- Scrivere al contrario nell'aggiornamento: il gradiente è e si sottrae.
- Non standardizzare le feature, o non regolarizzare con classi separabili.
- Confondere forma delle etichette: il gradiente richiede come vettore colonna se lo è.
Versione ripasso
Definizione. , , , . Regressione logistica: ; classe se (bordo lineare). .
Esempio. : per , , ; per , , .
Perché non la regressione lineare: valori fuori da , retta tirata dai punti lontani. Perché non l'errore quadratico: con la sigmoide non è convesso e il gradiente svanisce dove l'errore è massimo.
Formula (log-verosimiglianza negativa). (da con log e segno meno). Convessa. Gradiente: (da ). Aggiornamento: .
Esempio. , : da il gradiente è ; a convergenza , bordo in , perdita media (con : ).
Regolarizzazione: ridge/LASSO/Elastic Net anche per la logistica (necessaria con classi separabili). Costo per un esempio: ; .
Multiclasse. One-vs-one: classificatori, conteggio delle vittorie, pareggi risolti con dominio/probabilità medie/caso; difetto: ambiguità. One-vs-all: classificatori ( per la classe, per il resto), vince la probabilità maggiore; difetto: classi sbilanciate.
Formula (softmax). , ; perdita cross-entropia ; per coincide con la logistica.
Esempio. : ; perdita con classe vera 1: .
Validazione stratificata: k-fold e Monte Carlo mantengono le proporzioni delle classi in ogni fold/test (utile con classi sbilanciate).
Errori tipici: usare la regressione lineare per classificare; errore quadratico con la sigmoide; scambiare probabilità ed etichetta; segno del gradiente; classi separabili senza regolarizzazione.
Esercizi su questo argomento
- Esercizio - Analisi esplorativa e preprocessing di un dataset sbilanciato (Adult)
- Esercizio - ID3 con potatura e foresta casuale sul dataset Titanic
- Esercizio - k-nearest neighbors da zero sul dataset breast cancer
- Esercizio - Pseudo-etichette con k-NN e regressione logistica
- Esercizio - Regressione logistica one-vs-one e one-vs-all sul dataset iris
- Esercizio - Regressione logistica su sei punti con discesa del gradiente
- Esercizio - XAI su cardiopatia e calcolo a mano di permutation importance, PDP e Shapley