Salta ai contenuti

Regressione: la retta come modello statistico

Nel 1805 un metodo per addomesticare osservazioni astronomiche rumorose; oggi la struttura matematica che sta sotto al neurone più semplice di una rete. Questo capitolo segue la regressione lungo tutta la sua doppia vita — fit geometrico e modello probabilistico — e mostra perché tracciare la retta migliore e dichiarare quanto fidarsi di quella retta sono due gesti diversi.

Fino a qui la Parte V ha lavorato su una grandezza alla volta: la media di una popolazione, una proporzione, la differenza fra due gruppi. La realtà che interessa a chi costruisce sistemi non è quasi mai così semplice.

Un tasso di conversione dipende dal dispositivo, dal paese, dall’ora del giorno, dalla versione del modello servito. Un tempo di risposta dipende dalla lunghezza del prompt, dal carico del server, dalla cache. La domanda non è “quanto vale YY in media”, ma “come cambia YY quando cambiano queste altre cose”. La regressione è lo strumento che risponde a questa domanda, ed è lo strumento statistico più usato al mondo — dentro e fuori dal machine learning. Quasi ogni metodo predittivo, dalle reti neurali ai modelli ad albero, può essere visto come una variazione sul tema che la regressione enuncia nella forma più pura.

C’è una ragione più profonda per cui questo capitolo sta esattamente qui. La regressione è il punto in cui la statistica inferenziale e il machine learning si toccano e diventano, per un tratto, la stessa cosa.

La regressione lineare è, meccanicamente, un neurone senza funzione di attivazione: prende input, li pesa, li somma. La regressione logistica è un neurone con la sigmoide. Addestrare una rete profonda è, in fondo, impilare e ottimizzare molte di queste unità. Chi capisce davvero la regressione — non come ricetta ma come modello, con le sue assunzioni e i suoi modi di rompersi — ha già in mano la grammatica con cui leggere modelli molto più grandi. Concetti che nel deep learning sembrano esoterici — loss da minimizzare, gradiente, regolarizzazione, overfitting, train e validazione — nascono tutti, in forma elementare e perfettamente visibile, nella regressione.

E c’è il rovescio, che è il motivo per cui la regressione è tanto utile quanto pericolosa. La sua forma — una somma di termini, un coefficiente per ogni variabile — invita a leggere ogni coefficiente come “l’effetto di quella variabile”. Quella lettura è legittima solo sotto assunzioni forti, quasi mai verificate fuori da un esperimento. La regressione predittiva è una macchina di correlazione, e leggere i suoi coefficienti come cause è una delle riproduzioni più comuni — su scala industriale — dell’errore del capitolo precedente.

Il capitolo procede così. Prima il problema storico da cui la regressione nasce e il modello nella sua forma più nuda. Poi tre angoli di intuizione — la retta che minimizza l’errore, la proiezione ortogonale, la media condizionata — perché la regressione si capisce meglio guardandola da più lati.

Poi la meccanica: forma chiusa, interpretazione dei coefficienti, l’incertezza sui coefficienti, R2R^2, le quattro assunzioni e cosa succede quando si rompono. Infine i tre ponti che rendono questo capitolo un crocevia: verso la massima verosimiglianza, verso la regressione logistica per outcome binari, verso il machine learning con la regolarizzazione e la discesa del gradiente.

Il metodo dei minimi quadrati non nasce per descrivere relazioni tra variabili. Nasce per un problema di misura. All’inizio dell’Ottocento gli astronomi avevano lo stesso fastidio dei geodeti: per stimare l’orbita di un corpo celeste, o la lunghezza di un arco di meridiano, raccoglievano molte osservazioni, e queste osservazioni — essendo rumorose — erano fra loro incoerenti. Un sistema di equazioni con più equazioni che incognite non ha soluzione esatta. Serviva un criterio per scegliere la “miglior soluzione approssimata”.

Adrien-Marie Legendre (matematico francese, 1752-1833) pubblica quel criterio nel 1805, in appendice a un lavoro sul calcolo delle orbite delle comete: scegliere i valori delle incognite che rendono minima la somma dei quadrati degli scarti. Lo presenta come problema puramente algebrico, senza probabilità.

Carl Friedrich Gauss (matematico tedesco, 1777-1855) pubblica lo stesso metodo nel 1809 nella Theoria motus corporum coelestium, rivendicando di usarlo già dal 1795 — la priorità fu oggetto di una disputa lunga e acida con Legendre. Ma il contributo di Gauss va oltre la cronologia: è lui a dare al metodo una lettura probabilistica. I minimi quadrati, mostra Gauss, sono la stima ottima se gli errori di misura seguono una certa distribuzione, quella che oggi chiamiamo normale. Da questa argomentazione la distribuzione gaussiana eredita il soprannome di “legge degli errori”: non fu la curva a giustificare i minimi quadrati, furono i minimi quadrati a consacrare la curva.

Il nome “regressione” arriva da tutt’altra parte, ottant’anni dopo. Francis Galton (scienziato britannico, 1822-1911, cugino di Charles Darwin e pioniere della statistica applicata all’ereditarietà) studia la statura: misura genitori e figli e nota che i figli di genitori molto alti tendono a essere alti, ma in media meno dei genitori — la loro statura “regredisce” verso la media della popolazione.

Galton chiama il fenomeno regression toward mediocrity (1886) e lo interpreta come una legge biologica. Era un’interpretazione sbagliata: il fenomeno è una conseguenza algebrica della correlazione imperfetta, non una forza che spinge le specie verso la media. Il termine resta però attaccato alla tecnica anche quando il fenomeno originario diventa un dettaglio: oggi “regressione” è solo l’etichetta del metodo. Il cugino di Galton, Karl Pearson (1857-1936, fra i fondatori della statistica moderna), formalizza negli anni 1890 il coefficiente di correlazione e la retta di regressione nella forma che usiamo.

Il quadro probabilistico moderno si chiude con Ronald Fisher (statistico e genetista britannico, 1890-1962), che negli anni 1920 inquadra la regressione dentro la teoria della stima e la massima verosimiglianza. Le estensioni che questo capitolo tocca arrivano dopo: la regressione logistica per dati binari, introdotta da Joseph Berkson (statistico statunitense) nel 1944 e battezzata da David Cox (statistico britannico) tra il 1958 e il 1966; la regolarizzazione, con la ridge regression di Arthur Hoerl e Robert Kennard (1970) e il lasso di Robert Tibshirani (statistico canadese, 1996).

Conviene sottolineare quanto sia tarda la regolarizzazione rispetto al resto. Per oltre un secolo e mezzo la regressione è stata OLS e basta: si fittava la retta, si guardava R2R^2, si leggevano i coefficienti.

La ridge nasce nel 1970 da un problema molto concreto e poco glamour — la multicollinearità nei dati industriali, dove i predittori sono spesso fortemente correlati e OLS dà coefficienti assurdi. Il lasso, ventisei anni dopo, nasce in un mondo già diverso, in cui i dataset cominciano ad avere più variabili che osservazioni e la selezione automatica delle variabili diventa una necessità pratica.

Quando il machine learning rende normale lavorare con migliaia di feature, la regolarizzazione smette di essere un rimedio di nicchia e diventa la regola: ogni modello lineare serio, oggi, è regolarizzato. La storia della regressione, da questo lato, è la storia di un metodo che si adatta a dati sempre più larghi.

Nel grafo di questa wiki la regressione è il decimo capitolo della Parte V. Poggia su quasi tutto ciò che la precede: la nozione di campione, popolazione e stimatore, le distribuzioni comuni — in particolare la normale — la stima puntuale, gli intervalli di confidenza e i test di ipotesi che si applicano ai coefficienti, e soprattutto il capitolo su correlazione e causalità, di cui la regressione è il prolungamento operativo. Guarda avanti verso maximum-likelihood (in preparazione), map-bayesiano (in preparazione) e statistica-e-ml (in preparazione).

Prima di qualsiasi formula, tre angoli. Il primo — la retta che minimizza l’errore quadratico — è il modo standard di vedere la regressione, e spiega cosa si sta ottimizzando. Il secondo — la proiezione ortogonale — sposta lo sguardo in uno spazio a molte dimensioni e spiega perché la soluzione ha la forma che ha, e perché è unica. Il terzo — la media condizionata — la inquadra come oggetto probabilistico e prepara il passaggio alla logistica.

Sono tre framing diversi della stessa identica operazione: tenerli tutti rende molti risultati, che dalla sola formula sembrano misteriosi, immediatamente ovvi.

Primo angolo: la retta che minimizza l’errore quadratico

Sezione intitolata “Primo angolo: la retta che minimizza l’errore quadratico”

Hai una nuvola di punti su un piano. Ogni punto è un’osservazione: l’asse orizzontale porta un predittore XX — la superficie di una casa, la lunghezza di un prompt — l’asse verticale porta la risposta YY — il prezzo, il tempo di elaborazione.

Vuoi riassumere quella nuvola con una retta. Non una retta qualsiasi: quella che, in un senso da precisare, sbaglia meno di tutte le altre.

Per ogni retta candidata, ogni punto ha un residuo: la distanza verticale fra il valore osservato yiy_i e il valore y^i\hat{y}_i che la retta predice in corrispondenza di xix_i. Un residuo positivo significa che la retta sottostima quel punto, uno negativo che lo sovrastima. Una retta che passa bene “in mezzo” alla nuvola ha residui piccoli; una retta storta ne ha di grandi. La regressione dei minimi quadrati — ordinary least squares, OLS — sceglie la retta che rende minima la somma dei residui al quadrato: i(yiy^i)2\sum_i (y_i - \hat{y}_i)^2.

Perché i quadrati, e non — per dire — i valori assoluti degli scarti? Tre ragioni, intrecciate.

La prima è che il quadrato penalizza in modo sproporzionato gli errori grandi: un residuo di 10 costa cento volte un residuo di 1, non dieci. La retta si “sforza” così di non abbandonare nessun punto troppo lontano. Lo stesso fatto, vedremo, ha un rovescio: rende OLS fragile agli outlier.

La seconda è tecnica ma decisiva: la somma di quadrati è una funzione liscia, con una sola valle, e il suo minimo si trova ponendo a zero la derivata — esce un sistema di equazioni lineari con soluzione esplicita, calcolabile in un colpo. Con i valori assoluti il minimo esiste ma non ha forma chiusa altrettanto comoda.

La terza ragione la vedremo più avanti: sotto un’ipotesi precisa sul rumore, minimizzare i quadrati è esattamente la stessa cosa che massimizzare la probabilità dei dati osservati. La scelta dei quadrati non è un’abitudine: è la scelta che rende OLS statisticamente ottimo.

Un dettaglio chiude l’angolo e riannoda il filo con Galton. La pendenza della retta stimata si scrive β1=r(sY/sX)\beta_1 = r \cdot (s_Y / s_X), dove rr è il coefficiente di correlazione fra XX e YY e sX,sYs_X, s_Y sono le rispettive deviazioni standard. Poiché r1|r| \le 1, se misuri entrambe le variabili in unità standardizzate la pendenza vale esattamente rr, sempre meno ripida della bisettrice. Un padre alto due deviazioni standard sopra la media ha figli, in media, solo rr volte due deviazioni sopra: la “regressione verso la media” che Galton credeva una legge biologica è in realtà una conseguenza algebrica del fatto che la correlazione è imperfetta. Lo stesso meccanismo ricompare ogni volta che selezioni i casi estremi di una metrica e li rimisuri: i migliori prompt di un round tendono a rendere un po’ meno al round dopo, non perché “consumati”, ma per regressione verso la media.

C’è un’asimmetria che vale fissare subito, perché smentisce un’intuizione comune. La retta di YY su XX e la retta di XX su YY non sono la stessa retta scambiata di assi. La prima minimizza gli scarti verticali, la seconda quelli orizzontali: sono due ottimizzazioni diverse su due quantità diverse, e coincidono solo nel caso degenere in cui i punti sono perfettamente allineati. La regressione ha una direzione — c’è una variabile che si sceglie come risposta e una come predittore — e quella scelta non è simmetrica. Invertire risposta e predittore non inverte semplicemente la pendenza: produce un modello diverso. Questo è già un primo segnale che la regressione, pur partendo da una nuvola di punti simmetrica, porta dentro di sé un’asimmetria che il solo coefficiente di correlazione non ha.

Il primo angolo guarda nn punti in un piano. Il secondo fa una rotazione mentale che all’inizio spiazza ma poi rende tutto trasparente: invece di nn punti in due dimensioni, guarda pochi vettori in uno spazio a nn dimensioni. È lo stesso scambio di prospettiva — dai dati come collezione di punti ai dati come vettori — che rende leggibile gran parte dell’algebra lineare applicata al machine learning.

Raccogli tutte le nn osservazioni della risposta in un unico vettore y\mathbf{y} con nn componenti — un punto in uno spazio a nn dimensioni. I predittori diventano anch’essi vettori in quello stesso spazio: la colonna di tutti uni (che porta l’intercetta) e la colonna degli xix_i.

Tutte le combinazioni lineari di questi vettori — tutte le possibili β0(uni)+β1(x)\beta_0 \cdot (\text{uni}) + \beta_1 \cdot (\text{x}) — formano un sottospazio: un piano dentro lo spazio a nn dimensioni, chiamato lo spazio delle colonne di XX (in inglese column space). Ogni vettore di predizioni y^\hat{\mathbf{y}} che il modello può produrre, qualunque siano i coefficienti, vive obbligatoriamente dentro quel piano. Il piano è piccolo — due dimensioni — e lo spazio è enorme — nn dimensioni: il vettore y\mathbf{y} delle osservazioni reali quasi certamente non ci sta dentro. Da qui la domanda.

Adesso la domanda della regressione si riformula: fra tutti i punti del piano, qual è quello più vicino a y\mathbf{y}? La risposta non richiede calcolo, solo geometria elementare: il punto più vicino è la proiezione ortogonale di y\mathbf{y} sul piano. È la stessa intuizione del punto di un muro più vicino a una lampadina che gli sta di fronte: si trova lasciando cadere la perpendicolare.

E se y^\hat{\mathbf{y}} è la proiezione, il vettore che va da y^\hat{\mathbf{y}} a y\mathbf{y} — il vettore dei residui — è perpendicolare al piano. Perpendicolare al piano significa perpendicolare a ogni vettore che lo genera, cioè a ogni colonna di XX.

Questa singola condizione geometrica — i residui sono ortogonali alle colonne di XX — è tutto. Tradotta in algebra, “ortogonale” significa prodotto scalare nullo, e produce le equazioni normali XT(yXβ)=0X^T(\mathbf{y} - X\beta) = 0. Da qui esce, riordinando, l’intera soluzione OLS. Non abbiamo minimizzato nulla esplicitamente: abbiamo solo imposto un angolo retto. È uno dei casi in cui due strade — minimizzare una somma di quadrati, imporre un’ortogonalità — arrivano allo stesso identico posto, e la seconda è quella che si fa a mente.

Due conseguenze cadono fuori gratis da questo angolo. La prima: l’operazione che porta y\mathbf{y} nella sua proiezione y^\hat{\mathbf{y}} è una proiezione, e proiettare un vettore già proiettato non lo sposta — applicare l’operazione due volte dà lo stesso risultato di applicarla una volta. Questa proprietà (si chiama idempotenza) caratterizza tutte le proiezioni e tornerà utile nella diagnostica. La seconda: il triangolo formato da y\mathbf{y}, dalla sua proiezione e dalla media ha un angolo retto, quindi vale il teorema di Pitagora — in nn dimensioni. La lunghezza al quadrato di ”y\mathbf{y} meno la sua media” si spezza esattamente in due pezzi: la parte catturata dalle predizioni più la parte lasciata nei residui. Questa decomposizione, vista in coordinate, è la decomposizione della varianza che dà senso a R2R^2. Il teorema di Pitagora e R2R^2 sono la stessa cosa guardata da due lati.

L’angolo della proiezione spiega anche, senza calcoli, perché aggiungere un predittore non può mai peggiorare il fit sul campione. Aggiungere una colonna a XX significa aggiungere una dimensione al piano su cui si proietta. Proiettare su uno spazio più grande non può allontanare la proiezione dal punto y\mathbf{y}: nel peggiore dei casi la nuova dimensione è inutile e la proiezione resta dov’era, ma non può andare più lontano. Ecco perché R2R^2 non cala mai quando si aggiungono variabili — un fatto che la formula da sola fa sembrare misterioso e che la geometria rende ovvio. Ed ecco anche perché quel fatto è una trappola e non una virtù: un fit che migliora sempre, anche con rumore, non è un fit che misura la qualità del modello.

Terzo angolo: la retta come previsione media condizionata

Sezione intitolata “Terzo angolo: la retta come previsione media condizionata”

C’è un terzo modo di vedere la regressione, più probabilistico dei primi due, e indispensabile per capire il passaggio successivo. Immagina di poter raggruppare tutte le osservazioni che condividono lo stesso valore di XX — tutte le case di esattamente 70 mq — e di farne la media dei prezzi. Ripeti per ogni valore di XX. Ottieni, per ogni XX, un numero: la media di YY fra le unità con quel valore di XX. Questa è la funzione di regressione, E[YX]E[Y \mid X]: il valore atteso di YY condizionato a XX.

La regressione lineare è un’ipotesi su questa funzione: assume che E[YX]E[Y \mid X] sia una retta. Non assume che i punti stiano su una retta — i punti hanno il loro rumore e si disperdono attorno — ma che la loro media condizionata lo sia. Sotto questa luce, la retta OLS non insegue i punti: insegue la loro media locale. Il residuo ε\varepsilon non è un errore di misura nel senso di uno sbaglio: è la deviazione genuina di ogni singola unità dalla media del suo gruppo. Una casa di 70 mq più cara della media delle case di 70 mq non è un dato “sbagliato”: è una casa che ha qualcosa che XX non cattura.

Questo angolo rende immediato perché la regressione predittiva è una macchina di correlazione: E[YX]E[Y \mid X] è, per costruzione, una quantità che si legge osservando. Dice cosa aspettarsi per YY fra le unità che hanno un certo XX, non cosa accadrebbe a YY se a un’unità imponessimo quel valore di XX.

La retta della media condizionata è il primo gradino della scala causale, quello dell’associazione — e per salire agli altri serve qualcosa che la retta, da sola, non ha. È una distinzione che il capitolo riprenderà a fondo, ma vale fissarla qui: i tre angoli — minimi quadrati, proiezione, media condizionata — descrivono tutti la stessa retta, e nessuno dei tre, da solo, la rende uno strumento causale.

Il modello, scritto per intero, è

Y=β0+β1X+εY = \beta_0 + \beta_1 X + \varepsilon

dove β0\beta_0 è l’intercetta (il valore atteso di YY quando XX vale zero), β1\beta_1 è la pendenza (di quanto cambia YY atteso per un aumento unitario di XX), e ε\varepsilon è il termine di errore: tutto ciò che influenza YY ma non è catturato da XX.

Quel ε\varepsilon è ciò che rende la regressione un modello statistico e non solo una retta. Senza una dichiarazione su come si comporta ε\varepsilon puoi disegnare la retta, ma non puoi dire quanto fidartene: niente errori standard, niente intervalli, niente test. La retta è geometria; il modello è la retta più una teoria del rumore.

“Forma chiusa” significa che la soluzione si scrive con una formula esplicita e si calcola in un colpo, senza procedure iterative. È una proprietà rara e preziosa: la maggior parte dei modelli di machine learning non ce l’ha. Minimizzando la somma dei quadrati e annullando le derivate parziali rispetto a β0\beta_0 e β1\beta_1 si ottiene:

β1=i(xixˉ)(yiyˉ)i(xixˉ)2=Cov(X,Y)Var(X),β0=yˉβ1xˉ\beta_1 = \frac{\sum_i (x_i - \bar{x})(y_i - \bar{y})}{\sum_i (x_i - \bar{x})^2} = \frac{\text{Cov}(X, Y)}{\text{Var}(X)}, \qquad \beta_0 = \bar{y} - \beta_1 \bar{x}

In parole povere: la pendenza è la covarianza fra XX e YY normalizzata dalla varianza di XX — quanto le due variabili si muovono insieme, riscalato per quanto XX si muove da solo.

La seconda formula dice una cosa geometrica precisa: la retta passa sempre per il baricentro della nuvola, il punto (xˉ,yˉ)(\bar{x}, \bar{y}). Quale che sia la pendenza, la retta è ancorata al centro di massa dei dati.

Con un solo predittore si spiega poco. Il prezzo di una casa dipende dalla superficie, ma anche dal numero di stanze, dal piano, dalla distanza dal centro. Tutto ciò che la regressione semplice non cattura finisce nel termine di errore, gonfiandolo. La regressione multipla mette pp predittori nello stesso modello, trasferendo parte di quel rumore dentro la struttura spiegata:

Y=β0+β1X1+β2X2++βpXp+εY = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \dots + \beta_p X_p + \varepsilon

Scritta in forma compatta diventa y=Xβ+ε\mathbf{y} = X\beta + \varepsilon, dove XX è la matrice di disegno: una riga per osservazione, una colonna per predittore (più una colonna di uni per l’intercetta). La soluzione OLS è quella che il secondo angolo ha già anticipato:

β^=(XTX)1XTy\hat{\beta} = (X^T X)^{-1} X^T \mathbf{y}

Riga per riga: XTyX^T \mathbf{y} misura quanto ciascun predittore è allineato con la risposta; (XTX)1(X^T X)^{-1} corregge per le sovrapposizioni fra i predittori — se due colonne portano informazione simile, questo termine ridistribuisce il credito fra loro. Il prodotto è il vettore dei coefficienti che minimizza la somma dei quadrati.

L’inversa (XTX)1(X^T X)^{-1} esiste solo se nessun predittore è combinazione lineare esatta degli altri: questa condizione si chiama assenza di collinearità perfetta, e quando è violata la soluzione non è unica. Capita più spesso di quanto si creda — inserire per errore due variabili che misurano la stessa cosa, o tutte le categorie di una variabile categorica più l’intercetta — ed è la prima cosa da sospettare quando una libreria di regressione restituisce un errore di matrice singolare.

Qui sta una delle distinzioni più importanti del capitolo. Nella regressione semplice, β1\beta_1 è la pendenza della retta: di quanto cambia YY per un’unità di XX. Nella regressione multipla, βj\beta_j ha un significato più sottile e va enunciato con precisione: è la variazione attesa di YY per un aumento unitario di XjX_j tenendo costanti tutti gli altri predittori del modello.

Quel “tenendo costanti tutti gli altri” non è una clausola decorativa. Significa che βj\beta_j è un effetto parziale, l’effetto di XjX_j al netto di ciò che gli altri predittori già spiegano. La conseguenza pratica spiazza chi la incontra la prima volta: lo stesso predittore XjX_j può avere un coefficiente diverso — perfino di segno opposto — a seconda di quali altre variabili sono nel modello. Il coefficiente non è una proprietà di XjX_j; è una proprietà di XjX_j dato un certo set di compagni. Aggiungere o togliere una colonna ricalcola tutti i coefficienti.

Un esempio rende il punto tangibile. Regredendo il prezzo delle case sul solo numero di stanze si trova un coefficiente positivo e grande: più stanze, più caro. Aggiungendo al modello la superficie totale, il coefficiente delle stanze può crollare, azzerarsi, o diventare negativo.

Non è un errore di calcolo: a parità di superficie, una casa con più stanze ha stanze più piccole, e questo può abbassarne il valore. Il primo modello attribuiva alle stanze un merito che in realtà era della superficie con cui le stanze erano correlate. Nessuno dei due coefficienti è “quello vero” in assoluto: ciascuno risponde a una domanda diversa, e quale sia la domanda giusta dipende da cosa si vuole sapere.

C’è anche una scala da non dimenticare. Un coefficiente dipende dall’unità di misura del suo predittore: misurare la superficie in metri quadri o in centimetri quadri cambia βj\beta_j di un fattore diecimila, senza che il modello sia cambiato di una virgola. Per confrontare l’importanza relativa dei predittori si standardizzano le variabili — si portano tutte a media zero e deviazione standard uno — e si leggono i coefficienti standardizzati: solo allora la grandezza di βj\beta_j diventa confrontabile fra predittori misurati in unità diverse.

Quanto bene il modello segue i dati? La misura standard è il coefficiente di determinazione:

R2=1RSSTSSR^2 = 1 - \frac{\text{RSS}}{\text{TSS}}

dove RSS (residual sum of squares) è la somma dei quadrati dei residui — l’errore che il modello lascia — e TSS (total sum of squares) è la somma dei quadrati degli scarti di YY dalla sua media — la variabilità totale di YY. Il rapporto RSS/TSS\text{RSS}/\text{TSS} è la frazione di variabilità che il modello non spiega; R2R^2 è quindi la frazione che spiega. Vale 0 quando il modello non fa meglio del predire sempre la media, e 1 quando i residui sono tutti nulli e i punti stanno esattamente sull’iperpiano.

R2R^2 è comodo ma ha una trappola: non cala mai quando aggiungi un predittore, nemmeno se quel predittore è rumore puro. Dare al modello una colonna in più gli dà sempre un grado di libertà in più per inseguire i dati. Per questo esiste l’R2R^2 aggiustato, che sottrae una penalità proporzionale al numero di parametri: solo un predittore che migliora il fit più di quanto costa in gradi di libertà lo fa salire.

In ottica predittiva, però, anche l’R2R^2 aggiustato è un palliativo. La domanda giusta non è mai “quanto è alto R2R^2 sui dati di addestramento” ma “quanto è basso l’errore su dati che il modello non ha visto”.

Un R2R^2 vicino a 1 sul campione è perfettamente compatibile con un modello che fuori campione predice malissimo: è la definizione di overfitting, che ritroveremo fra poco. La misura onesta della bontà di un modello predittivo non si legge sul campione di addestramento — si legge su dati tenuti da parte apposta, e questa separazione tra train e validazione è uno dei lasciti che il machine learning ha dato anche alla regressione statistica classica.

Un’ultima precisazione su R2R^2, perché è fonte di equivoci. Il suo valore “buono” dipende interamente dal dominio. In fisica di laboratorio un R2R^2 sotto 0,990{,}99 può segnalare un errore sperimentale; in scienze sociali o nel comportamento degli utenti un R2R^2 di 0,30{,}3 può essere un risultato eccellente, perché il fenomeno è intrinsecamente rumoroso e nessun modello catturerà mai gran parte della sua variabilità. Non esiste una soglia universale: R2R^2 va letto contro ciò che è ragionevole aspettarsi per quel tipo di dati, non contro un ideale astratto di 1.

L’incertezza sui coefficienti: errori standard, intervalli, p-value

Sezione intitolata “L’incertezza sui coefficienti: errori standard, intervalli, p-value”

Fin qui β^\hat\beta è un numero. Ma è un numero calcolato su un campione, e un altro campione dalla stessa popolazione avrebbe dato un numero un po’ diverso.

La regressione come modello statistico — non come semplice retta — deve dire quanto quel numero è affidabile. Qui sta la differenza fra “ho tracciato la retta migliore” e “ho stimato un parametro con un’incertezza dichiarata”: la prima è una frase su un disegno, la seconda una frase sul mondo.

Ogni coefficiente stimato ha un errore standard: la deviazione standard della sua distribuzione campionaria, cioè di quanto β^j\hat\beta_j ballerebbe ripetendo l’esperimento su campioni diversi. L’errore standard cresce con la varianza del rumore σ2\sigma^2, cala con il numero di osservazioni, e — punto importante — cresce con la collinearità: se XjX_j è quasi una combinazione lineare degli altri predittori, la sua influenza è difficile da isolare e l’incertezza esplode.

Da errore standard e stima si costruiscono i due strumenti dell’inferenza, già visti nella Parte V. L’intervallo di confidenza è approssimativamente β^j\hat\beta_j più o meno due errori standard: l’intervallo di valori del coefficiente compatibili con i dati.

Il rapporto β^j\hat\beta_j diviso il suo errore standard è una statistica t, e da essa esce il p-value del coefficiente, che testa l’ipotesi nulla "βj=0\beta_j = 0", cioè “questo predittore, dati gli altri, non aggiunge nulla”. Un output di regressione è, per ogni riga, un mini test di ipotesi — ed è per questo che una regressione con venti predittori è anche, di soppiatto, una batteria di venti test, soggetta al problema dei test multipli.

E qui torna a mordere il legame con le assunzioni. Errore standard, intervallo e p-value sono calcolati assumendo omoschedasticità e indipendenza. Quando queste si rompono, la stima β^j\hat\beta_j resta a posto, ma l’incertezza dichiarata è sbagliata: intervalli troppo stretti, p-value troppo piccoli, predittori dichiarati significativi che non lo sono. Il p-value di una regressione è affidabile solo quanto le assunzioni che lo generano — ed è per questo che le quattro assunzioni della prossima sezione non sono pedanteria accademica, ma il fondamento di ogni conclusione che la regressione permette di trarre.

Le quattro assunzioni, e cosa succede quando si rompono

Sezione intitolata “Le quattro assunzioni, e cosa succede quando si rompono”

Il modello statistico, oltre alla retta, dichiara quattro cose sull’errore ε\varepsilon. Sono le assunzioni del modello lineare classico, e ognuna, quando si rompe, lascia un sintomo riconoscibile.

Linearità. Il valore atteso di YY è lineare nei parametri. Se la relazione vera è curva — rendimenti decrescenti, soglie, saturazioni — la retta sbaglia in modo sistematico: sovrastima in una zona, sottostima in un’altra, e nessun aggiustamento dell’incertezza ripara un modello che ha la forma sbagliata. Il sintomo è un pattern nei residui: graficati contro le predizioni, disegnano una U o una banana invece di una nuvola informe. Rimedio: trasformare le variabili (logaritmo, radice), aggiungere termini polinomiali, o passare a un modello non lineare.

Indipendenza degli errori. Gli errori di osservazioni diverse non sono correlati fra loro. Si rompe tipicamente con i dati nel tempo (l’errore di oggi somiglia a quello di ieri: autocorrelazione) e con i dati raggruppati (osservazioni dello stesso utente, dello stesso server).

Il sintomo è insidioso perché le stime dei coefficienti restano centrate sul valore giusto: a sbagliare sono gli errori standard, che risultano troppo piccoli. Conseguenza: intervalli di confidenza troppo stretti e test che dichiarano significativo ciò che non lo è. È una violazione frequente nei dati di sistemi reali, dove le richieste sono raramente indipendenti — arrivano a raffiche, dallo stesso utente, dallo stesso processo — e quasi sempre va corretta con errori standard raggruppati per cluster.

Omoschedasticità. La varianza dell’errore è costante, la stessa per ogni valore dei predittori. Il contrario — eteroschedasticità — è dispersione che cambia: i residui graficati contro le predizioni si aprono a imbuto.

È frequentissimo: la spesa varia di più fra i ricchi che fra i poveri, il tempo di risposta varia di più sotto carico alto. Quando si rompe, OLS resta non distorto ma non è più il più efficiente, e gli errori standard sono sbagliati. Rimedio: errori standard robusti (heteroskedasticity-consistent), o minimi quadrati pesati, che danno meno peso alle osservazioni più rumorose.

Normalità dei residui. Gli errori seguono una distribuzione normale. È la meno critica delle quattro, e va detto chiaramente perché è fonte di un equivoco diffuso.

Per ottenere i coefficienti OLS la normalità non serve. Per ottenere intervalli e test esatti su campioni piccoli serve. Ma per campioni grandi il teorema del limite centrale rende la distribuzione degli stimatori approssimativamente normale comunque, qualunque sia la forma di ε\varepsilon. La normalità dei residui è un requisito di rifinitura, non di fondamento — chi rifiuta una regressione perché i residui non passano un test di normalità su diecimila osservazioni sta applicando un controllo che a quel punto non serve più.

C’è un risultato che mette ordine fra le assunzioni: il teorema di Gauss-Markov. Dice che se valgono linearità, media zero degli errori, omoschedasticità e incorrelazione — e si noti che la normalità non è nella lista — allora OLS è BLUE: Best Linear Unbiased Estimator. Tra tutti gli stimatori che sono lineari nei dati e non distorti, OLS è quello a varianza minima.

È la giustificazione formale del perché, sotto quelle condizioni, vale la pena usare proprio OLS e non altro. Vale però leggere bene le clausole. “Lineare” e “non distorto” sono restrizioni: il teorema dice che OLS è il migliore dentro quella famiglia. Fuori da essa, uno stimatore distorto può fare di meglio in errore quadratico medio — ed è esattamente ciò che fa la ridge regression, che accetta un po’ di bias e per questo non contraddice Gauss-Markov: gioca un altro gioco.

C’è una gerarchia di gravità fra queste quattro violazioni, e conviene tenerla a mente. La linearità è strutturale: se è sbagliata, il modello è sbagliato, e nessuna correzione degli errori standard lo salva — va cambiata la forma del modello. L’indipendenza e l’omoschedasticità sono diverse: lasciano i coefficienti centrati sul valore giusto e corrompono solo l’incertezza dichiarata, quindi si curano correggendo gli errori standard senza buttare via il modello. La normalità è la più tenue: a campione grande è quasi irrilevante. Una buona prassi capovolge l’ordine in cui si guardano le cose: prima il grafico dei residui contro le predizioni per cercare curvatura e imbuto, poi gli errori standard, e solo per ultimo, e di rado, la normalità.

Modellare relazioni curve restando dentro la regressione lineare

Sezione intitolata “Modellare relazioni curve restando dentro la regressione lineare”

L’assunzione di linearità sembra una camicia di forza, ma è meno rigida di quanto il nome suggerisca. “Lineare” nella regressione lineare significa lineare nei parametri β\beta, non nelle variabili. Nulla vieta di costruire nuove colonne come trasformazioni di quelle esistenti — X2X^2, logX\log X, X\sqrt{X} — e di metterle nel modello: Y=β0+β1X+β2X2+εY = \beta_0 + \beta_1 X + \beta_2 X^2 + \varepsilon descrive una parabola, ma resta una regressione lineare, perché i β\beta entrano ancora in modo additivo e la soluzione è ancora (XTX)1XTy(X^T X)^{-1} X^T \mathbf{y} sulla nuova matrice. La regressione polinomiale non è un altro metodo: è OLS su colonne arricchite.

Lo stesso vale per le interazioni. Aggiungere al modello il prodotto di due predittori, X1X2X_1 \cdot X_2, permette di catturare il caso in cui l’effetto di X1X_1 dipende dal valore di X2X_2 — per esempio, la superficie influenza il prezzo di più nei quartieri centrali che in periferia.

Senza il termine di interazione il modello impone che ogni predittore agisca in modo indipendente dagli altri; aggiungendolo, quella rigidità cade. Il prezzo da pagare è che ogni colonna in più consuma un grado di libertà e avvicina l’overfitting: la flessibilità non è gratis, ed è esattamente la tensione che la prossima sezione affronta.

OLS è massima verosimiglianza con rumore gaussiano

Sezione intitolata “OLS è massima verosimiglianza con rumore gaussiano”

Torna ora la terza ragione, lasciata in sospeso, per cui si minimizzano i quadrati. Aggiungi al modello una dichiarazione esplicita: l’errore è gaussiano, εN(0,σ2)\varepsilon \sim N(0, \sigma^2). Allora ogni osservazione è una variabile normale centrata sulla retta: YiN(β0+β1xi,σ2)Y_i \sim N(\beta_0 + \beta_1 x_i, \sigma^2).

La verosimiglianza dei dati è la probabilità (densità) di osservare proprio quei yiy_i, vista come funzione dei parametri. È un capovolgimento di prospettiva: di solito i parametri sono fissi e i dati variabili, qui i dati sono fissi — sono quelli osservati — e si cerca quale valore dei parametri li rende più plausibili.

Per dati indipendenti la verosimiglianza è il prodotto delle densità normali; passando al logaritmo, il prodotto diventa somma, e la log-verosimiglianza prende la forma

(β)=costante12σ2i(yiβ0β1xi)2\ell(\beta) = \text{costante} - \frac{1}{2\sigma^2} \sum_i (y_i - \beta_0 - \beta_1 x_i)^2

Guarda cosa contiene: a parte una costante e un fattore positivo, dentro c’è esattamente la somma dei quadrati dei residui, con il segno meno. Massimizzare (β)\ell(\beta) rispetto a β\beta è quindi, parola per parola, minimizzare la somma dei quadrati. OLS è la stima di massima verosimiglianza sotto l’ipotesi di rumore gaussiano.

Questa non è un’analogia: è un’equivalenza, dimostrabile e dimostrata — appartiene alla classe più forte delle affermazioni, quella dei teoremi. OLS e il metodo della massima verosimiglianza non sono due cose che si somigliano; sono la stessa procedura, applicata a un modello con errori normali. La somma dei quadrati smette di essere una scelta comoda e diventa la conseguenza di un’ipotesi probabilistica precisa.

L’equivalenza ha un valore che va oltre l’eleganza. Spiega quando OLS è la cosa giusta da fare e quando no. Se il rumore è gaussiano, minimizzare i quadrati è ottimo. Se il rumore ha code pesanti — outlier frequenti — la verosimiglianza giusta non è gaussiana, e minimizzare i quadrati smette di essere la scelta di massima verosimiglianza: conviene una loss più robusta, che pesa meno gli scarti grandi. La somma dei quadrati non è sacra; è la risposta corretta a una domanda specifica sul rumore. Questo è il ponte verso maximum-likelihood (in preparazione), dove lo stesso principio si applica a modelli con rumore non gaussiano e produce, di volta in volta, loss diverse — la cross-entropy della logistica è solo il caso successivo.

Regressione logistica: quando l’outcome è binario

Sezione intitolata “Regressione logistica: quando l’outcome è binario”

Molti outcome che interessano non sono numeri su una scala continua, ma esiti sì/no: l’utente ha convertito o no, la transazione è fraudolenta o no, la richiesta è andata in timeout o no.

Se provi a tirare una retta su un YY che vale solo 0 o 1, la retta tradisce subito: predice valori negativi e valori sopra 1, che come probabilità non hanno senso, e l’errore di una variabile a due valori non è nemmeno lontanamente gaussiano. La regressione lineare, qui, non è solo imprecisa: ha la forma sbagliata per il problema.

La regressione logistica risolve il problema senza modellare YY direttamente: modella la probabilità p=P(Y=1X)p = P(Y = 1 \mid X). Riprende qui l’angolo della media condizionata: per una variabile 0/1, la media condizionata E[YX]E[Y \mid X] è proprio la probabilità P(Y=1X)P(Y = 1 \mid X), e modellare quella media è modellare quella probabilità.

Il trucco è non mettere pp sulla retta — pp vive nell’intervallo [0,1][0,1], la retta no — ma mettervi una sua trasformazione che spazia su tutta la retta reale. Quella trasformazione è il logit, il logaritmo degli odds:

logp1p=β0+β1X1++βpXp\log \frac{p}{1-p} = \beta_0 + \beta_1 X_1 + \dots + \beta_p X_p

Gli odds p/(1p)p/(1-p) sono il rapporto fra la probabilità che l’evento accada e quella che non accada; il loro logaritmo va da meno infinito a più infinito, e quindi può stare comodamente su una combinazione lineare. Invertendo la relazione si ottiene p=σ(β0+β1X1+)p = \sigma(\beta_0 + \beta_1 X_1 + \dots), dove σ\sigma è la funzione sigmoide, la curva a S che schiaccia qualsiasi numero reale dentro (0,1)(0,1).

I coefficienti si leggono in scala di odds: eβje^{\beta_j} è il fattore per cui gli odds vengono moltiplicati a ogni aumento unitario di XjX_j. Un βj\beta_j positivo alza la probabilità, uno negativo la abbassa, uno nullo la lascia invariata. La curva p(X)p(X) non è una retta: è ripida nel mezzo, dove pp è vicina a 0,50{,}5, e quasi piatta agli estremi, dove pp è vicina a 0 o a 1. Questo riflette un’intuizione corretta — spostare la probabilità di conversione dal 50% al 55% richiede meno “spinta” che spostarla dal 95% al 99,9%.

A differenza della regressione lineare, qui non c’è forma chiusa: la verosimiglianza della logistica non si massimizza con un sistema lineare, e i coefficienti si stimano con un metodo iterativo. La loss che si minimizza — la log-verosimiglianza negativa — è esattamente la cross-entropy, la stessa funzione di costo dei classificatori delle reti neurali. Non per coincidenza: l’ultima sezione di questa parte spiega perché.

Un avvertimento sulla parola “regressione” nel nome. La regressione logistica, nonostante l’etichetta, si usa quasi sempre come classificatore: si fissa una soglia — tipicamente 0,50{,}5 — e si predice la classe 1 se pp la supera. Ma il modello, sotto, non produce una classe: produce una probabilità. Buttare via quella probabilità per tenere solo la classe è spesso uno spreco. In molti contesti — punteggio di rischio, ordinamento di candidati, decisioni con costi asimmetrici fra falso positivo e falso negativo — la probabilità calibrata vale più dell’etichetta secca, e la soglia giusta non è 0,50{,}5 ma quella che minimizza il costo atteso reale.

Overfitting e regolarizzazione: il ponte verso il machine learning

Sezione intitolata “Overfitting e regolarizzazione: il ponte verso il machine learning”

Quando i predittori sono molti — decine, centinaia — o fortemente collineari fra loro, OLS comincia a comportarsi male. La matrice XTXX^T X diventa quasi singolare, e (XTX)1(X^T X)^{-1} amplifica il rumore: i coefficienti diventano enormi, instabili, di segno ballerino.

Il modello insegue ogni fluttuazione del campione di addestramento — ogni puntino rumoroso diventa una caratteristica da spiegare — e poi, su dati nuovi che hanno un rumore diverso, crolla. È l’overfitting, e qui la regressione tocca il problema centrale del machine learning, lo stesso del trade-off bias-varianza: un modello troppo flessibile ha varianza alta, cambia molto da campione a campione, e generalizza male proprio perché si è adattato troppo bene a un campione particolare.

La regolarizzazione è il rimedio: si aggiunge alla somma dei quadrati una penalità sulla taglia dei coefficienti, in modo che il modello paghi un prezzo per ogni coefficiente grande. Due varianti dominano.

La ridge regression (Hoerl e Kennard, 1970) aggiunge una penalità sulla somma dei quadrati dei coefficienti: minimizza RSS+λjβj2\text{RSS} + \lambda \sum_j \beta_j^2. Il parametro λ\lambda regola quanto stringere: a λ=0\lambda = 0 si torna a OLS, per λ\lambda crescente i coefficienti si comprimono verso zero senza mai raggiungerlo.

La ridge ha ancora una forma chiusa, β^=(XTX+λI)1XTy\hat\beta = (X^T X + \lambda I)^{-1} X^T \mathbf{y}, e quel λI\lambda I aggiunto alla diagonale rende la matrice sempre invertibile: la regolarizzazione cura, letteralmente, la quasi-singolarità. Non è un caso che il metodo si chiami “ridge”, cresta: λI\lambda I aggiunge una cresta lungo la diagonale della matrice, e quella cresta è ciò che la tiene lontana dalla degenerazione.

Il lasso (Tibshirani, 1996) penalizza invece la somma dei valori assoluti: RSS+λjβj\text{RSS} + \lambda \sum_j |\beta_j|. La differenza sembra minima ma cambia tutto: la penalità in valore assoluto spinge molti coefficienti a diventare esattamente zero. Il lasso non solo restringe, seleziona: butta via i predittori inutili e tiene un modello sparso e leggibile.

La ragione geometrica per cui l’L1 azzera e l’L2 no merita una riga. La regione ammessa dalla penalità L1 è un diamante con gli spigoli sugli assi; quella dell’L2 è una sfera liscia. Il minimo vincolato tende a cadere su uno spigolo del diamante — e uno spigolo, per definizione, ha alcune coordinate esattamente nulle. La sfera, non avendo spigoli, lascia tutti i coefficienti diversi da zero. La sparsità del lasso non è un trucco numerico: è la forma del vincolo.

Entrambe le tecniche fanno lo stesso patto: accettano un po’ di bias — i coefficienti non sono più centrati sul valore vero — in cambio di molta varianza in meno. Su dati nuovi, il modello regolarizzato sbaglia mediamente meno di OLS, perché l’errore di previsione fuori campione dipende da entrambi i termini, e ridurre molto la varianza ripaga del poco bias introdotto.

È il patto su cui poggia tutto il machine learning moderno. Ed è lo stesso patto, sotto altra forma, di MAP e prior bayesiani: la penalità sui coefficienti equivale a dichiarare in anticipo che coefficienti grandi sono improbabili. La ridge è la stima MAP con un prior gaussiano sui coefficienti, il lasso quella con un prior di Laplace, come svilupperemo in map-bayesiano (in preparazione). Regolarizzare e mettere un prior non sono due idee imparentate: sono la stessa idea in due notazioni.

C’è un ultimo ponte, ed è quello che chiude il capitolo. La regressione lineare è, vista da un ingegnere del machine learning, il neurone più semplice possibile: prende degli input, li moltiplica per dei pesi (i coefficienti), li somma. La regressione logistica è lo stesso neurone con una funzione di attivazione sigmoide attaccata in uscita. Una rete neurale è — letteralmente — molti di questi neuroni impilati in strati.

La differenza fra una regressione e una rete profonda non è di natura, è di scala e di composizione. La rete impila molte unità lineari e le intervalla con attivazioni non lineari, e questo le permette di rappresentare relazioni che una singola retta non cattura. Ma il mattone resta lo stesso: pesi, somma, attivazione. Chi ha capito la regressione logistica ha capito il neurone, e chi ha capito il neurone ha il primo strato di comprensione di qualsiasi rete.

E quando i predittori sono tanti e la forma chiusa (XTX)1(X^T X)^{-1} diventa troppo costosa o instabile da calcolare, si abbandona la soluzione esplicita e si scende verso il minimo a piccoli passi con la discesa del gradiente: la stessa procedura iterativa che addestra i modelli con miliardi di parametri. Forma chiusa e discesa del gradiente sono due strade per lo stesso minimo della stessa loss; capire la regressione è già avere in mano la grammatica con cui si addestra una rete.

Cinque case, con superficie in metri quadri e prezzo in migliaia di euro: (50,200)(50, 200), (60,230)(60, 230), (70,260)(70, 260), (80,290)(80, 290), (95,330)(95, 330). La superficie media è xˉ=71\bar{x} = 71, il prezzo medio yˉ=262\bar{y} = 262. Applicando le formule della regressione semplice si ottiene una pendenza β12,9\beta_1 \approx 2{,}9 e un’intercetta β056\beta_0 \approx 56: il modello stima prezzo56+2,9mq\text{prezzo} \approx 56 + 2{,}9 \cdot \text{mq}.

La lettura: ogni metro quadro in più vale circa 2,9 mila euro. Una casa di 75 mq viene predetta a 56+2,97527456 + 2{,}9 \cdot 75 \approx 274 mila euro. Calcolando RSS e TSS si trova un R2R^2 attorno a 0,990{,}99: in questo campione minuscolo e pulito la superficie spiega quasi tutta la variabilità del prezzo.

Quel R2R^2 così alto, però, non va preso come buona notizia: cinque osservazioni e due parametri lasciano al modello pochissimo spazio per sbagliare, ed è facile fittare quasi perfettamente. Su un campione reale di migliaia di case, con quartieri, piani e stati di manutenzione diversi, R2R^2 sarebbe molto più basso — ed è lì che si aggiungerebbero altri predittori, passando alla regressione multipla. Un R2R^2 vicino a 1 su un campione minuscolo è più un sospetto che una conferma.

Esempio in codice: forma chiusa contro discesa del gradiente

Sezione intitolata “Esempio in codice: forma chiusa contro discesa del gradiente”

Le due strade verso lo stesso minimo, una accanto all’altra:

import numpy as np
# X include la colonna di uni per l'intercetta; y e il vettore risposta.
# Strada 1: forma chiusa, le equazioni normali in una riga.
beta_chiusa = np.linalg.solve(X.T @ X, X.T @ y)
# Strada 2: discesa del gradiente, iterativa.
beta = np.zeros(X.shape[1])
lr, n = 0.01, len(y)
for _ in range(10_000):
residui = X @ beta - y
gradiente = (2 / n) * (X.T @ residui) # gradiente della somma dei quadrati
beta -= lr * gradiente
# beta converge agli stessi valori di beta_chiusa.

np.linalg.solve risolve direttamente le equazioni normali — preferibile a invertire esplicitamente XTXX^T X, numericamente più stabile.

Il ciclo fa la stessa cosa per approssimazioni: a ogni passo calcola la pendenza della loss e si muove in discesa. Su questo problema la forma chiusa vince nettamente; quando i predittori sono milioni, la forma chiusa diventa impraticabile e resta solo la seconda strada.

Vale la pena notare il costo. La forma chiusa richiede di costruire e invertire XTXX^T X, una matrice p×pp \times p: il costo cresce con il cubo del numero di predittori. Con cento predittori è istantaneo, con un milione è fuori questione — la matrice da sola non sta in memoria.

La discesa del gradiente, invece, a ogni passo fa solo prodotti matrice-vettore, che scalano linearmente, e non costruisce mai la matrice p×pp \times p. È questa, e non un’ideologia, la ragione per cui il machine learning su larga scala ha abbandonato la forma chiusa: non perché sia “meno moderna”, ma perché su parametri a nove cifre semplicemente non si calcola. Le due strade portano allo stesso punto; cambia quale delle due è percorribile.

Una squadra testa una nuova schermata di onboarding. L’outcome è binario: l’utente ha completato la registrazione (1) o no (0). Un semplice confronto fra la percentuale di conversione delle due varianti darebbe già una risposta, ma grezza.

Una regressione logistica con predittori variante (vecchia/nuova), dispositivo e paese stima invece quanto la nuova schermata sposta la probabilità di conversione, controllando per il fatto che mobile e desktop convertono in modo diverso e che i paesi non sono distribuiti uguali fra i due gruppi.

Il coefficiente della variante, esponenziato, dà l’odds-ratio: un eβ=1,15e^{\beta} = 1{,}15 significa che la nuova schermata moltiplica per 1,15 gli odds di conversione, a parità di dispositivo e paese. Inserire i predittori di disturbo nel modello riduce la varianza della stima dell’effetto e protegge da sbilanciamenti del campione. Resta però un avvertimento, che la prossima sezione sviluppa: la lettura causale di quel coefficiente regge perché i dati vengono da un test randomizzato. Sugli stessi dati raccolti in modo osservazionale, lo stesso numero significherebbe molto meno.

Esempio di regolarizzazione: cento predittori, trenta osservazioni

Sezione intitolata “Esempio di regolarizzazione: cento predittori, trenta osservazioni”

Un caso che mostra la regolarizzazione all’opera. Vuoi prevedere il tempo di esecuzione di una funzione a partire da cento metriche statiche del codice — righe, profondità di annidamento, numero di chiamate, e così via — ma hai solo trenta funzioni misurate. Con più predittori che osservazioni, OLS è letteralmente indeterminato: XTXX^T X non è invertibile, esistono infinite rette che azzerano tutti i residui sul campione. Ognuna ha R2=1R^2 = 1 e nessuna predice nulla su una funzione nuova.

Qui la ridge e il lasso non sono un raffinamento, sono ciò che rende il problema risolvibile. La ridge, aggiungendo λI\lambda I, ripristina l’invertibilità e produce una soluzione unica e stabile. Il lasso fa di più: con cento predittori di cui forse cinque davvero rilevanti, azzera i novantacinque inutili e restituisce un modello sparso, leggibile, che dice anche quali metriche contano.

Il parametro λ\lambda si sceglie per validazione incrociata — si prova una griglia di valori e si tiene quello con l’errore minore su dati tenuti da parte. È il passaggio in cui la regressione adotta in pieno il vocabolario del machine learning: train, validazione, tuning di un iperparametro. Lo stesso identico schema, su scala diversa, regola l’addestramento dei modelli più grandi.

La regressione è la baseline obbligatoria di qualsiasi progetto di machine learning. Prima di addestrare una rete neurale conviene sempre tirare una regressione regolarizzata: dice quanto segnale lineare c’è davvero nei dati.

Se la rete profonda batte di poco la regressione lasso, il costo, la lentezza e l’opacità della rete sono difficili da giustificare. La regressione fissa l’asticella che ogni modello più complesso deve superare in modo convincente. Saltare questo passo è uno degli errori più comuni: si addestra subito il modello sofisticato, lo si vede “funzionare”, e non ci si accorge che una regressione di dieci righe avrebbe fatto altrettanto bene a una frazione del costo. La baseline non è una formalità, è il metro con cui si misura se la complessità sta pagando.

Nell’analisi degli esperimenti la regressione con covariate è lo strumento standard per stimare l’effetto di un trattamento riducendo la varianza: inserire predittori che spiegano parte della variabilità dell’outcome stringe l’intervallo di confidenza attorno all’effetto, senza distorcere la stima — purché i dati vengano da un disegno randomizzato. È così che si analizza un A/B test fatto bene: non con un semplice confronto di medie, ma con una regressione che assorbe il rumore prevedibile e lascia emergere il segnale del trattamento.

Nei domini regolati — credito, assicurazioni, sanità, giustizia — la regressione logistica è spesso preferita a modelli più accurati ma opachi, proprio perché i suoi coefficienti sono leggibili e auditabili.

Quando una decisione automatica deve essere spiegata a un cliente o difesa davanti a un’autorità, un odds-ratio per ogni variabile è una forma di trasparenza che una rete profonda non offre: si può dire al cliente quale variabile ha pesato e in che direzione. È un caso in cui l’interpretabilità vale più di qualche punto di accuratezza — e in cui la scelta del modello non è solo tecnica, ma anche legale ed etica.

Infine la diagnostica: i residui di una regressione sono uno strumento di esplorazione, non solo di validazione. Un pattern sistematico nei residui segnala una variabile mancante, una non linearità ignorata, un sottogruppo che il modello tratta male. Guardare i residui prima di guardare R2R^2 è un’abitudine che separa chi usa la regressione da chi la subisce.

C’è poi un uso meno ovvio ma frequente nei sistemi AI: la regressione come modello di monitoraggio. Un servizio in produzione genera di continuo coppie (caratteristiche della richiesta, latenza osservata). Una regressione aggiornata su questi dati dà una latenza attesa per ogni richiesta; quando la latenza reale si scosta dalla previsione in modo sistematico — i residui smettono di essere centrati su zero — il modello sta segnalando che qualcosa è cambiato: un deploy, un degrado di una dipendenza, uno spostamento del traffico. Qui la regressione non serve a predire con precisione, serve a rendere visibile la deviazione dalla normalità. È lo stesso ruolo che gioca nell’analisi dei costi di inferenza, dove modella il prezzo atteso di una chiamata in funzione della lunghezza del prompt e della cache, e i residui grandi sono le chiamate da indagare.

La regressione si rompe in modi che vale la pena conoscere uno per uno, perché quasi tutti hanno la stessa radice: la sua forma — semplice, additiva, leggibile — invita a chiederle più di quanto possa dare.

I limiti che seguono non sono casi di scuola: sono i modi concreti in cui una regressione, in produzione o in un’analisi, finisce per dire qualcosa di falso con apparente sicurezza.

La trappola di R2R^2. Un R2R^2 alto non è un certificato di qualità. Può nascondere una non linearità grossolana (i punti seguono una curva, la retta li attraversa con R2R^2 decente ma residui a U), può essere puro overfitting (con abbastanza predittori R2R^2 arriva a 1 anche su dati casuali), e in ogni caso misura il fit nel campione, non la capacità predittiva su dati nuovi né — soprattutto — la validità causale. Un modello con R2=0,95R^2 = 0{,}95 può essere un pessimo consigliere per qualsiasi decisione.

Estrapolazione. Il modello è affidabile solo nell’intervallo di valori dei predittori che ha visto. Una regressione addestrata su case fra 50 e 95 mq non sa nulla di un palazzo di 500 mq: continuerà a tirare la retta, restituirà un numero, e quel numero sarà probabilmente assurdo. La retta non ha modo di sapere che fuori dal suo intervallo la relazione cambia forma.

Il pericolo dell’estrapolazione è che è silenziosa. Il modello non protesta, non segnala, non restituisce un’incertezza più grande quando lo si interroga lontano dai dati: produce un numero con la stessa apparente sicurezza che avrebbe nel cuore del campione. Estrapolare è chiedere al modello una predizione su un mondo che non ha mai osservato, e l’unica difesa è sapere dove finiscono i dati e diffidare di ogni previsione oltre quel confine.

Outlier e punti di leva. OLS minimizza i quadrati, e il quadrato amplifica gli scarti grandi: un singolo punto anomalo, specie se lontano anche sull’asse dei predittori (un punto di leva, high-leverage point), può ruotare l’intera retta. Un valore inserito male, una misura sbagliata, un caso eccezionale, e la stima di tutti i coefficienti ne risente.

La diagnostica grafica — guardare lo scatterplot, guardare i residui — è l’unica difesa, ed è per questo che il quartetto di Anscombe, quattro dataset con la stessa regressione e forme opposte, è l’avvertimento canonico. Quando gli outlier non sono errori da correggere ma parte genuina del fenomeno, la risposta non è ignorarli: è cambiare loss, passando a una regressione robusta che li pesa meno — il che, come si è visto, equivale a cambiare l’ipotesi sul rumore.

Collinearità. Quando due predittori portano quasi la stessa informazione, OLS non sa a chi attribuire l’effetto comune e lo divide in modo instabile: i singoli coefficienti diventano enormi, di segno imprevedibile, con errori standard altissimi — anche se il modello nel complesso predice bene. Si arriva al paradosso di un modello con R2R^2 alto in cui nessun singolo coefficiente risulta significativo. La collinearità non rompe la predizione, rompe l’interpretazione dei coefficienti.

Numero di osservazioni insufficiente. Stimare pp coefficienti con nn osservazioni vicine a pp è chiedere troppo: il modello ha quasi tanti gradi di libertà quanti dati, e li usa per memorizzare il campione invece di catturarne la struttura. Una regola pratica grezza chiede almeno una decina di osservazioni per predittore prima di leggere i coefficienti con qualche fiducia; sotto quella soglia, le stime ballano da un campione all’altro. Quando nn è minore di pp la situazione passa da rischiosa a degenere: la soluzione OLS non esiste nemmeno, e solo la regolarizzazione rende il problema ben posto.

Selezione del campione e censura. La regressione descrive la relazione nei dati che ha visto. Se il campione è raccolto in modo selettivo — solo i clienti che hanno completato l’acquisto, solo le richieste andate a buon fine — la retta stimata vale per quella sottopopolazione e non per tutte. Un modello di prezzo addestrato solo sulle case effettivamente vendute ignora quelle rimaste invendute, che sono invendute proprio perché prezzate male: la relazione che il modello impara è sistematicamente distorta dal filtro che ha generato il campione. È il bias di campionamento che riemerge dentro la regressione, e nessun R2R^2 alto lo segnala.

Il salto causale: il fraintendimento più grave. La forma della regressione — un coefficiente per variabile — suggerisce che βj\beta_j sia “l’effetto di XjX_j su YY”. Lo è solo a condizioni che fuori da un esperimento quasi mai si verificano. Mettere una variabile fra i predittori non equivale a “controllarla” in senso causale.

Se la variabile inserita è un confondente — una causa comune di XjX_j e di YY — inserirla aiuta. Ma se è un collider — un effetto comune di XjX_j e di YY — inserirla introduce una distorsione che senza di essa non c’era, creando un’associazione spuria. E se è un mediatore — un anello attraverso cui XjX_j agisce su YY — inserirla cancella proprio l’effetto che si voleva misurare.

Aggiungere predittori “per sicurezza” non rende quindi il modello più causale: lo può rendere più sbagliato. Quali variabili includere è una decisione che richiede un modello causale esplicito — un’idea di chi causa cosa, fatta prima di guardare i dati — sviluppata in correlazione e causalità, e non si risolve guardando R2R^2 né nessun’altra statistica calcolata sul campione.

La parola “spiegata”. Si dice abitualmente che il modello “spiega” una frazione della varianza. È un’espressione tecnica innocua finché resta tecnica, ma scivola con facilità verso un senso causale che non ha.

Una regressione predittiva, addestrata su dati osservazionali, è una macchina di correlazione: cattura quali pattern accompagnano YY, senza distinguere quelli che lo causano da quelli che gli si accompagnano per una causa comune. “Spiegare la varianza” significa “ridurre l’errore di previsione”, non “individuare le cause”. Confondere i due sensi è ciò che trasforma un buon modello predittivo in un pessimo consigliere per le decisioni — l’errore del capitolo precedente, ripetuto con la patina di rigore che la formula gli presta.

Significatività contro rilevanza. Un’ultima trappola, sottile e diffusa. Con un campione abbastanza grande, quasi ogni coefficiente diventa “statisticamente significativo”: il p-value scende sotto 0,050{,}05 anche per effetti minuscoli, perché l’errore standard si restringe con nn. Ma significativo non vuol dire importante. Un coefficiente può essere significativo e descrivere un effetto talmente piccolo da non avere alcun valore pratico. La domanda “il coefficiente è diverso da zero?” e la domanda “il coefficiente è abbastanza grande da contare?” sono diverse, e solo la seconda interessa davvero chi deve decidere. Guardare il p-value senza guardare la grandezza del coefficiente — e l’intervallo di confidenza attorno ad esso — è leggere metà del risultato.

  • Correlazione e causalità — la regressione predittiva vive interamente sul lato del “vedere”: leggere i suoi coefficienti come effetti causali è l’errore che quel capitolo smonta, qui riprodotto con una forma matematica che lo rende più seducente.
  • Test di ipotesi — ogni coefficiente di regressione ha un suo p-value, che testa l’ipotesi nulla “questo coefficiente vale zero”: la regressione è un generatore industriale di test di ipotesi.
  • Intervalli di confidenza — accanto a ogni β^\hat\beta c’è un intervallo; la sua ampiezza è ciò che le violazioni di omoschedasticità e indipendenza distorcono.
  • Stima puntualeβ^\hat\beta è uno stimatore come gli altri: ha bias, varianza, consistenza, e Gauss-Markov ne caratterizza l’ottimalità.
  • Legge dei grandi numeri e teorema del limite centrale — il CLT è la ragione per cui la normalità dei residui è quasi superflua a campione grande.
  • Discesa del gradiente — l’alternativa iterativa alla forma chiusa, l’unica strada quando i parametri sono milioni.
  • Bias e varianza — ridge e lasso sono il trade-off bias-varianza reso operativo: un po’ di bias contro molta varianza.
  • Prodotto scalare e vettori e spazi — la geometria della proiezione ortogonale: le equazioni normali sono una condizione di ortogonalità.
  • Softmax e sigmoide — la funzione che trasforma la regressione lineare in regressione logistica.
  • Entropia e cross-entropy — la loss della regressione logistica è la cross-entropy, la stessa dei classificatori neurali.
  • maximum-likelihood (in preparazione) — OLS è la stima di massima verosimiglianza sotto rumore gaussiano; il prossimo capitolo generalizza il principio.
  • map-bayesiano (in preparazione) — ridge e lasso sono stime MAP con un prior, rispettivamente gaussiano e di Laplace, sui coefficienti.
  • statistica-e-ml (in preparazione) — la regressione lineare come neurone elementare è il punto in cui statistica e machine learning diventano la stessa disciplina.
  • A.-M. Legendre, Nouvelles methodes pour la determination des orbites des cometes (1805) e C. F. Gauss, Theoria motus corporum coelestium (1809) — le due pubblicazioni fondative del metodo dei minimi quadrati: la prima lo presenta come problema algebrico, la seconda gli dà la lettura probabilistica.
  • A. E. Hoerl, R. W. Kennard, “Ridge Regression: Biased Estimation for Nonorthogonal Problems”, Technometrics (1970) — il paper che introduce la ridge regression e mostra che una dose controllata di bias abbassa l’errore quadratico medio.
  • R. Tibshirani, “Regression Shrinkage and Selection via the Lasso”, Journal of the Royal Statistical Society B (1996) — il paper fondativo del lasso, dove la penalità L1 unisce selezione di variabili e stabilità.
  • G. James, D. Witten, T. Hastie, R. Tibshirani, An Introduction to Statistical Learning (Springer) — trattazione accessibile di regressione lineare, logistica e regolarizzazione, con il ponte esplicito verso il machine learning; disponibile gratuitamente online.
  • Voce Ordinary least squares e Gauss-Markov theorem su Wikipedia — riferimenti rapidi e affidabili per le formule (equazioni normali, forma chiusa, R2R^2), l’enunciato del teorema BLUE e la lista delle assunzioni del modello lineare classico.