Salta al contenuto
Note per Studenti Regressione logistica e softmax

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 00, positiva (spam, malattia presente) con 11. Per usare la regressione (adattare una retta, calcolare l'RMSE) serve un'uscita numerica, quindi si assegnano arbitrariamente 00 e 11 alle due classi. Con una variabile di ingresso si adatta con l'OLS una retta βx\beta x e si classifica con una soglia, il bordo di decisione (decision boundary): y^=negativo\hat y=\text{negativo} se βx<0,5\beta x<0{,}5, 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 [0,1][0,1], 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). σ(z)=11+e−z\displaystyle\sigma(z)=\frac1{1+e^{-z}} (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 (0,1)(0,1), è crescente, vale 0,50{,}5 in z=0z=0, tende a 00 per z→−∞z\to-\infty e a 11 per z→+∞z\to+\infty.

Esempio (dalle slide). σ(−10)=4,5⋅10−5≈0\sigma(-10)=4{,}5\cdot10^{-5}\approx0; σ(0)=0,5\sigma(0)=0{,}5; σ(5)=0,9933≈0,99\sigma(5)=0{,}9933\approx0{,}99. Inoltre σ(2)=0,881\sigma(2)=0{,}881 e σ(−2)=0,119=1−σ(2)\sigma(-2)=0{,}119=1-\sigma(2): vale la simmetria σ(−z)=1−σ(z)\sigma(-z)=1-\sigma(z).

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 xTβ=β0+β1x1+⋯+βpxpx^T\beta=\beta_0+\beta_1x_1+\dots+\beta_px_p (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: y^i=σ(xiTβ)=11+e−xiTβ,P(yi=1∣xi)=σ(xiTβ),P(yi=0∣xi)=1−σ(xiTβ).\hat y_i=\sigma(x_i^T\beta)=\frac1{1+e^{-x_i^T\beta}},\qquad P(y_i=1\mid x_i)=\sigma(x_i^T\beta),\quad P(y_i=0\mid x_i)=1-\sigma(x_i^T\beta). La classe predetta è 11 se σ(xiTβ)≥0,5\sigma(x_i^T\beta)\ge0{,}5, altrimenti 00.

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é σ(z)≥0,5  ⟺  z≥0\sigma(z)\ge0{,}5\iff z\ge0, la regola equivale a: classe 11 se xTβ≥0x^T\beta\ge0. Il bordo di decisione è l'insieme xTβ=0x^T\beta=0, un iperpiano (una retta se p=2p=2): la regressione logistica è un classificatore lineare.

Il significato di β\beta. Dalla definizione, P(y=1∣x)P(y=0∣x)=exTβ\dfrac{P(y=1\mid x)}{P(y=0\mid x)}=e^{x^T\beta} (infatti σ/(1−σ)=ez\sigma/(1-\sigma)=e^{z}), cioè il logaritmo dell'odds (rapporto di probabilità) è lineare: log⁡P1−P=xTβ\log\dfrac{P}{1-P}=x^T\beta. Aumentare di 11 la feature xjx_j somma βj\beta_j al log-odds, cioè moltiplica l'odds per eβje^{\beta_j}. 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 β=(−3; 1; 1)\beta=(-3;\,1;\,1) e x=(2; 2)x=(2;\,2): z=−3+2+2=1z=-3+2+2=1, y^=σ(1)=0,731\hat y=\sigma(1)=0{,}731: classe 11 con probabilità 73%73\%. Per x=(0; 1)x=(0;\,1): z=−2z=-2, y^=0,119\hat y=0{,}119, classe 00.

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 β\beta che rendono il modello migliore su un criterio. Si potrebbe provare con l'errore quadratico 12n∑i(yi−σ(xiTβ))2\frac1{2n}\sum_i(y_i-\sigma(x_i^T\beta))^2, ma con la sigmoide dentro non è convesso e la discesa del gradiente può bloccarsi. Per capirlo: se y=1y=1 e il modello sbaglia molto (z=−4z=-4), l'errore quadratico vale (1−σ(−4))2=0,964(1-\sigma(-4))^2=0{,}964 ma la sua pendenza rispetto a zz è 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:

y^\hat y vicino a 00 y^\hat y vicino a 11
vero y=0y=0 costo basso costo alto
vero y=1y=1 costo alto costo basso

Definizione (log-verosimiglianza negativa o cross-entropia binaria). L(β)=−∑i=1n[yilog⁡σ(xiTβ)+(1−yi)log⁡(1−σ(xiTβ))].\mathcal L(\beta)=-\sum_{i=1}^n\Big[y_i\log\sigma(x_i^T\beta)+(1-y_i)\log\big(1-\sigma(x_i^T\beta)\big)\Big]. Spesso si usa la media 1nL\frac1n\mathcal L.

Da dove viene. Dato xix_i, la probabilità di osservare l'etichetta yi∈{0,1}y_i\in\{0,1\} è y^i yi(1−y^i)1−yi\hat y_i^{\,y_i}(1-\hat y_i)^{1-y_i} (vale y^i\hat y_i se yi=1y_i=1 e 1−y^i1-\hat y_i se yi=0y_i=0). 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 ∏iy^i yi(1−y^i)1−yi\prod_i\hat y_i^{\,y_i}(1-\hat y_i)^{1-y_i} (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 y=1y=1 il costo è −log⁡y^-\log\hat y: vale 00 per y^=1\hat y=1 e cresce senza limite per y^→0\hat y\to0; se y=0y=0 il costo è −log⁡(1−y^)-\log(1-\hat y): 00 per y^=0\hat y=0 e infinito per y^→1\hat y\to1. Un errore «convinto» è punito molto.

Esempio. Per y=1y=1 e y^=0,9\hat y=0{,}9: costo −ln⁡0,9=0,105-\ln0{,}9=0{,}105; per y^=0,1\hat y=0{,}1: −ln⁡0,1=2,303-\ln0{,}1=2{,}303; per y^=0,5\hat y=0{,}5 (modello indeciso): ln⁡2=0,693\ln2=0{,}693. Con β=0\beta=0 tutte le previsioni valgono 0,50{,}5 e la media della perdita è ln⁡2=0,693\ln2=0{,}693 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 σ(z)=(1+e−z)−1\sigma(z)=(1+e^{-z})^{-1}, σ′(z)=−(1+e−z)−2⋅(−e−z)=e−z(1+e−z)2=σ(z) (1−σ(z)),\sigma'(z)=-(1+e^{-z})^{-2}\cdot(-e^{-z})=\frac{e^{-z}}{(1+e^{-z})^2}=\sigma(z)\,\big(1-\sigma(z)\big), perché σ(z)=11+e−z\sigma(z)=\frac1{1+e^{-z}} e 1−σ(z)=e−z1+e−z1-\sigma(z)=\frac{e^{-z}}{1+e^{-z}} (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 z=xTβz=x^T\beta e ℓ=−ylog⁡σ(z)−(1−y)log⁡(1−σ(z))\ell=-y\log\sigma(z)-(1-y)\log(1-\sigma(z)):

dℓdz=−yσ′(z)σ(z)+(1−y)σ′(z)1−σ(z).\frac{d\ell}{dz}=-y\frac{\sigma'(z)}{\sigma(z)}+(1-y)\frac{\sigma'(z)}{1-\sigma(z)}.

Nel primo termine σ′/σ=1−σ\sigma'/\sigma=1-\sigma e nel secondo σ′/(1−σ)=σ\sigma'/(1-\sigma)=\sigma (è la formula di σ′\sigma' divisa per σ\sigma o per 1−σ1-\sigma). Quindi dℓdz=−y (1−σ)+(1−y) σ=−y+yσ+σ−yσ=σ−y\frac{d\ell}{dz}=-y\,(1-\sigma)+(1-y)\,\sigma=-y+y\sigma+\sigma-y\sigma=\sigma-y, cioè dℓdz=σ(z)−y=y^−y\dfrac{d\ell}{dz}=\sigma(z)-y=\hat y-y. Con la regola della catena (∂z/∂β=x\partial z/\partial\beta=x, 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). ∇βL=XT(y^−y),oppure, con la media,∇β(1nL)=XT(y^−y)n.\nabla_\beta\mathcal L=X^T(\hat y-y),\qquad\text{oppure, con la media,}\quad\nabla_\beta\Big(\tfrac1n\mathcal L\Big)=\frac{X^T(\hat y-y)}{n}. Qui XX include la colonna di uni, y^=σ(Xβ)\hat y=\sigma(X\beta) e yy sono vettori n×1n\times1.

È la stessa forma del gradiente della regressione lineare (2XT(Xβ−y)2X^T(X\beta-y), con y^=Xβ\hat y=X\beta): cambia solo la previsione, σ(Xβ)\sigma(X\beta) invece di XβX\beta. Non esiste formula chiusa, perciò si usa la discesa del gradiente: β←β−η XT(y^−y)n.\beta\leftarrow\beta-\eta\,\frac{X^T(\hat y-y)}{n}.

Esempio completo. Dati x=[1,2,3,4,5,6]x=[1,2,3,4,5,6], y=[0,0,1,0,1,1]y=[0,0,1,0,1,1], X=[11⋮⋮16]X=\begin{bmatrix}1&1\\\vdots&\vdots\\1&6\end{bmatrix}. Partendo da β=(0,0)\beta=(0,0) tutte le previsioni sono 0,50{,}5 e l'errore y^−y=[0,5;0,5;−0,5;0,5;−0,5;−0,5]\hat y-y=[0{,}5;0{,}5;-0{,}5;0{,}5;-0{,}5;-0{,}5]. Gradiente: la prima componente è 16(0,5+0,5−0,5+0,5−0,5−0,5)=0\frac16(0{,}5+0{,}5-0{,}5+0{,}5-0{,}5-0{,}5)=0; la seconda è 16(0,5⋅1+0,5⋅2−0,5⋅3+0,5⋅4−0,5⋅5−0,5⋅6)=16(−3,5)=−0,583\frac16(0{,}5\cdot1+0{,}5\cdot2-0{,}5\cdot3+0{,}5\cdot4-0{,}5\cdot5-0{,}5\cdot6)=\frac16(-3{,}5)=-0{,}583. Con η=0,1\eta=0{,}1: β=(0; 0,0583)\beta=(0;\ 0{,}0583). Le previsioni diventano σ(0,0583x)=0,515; 0,529; … ; 0,587\sigma(0{,}0583x)=0{,}515;\,0{,}529;\,\dots;\,0{,}587; secondo gradiente (0,0507; −0,364)(0{,}0507;\,-0{,}364), quindi β=(−0,0051; 0,0947)\beta=(-0{,}0051;\ 0{,}0947); terzo passo β=(−0,0131; 0,1182)\beta=(-0{,}0131;\ 0{,}1182). A convergenza (verificata con il metodo di Newton e con scikit-learn senza penalità) β≈(−4,249; 1,214)\beta\approx(-4{,}249;\ 1{,}214), con perdita media 0,4130{,}413 (era 0,6930{,}693): il bordo −4,249+1,214x=0-4{,}249+1{,}214x=0 cade in x=3,5x=3{,}5 e le probabilità previste sono 0,046; 0,139; 0,353; 0,647; 0,861; 0,9540{,}046;\ 0{,}139;\ 0{,}353;\ 0{,}647;\ 0{,}861;\ 0{,}954.

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 ∣β∣|\beta| senza minimo finito (le probabilità tendono a 00 e 11): in questo caso serve regolarizzare. Con ℓ2\ell_2 o ℓ1\ell_1 (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 λ∑j≥1βj2\lambda\sum_{j\ge1}\beta_j^2 o λ∑∣βj∣\lambda\sum|\beta_j|. 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.

python
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 beta

Classificazione multiclasse

Con C>2C>2 classi si possono combinare classificatori binari, oppure usare direttamente la softmax.

One-vs-one

Si costruiscono C(C−1)2\dfrac{C(C-1)}2 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 C=3C=3 ci sono 3⋅2/2=33\cdot2/2=3 classificatori: A contro B, B contro C, A contro C. Per un campione che vince AA (contro B), CC (contro B) e AA (contro C): A ha 2 vittorie, C ne ha 1: si assegna A.

One-vs-all

Si costruiscono CC classificatori: per la classe cc si crea un nuovo vettore di etichette con yi=1y_i=1 se il campione ii appartiene alla classe cc, 00 altrimenti (si usano tutti i campioni). Per un nuovo campione si applicano i CC classificatori e si sceglie la classe del classificatore con il punteggio più alto (con la regressione logistica, la probabilità).

Esempio. Con C=3C=3 e probabilità 0,2; 0,7; 0,50{,}2;\ 0{,}7;\ 0{,}5 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 0,7330{,}733 sul test.

Regressione softmax

Un approccio diretto alle CC classi: ogni classe cc ha il proprio vettore di parametri βc\beta_c e il suo punteggio zc=xTβcz_c=x^T\beta_c; la softmax li trasforma in probabilità, pc=ezc∑k=1Cezk,pc>0,  ∑cpc=1.p_c=\frac{e^{z_c}}{\sum_{k=1}^Ce^{z_k}},\qquad p_c>0,\ \ \sum_cp_c=1. La perdita è la cross-entropia −∑ilog⁡pyi(xi)-\sum_i\log p_{y_i}(x_i) (il logaritmo della probabilità assegnata alla classe vera), che per C=2C=2 coincide con la log-verosimiglianza della logistica (e σ(z)=ezez+1\sigma(z)=\frac{e^z}{e^z+1} è la softmax con punteggi (z,0)(z,0)). Il suo gradiente rispetto a zcz_c è pc−1[c=y]p_c-\mathbb 1[c=y], la generalizzazione di y^−y\hat y-y.

Esempio. Punteggi z=(2; 1; 0,1)z=(2;\,1;\,0{,}1): gli esponenziali sono 7,389; 2,718; 1,1057{,}389;\ 2{,}718;\ 1{,}105 con somma 11,21211{,}212, quindi p=(0,659; 0,242; 0,099)p=(0{,}659;\ 0{,}242;\ 0{,}099). Se la classe vera è la prima, la perdita è −ln⁡0,659=0,417-\ln0{,}659=0{,}417.

Bordi di decisione

Con pp 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 90%90\% di classe A e 10%10\% 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 0,50{,}5 per classificare.
  • Minimizzare l'errore quadratico con la sigmoide: usare la log-verosimiglianza.
  • Dimenticare che y^\hat y è 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 y^−y\hat y-y al contrario nell'aggiornamento: il gradiente è XT(y^−y)X^T(\hat y-y) e si sottrae.
  • Non standardizzare le feature, o non regolarizzare con classi separabili.
  • Confondere forma delle etichette: il gradiente richiede yy come vettore colonna (n,1)(n,1) se y^\hat y lo è.

Versione ripasso

Definizione. σ(z)=11+e−z∈(0,1)\sigma(z)=\dfrac1{1+e^{-z}}\in(0,1), σ(0)=0,5\sigma(0)=0{,}5, σ(−z)=1−σ(z)\sigma(-z)=1-\sigma(z), σ′=σ(1−σ)\sigma'=\sigma(1-\sigma). Regressione logistica: y^=σ(xTβ)=P(y=1∣x)\hat y=\sigma(x^T\beta)=P(y=1\mid x); classe 11 se y^≥0,5  ⟺  xTβ≥0\hat y\ge0{,}5\iff x^T\beta\ge0 (bordo lineare). log⁡P1−P=xTβ\log\frac{P}{1-P}=x^T\beta.

Esempio. β=(−3;1;1)\beta=(-3;1;1): per x=(2,2)x=(2,2), z=1z=1, y^=0,731\hat y=0{,}731; per x=(0,1)x=(0,1), z=−2z=-2, y^=0,119\hat y=0{,}119.

Perché non la regressione lineare: valori fuori da [0,1][0,1], 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). L(β)=−∑i[yilog⁡y^i+(1−yi)log⁡(1−y^i)]\mathcal L(\beta)=-\sum_i[y_i\log\hat y_i+(1-y_i)\log(1-\hat y_i)] (da ∏y^iyi(1−y^i)1−yi\prod\hat y_i^{y_i}(1-\hat y_i)^{1-y_i} con log e segno meno). Convessa. Gradiente: ∇L=XT(y^−y)\nabla\mathcal L=X^T(\hat y-y) (da dℓ/dz=σ−yd\ell/dz=\sigma-y). Aggiornamento: β←β−ηXT(y^−y)/n\beta\leftarrow\beta-\eta X^T(\hat y-y)/n.

Esempio. x=[1,…,6]x=[1,\dots,6], y=[0,0,1,0,1,1]y=[0,0,1,0,1,1]: da β=0\beta=0 il gradiente è (0;−0,583)(0;-0{,}583); a convergenza β=(−4,249; 1,214)\beta=(-4{,}249;\,1{,}214), bordo in x=3,5x=3{,}5, perdita media 0,4130{,}413 (con β=0\beta=0: ln⁡2=0,693\ln2=0{,}693).

Regolarizzazione: ridge/LASSO/Elastic Net anche per la logistica (necessaria con classi separabili). Costo per un esempio: y=1⇒−log⁡y^y=1\Rightarrow-\log\hat y; y=0⇒−log⁡(1−y^)y=0\Rightarrow-\log(1-\hat y).

Multiclasse. One-vs-one: C(C−1)/2C(C-1)/2 classificatori, conteggio delle vittorie, pareggi risolti con dominio/probabilità medie/caso; difetto: ambiguità. One-vs-all: CC classificatori (y=1y=1 per la classe, 00 per il resto), vince la probabilità maggiore; difetto: classi sbilanciate.

Formula (softmax). pc=ezc∑kezkp_c=\dfrac{e^{z_c}}{\sum_ke^{z_k}}, zc=xTβcz_c=x^T\beta_c; perdita cross-entropia −log⁡py-\log p_{y}; per C=2C=2 coincide con la logistica.

Esempio. z=(2;1;0,1)z=(2;1;0{,}1): p=(0,659;0,242;0,099)p=(0{,}659;0{,}242;0{,}099); perdita con classe vera 1: 0,4170{,}417.

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

Lezioni in cui compare

Teoria collegata