Regressione lineare: esercizi con soluzioni
Questi esercizi ripassano la serie sulla regressione lineare: la retta e i minimi quadrati, la forma matriciale, la discesa del gradiente e quanto fidarsi dei minimi quadrati. Sono in ordine di difficoltà, e quasi tutti si fanno con carta e penna.
Ogni soluzione è nascosta: aprila solo dopo averci provato davvero. Per farti un'intuizione prima di partire, o per controllare un risultato, c'è anche il lab interattivo sulla regressione lineare: muovi la retta a mano e aggiungi punti per vedere come cambia.
Conti a mano
Un sito misura il tempo di caricamento di quattro pagine di dimensioni diverse:
| Dimensione (MB) | Tempo (s) |
|---|---|
| 1 | 2 |
| 2 | 3 |
| 3 | 5 |
| 4 | 6 |
Esercizio 1: la retta
Calcola con i minimi quadrati la pendenza e l'intercetta della retta . Che significato hanno i due numeri in questo contesto?
Soluzione
Le medie sono e .
| prodotto | |||
|---|---|---|---|
| −1,5 | −2 | 3 | 2,25 |
| −0,5 | −1 | 0,5 | 0,25 |
| 0,5 | 1 | 0,5 | 0,25 |
| 1,5 | 2 | 3 | 2,25 |
| somma | 7 | 5 |
- s/MB: ogni megabyte in più costa 1,4 secondi di caricamento, cioè la banda.
- s: il tempo per una pagina di zero byte, cioè la latenza fissa (DNS, connessione, prima risposta del server). A differenza del prezzo delle case, qui l'intercetta ha un significato fisico.
Esercizio 2: quanto è buona?
Per la retta dell'esercizio 1 calcola i residui, l'errore quadratico medio (MSE) e l'R².
Soluzione
| (MB) | (s) | (s) | residuo (s) | residuo² (s²) |
|---|---|---|---|---|
| 1 | 2 | 1,9 | 0,1 | 0,01 |
| 2 | 3 | 3,3 | −0,3 | 0,09 |
| 3 | 5 | 4,7 | 0,3 | 0,09 |
| 4 | 6 | 6,1 | −0,1 | 0,01 |
1. I residui. Per ogni pagina si calcola la previsione della retta e la si sottrae al tempo vero. Per la prima: s, quindi il residuo è s. Le altre righe della tabella si ottengono allo stesso modo.
2. La somma dei residui.
Non è un caso. Nel minimo la derivata dell'MSE rispetto all'intercetta è zero, e quella derivata è proprio la somma degli errori: (la formula è nel primo articolo). Quindi, quando il modello ha l'intercetta, i residui dei minimi quadrati sommano sempre a zero. Per lo stesso motivo la somma dei residui non serve a misurare quanto è buona una retta: vale zero anche quando la retta è pessima.
3. L'MSE. Si sommano i quadrati dei residui, ultima colonna della tabella, e si divide per il numero di pagine, :
L'unità è s² perché i residui, in secondi, sono stati elevati al quadrato. La radice, s, torna in secondi: la retta sbaglia di circa due decimi di secondo.
4. Il termine di confronto: prevedere sempre la media. Per dire se 0,20 s² è tanto o poco serve un confronto. Il modello più semplice possibile ignora la dimensione della pagina e prevede sempre il tempo medio:
I suoi errori sono molto più grandi:
| (s) | residuo (s) | residuo² (s²) |
|---|---|---|
| 2 | −2 | 4 |
| 3 | −1 | 1 |
| 5 | +1 | 1 |
| 6 | +2 | 4 |
| somma | 10 |
5. L'R². Confronta l'errore della retta con quello della media, misurati entrambi come somma dei quadrati dei residui:
Si legge così: la retta lascia solo il 2% dell'errore che si avrebbe prevedendo sempre la media, cioè spiega il 98% della variabilità dei tempi. Dividendo s² per s² l'unità sparisce: l'R² è un numero puro, e per questo si può confrontare anche tra problemi con unità diverse. Si ottiene lo stesso risultato confrontando gli MSE invece delle somme, perché entrambi vengono divisi per lo stesso : .
Esercizio 3: previsioni
Usa la retta per stimare il tempo di caricamento di una pagina da 2,5 MB e di una da 10 MB. Di quale delle due ti fidi di più, e perché?
Soluzione
- 2,5 MB: s. È esattamente : la retta dei minimi quadrati passa sempre per il punto medio .
- 10 MB: s.
La prima è un'interpolazione, dentro l'intervallo osservato (1–4 MB). La seconda è un'estrapolazione, oltre il doppio del valore più grande mai visto. Nulla garantisce che la relazione resti lineare: con pagine grandi potrebbero entrare in gioco compressione, cache o limiti di banda diversi. In più, l'incertezza della stima cresce allontanandosi da .
Forma matriciale
Esercizio 4: le equazioni normali a mano
Scrivi la matrice e il vettore per i dati dell'esercizio 1, calcola e , e risolvi le equazioni normali . Devi ritrovare i risultati dell'esercizio 1.
Soluzione
Per una 2×2 l'inversa si scrive direttamente: scambi la diagonale, cambi segno al resto, dividi per il determinante.
e , come prima.
Esercizio 5: invertibile o no?
Per ciascuna matrice dei regressori, è invertibile? Se no, perché?
- Colonne: , superficie in m², superficie in piedi quadrati.
- Colonne: , , , con .
- Colonne: , "è al piano terra" (1 o 0), "non è al piano terra" (1 o 0).
- Colonne: , superficie, età, con solo 2 appartamenti.
Soluzione
- No. La terza colonna è la seconda moltiplicata per 10,764: colonne linearmente dipendenti.
- Sì. non è una combinazione lineare di e : le tre colonne sono indipendenti.
- No. Le due colonne sommate danno sempre 1, cioè la colonna dell'intercetta. È la classica trappola delle variabili dummy: con l'intercetta, per una variabile a categorie si usano colonne.
- No. : è 3×3 ma ha rango al massimo 2. Un piano per due punti si può far passare in infiniti modi.
Esercizio 6: lineare o no?
Quali di questi modelli si possono stimare con la regressione lineare, cioè con le equazioni normali?
Soluzione
"Lineare" si riferisce ai parametri, non alle variabili. Conta solo che sia una somma di moltiplicati per qualcosa di noto.
- Sì. Regressori . È una parabola, ma lineare in .
- Sì. Il regressore è , calcolabile dai dati.
- Non così com'è, perché sta in un esponente. Ma prendendo il logaritmo: diventa lineare nei parametri e . Attenzione: minimizzare l'errore su non è la stessa cosa che minimizzarlo su .
- Sì. è un regressore come un altro, un'interazione.
- Non direttamente, perché è al denominatore. Si può stimare con il regressore , e poi ricavare .
Discesa del gradiente
Esercizio 7: due passi a mano
Modello senza intercetta , dati e , funzione di costo .
- Trova il valore ottimo annullando la derivata.
- Partendo da con , fai tre passi di discesa del gradiente.
- Cosa succede con ? Qual è il learning rate massimo per cui converge?
Soluzione
La derivata è
1. Ponendola a zero: , cioè .
2. Con :
| Passo | residui | nuovo | |||
|---|---|---|---|---|---|
| 1 | 0 | 2; 3 | 8 | −8 | 0,8 |
| 2 | 0,8 | 1,2; 1,4 | 4 | −4 | 1,2 |
| 3 | 1,2 | 0,8; 0,6 | 2 | −2 | 1,4 |
La distanza da si dimezza a ogni passo: 1,6 → 0,8 → 0,4 → 0,2.
3. Sviluppando, l'errore si moltiplica a ogni passo per . Con il fattore è 0,5, da cui il dimezzamento. Con è : l'errore cambia segno e cresce del 50% a ogni passo, e vale 0 → 4 → −2 → 7. Diverge.
Converge se , cioè . Il valore più veloce è , che dà fattore zero e arriva a in un passo solo. Funziona solo perché il problema ha un parametro: con più parametri le direzioni hanno pendenze diverse e nessun va bene per tutte, ed è il motivo per cui si normalizza.
Esercizio 8: normalizzare un dato nuovo
Un modello è stato addestrato su una feature con valori , standardizzata. In spazio normalizzato i parametri stimati sono , .
- Calcola media e deviazione standard dei dati di addestramento.
- Prevedi per un nuovo dato con .
- Un collega normalizza il nuovo dato usando media e deviazione standard del solo nuovo dato. Cosa ottiene?
- Riscrivi il modello nelle unità originali, come .
Soluzione
1. . Gli scarti al quadrato sono , con somma 32: .
2. , quindi .
3. Con un solo dato la media è 9 e la deviazione standard è 0: , che dà NaN. Anche con più dati nuovi il risultato sarebbe sbagliato, perché lo "zero" e l'"uno" della scala non sarebbero più quelli imparati dal modello. Media e deviazione standard fanno parte del modello: si usano sempre quelle di addestramento.
4. , quindi:
Controllo: . Nota anche che è la media delle : con le feature centrate, l'intercetta è il valore previsto per il dato medio.
Proprietà dello stimatore
Esercizio 9: correttezza (e quando salta)
- Supponi , con nota e . Dimostra che .
- Ora supponi che il rumore abbia media , per esempio un sensore starato che misura sempre 0,3 in più. Il modello ha l'intercetta. Quali parametri restano corretti?
Soluzione
1.
non è casuale, quindi esce dal valore atteso.
2. Ora , dove è il vettore di uni, che è proprio la prima colonna di . Quindi , con :
Solo l'intercetta è distorta, di esattamente ; le pendenze restano corrette. L'intercetta "assorbe" l'errore costante. Senza intercetta nel modello, invece, la distorsione finirebbe nelle pendenze.
Esercizio 10: cosa cambia l'incertezza?
Su 10 appartamenti, l'errore standard del prezzo al m² è 0,068 k€/m². Con un solo regressore vale . Stima l'errore standard se:
- raccogli 40 appartamenti, con superfici distribuite come prima;
- il rumore sui prezzi ha deviazione standard doppia;
- raccogli sempre 10 appartamenti, ma con superfici in un intervallo largo la metà.
Soluzione
L'errore standard è la radice: .
- Con 4 volte i dati, quadruplica: errore standard diviso per , circa 0,034 k€/m².
- raddoppia: errore standard doppio, circa 0,136 k€/m².
- Ogni scarto si dimezza, quindi ogni quadrato diventa un quarto: errore standard doppio, circa 0,136 k€/m².
Restringere l'intervallo delle superfici fa male quanto raddoppiare il rumore, e per compensarlo servirebbero 4 volte i dati.
Esercizio 11: vero o falso?
- Se R² = 0,99, allora causa .
- Aggiungere un regressore, anche inutile, non può far aumentare l'MSE sui dati usati per la stima.
- Minimizzando la somma dei valori assoluti invece dei quadrati si ottiene la stessa retta.
- Un outlier con una lontana dalla media sposta la retta più di uno con la stessa distanza verticale ma vicina alla media.
- La discesa del gradiente su una regressione lineare può bloccarsi in un minimo locale.
- Normalizzare le feature cambia le previsioni del modello.
Soluzione
- Falso. R² misura quanto bene una retta riassume i dati, non il perché. Un terzo fattore può guidare entrambe le grandezze.
- Vero. Il nuovo modello può sempre mettere a zero il parametro in più e ritrovare il vecchio: il suo minimo non può essere più alto. Per questo un MSE più basso sui dati di stima non prova che il regressore serva, e va controllato su dati nuovi.
- Falso. Con il valore assoluto gli errori grandi pesano meno: la retta è più robusta agli outlier (è l'analogo della mediana rispetto alla media), ma non ha una formula chiusa.
- Vero. Un punto lontano da fa da leva sulla pendenza. Provalo nel lab: l'attico a 100 m² porta la pendenza da 2,06 a 4,02. Lo stesso sovrapprezzo su un appartamento da 78 m², proprio sulla media, lascia la pendenza a 2,06 e alza solo la retta.
- Falso. La funzione di costo è convessa: un solo minimo, globale. Con un learning rate adatto si arriva sempre lì.
- Falso, se fatto bene: cambiano i parametri, non le previsioni. Riportando i parametri nelle unità originali si ottiene la stessa retta (esercizio 8). Cambia solo la velocità della discesa del gradiente.
Al computer
Esercizio 12: tre modi, un risultato
Genera 50 punti con questo codice:
import numpy as np
rng = np.random.default_rng(42)
x = rng.uniform(0, 100, 50)
y = 3 + 0.5 * x + rng.normal(0, 4, 50)Poi stima la retta in tre modi e verifica che diano lo stesso risultato:
- con le equazioni normali;
- con la discesa del gradiente su standardizzata, riportando poi i parametri nelle unità originali;
- con
np.polyfit(x, y, 1).
Domanda bonus: il modello "vero" ha intercetta 3, perché la stima è lontana da 3 mentre la pendenza è vicinissima a 0,5?
Soluzione
# 1. equazioni normali
X = np.column_stack([np.ones(len(x)), x])
theta = np.linalg.solve(X.T @ X, X.T @ y)
print("equazioni normali:", theta.round(3))
# 2. discesa del gradiente con x standardizzata
mu, sigma = x.mean(), x.std()
Z = np.column_stack([np.ones(len(x)), (x - mu) / sigma])
t = np.zeros(2)
for k in range(1000):
t = t + 0.1 * 2 / len(x) * Z.T @ (y - Z @ t)
m = t[1] / sigma
q = t[0] - m * mu
print("discesa del gradiente:", np.round([q, m], 3))
# 3. controprova con polyfit (restituisce prima la pendenza)
print("polyfit:", np.polyfit(x, y, 1).round(3))equazioni normali: [2.075 0.505]
discesa del gradiente: [2.075 0.505]
polyfit: [0.505 2.075]Bonus. È l'esercizio 10 in azione. L'intercetta è il valore della retta in , al bordo dei dati, dove l'incertezza è massima. La pendenza invece è "fissata" da punti sparsi su tutto l'intervallo 0–100. L'errore standard dell'intercetta qui è circa 0,95, contro 0,016 della pendenza: 2,075 dista da 3 meno di un errore standard. Nessuna anomalia, solo rumore.