15 MAGGIO 2026 ·
machine-learningdata-scienceia

Regressione Lineare: da una retta al machine learning.

Il primo modello di ML spiegato passo passo: intuizione, formula dei minimi quadrati, R² e limiti. Appunti dal mio master in Data Analytics.

Perché iniziare dalla regressione lineare

Si dice spesso che la regressione lineare sia l‘“Hello, World!” del machine learning. Può sembrare una semplificazione ma è una mezza verità che merita di essere approfondita: la regressione lineare è semplice ma contiene già in forma minima molti dei concetti chiave del ML moderno.

Abbiamo parametri che il modello aggiusta durante l’apprendimento, una funzione di errore da minimizzare, una fase di training, la valutazione su dati nuovi, la nomenclatura di feature e target. Diversa complessità, ma l’impalcatura concettuale è molto simile.

Passare da uno studio orientato ad algoritmi e coding allo studio di modelli matematici ti costringe ad un cambio di prospettiva: non scrivi procedure e regole conoscendole a prescindere ma le scopri leggendo e studiando i dati. La matematica non è più un complemento decorativo del codice, è il punto centrale.

Dal dato alla retta

01/
Osservare
I dati che hai sotto mano

Un insieme di punti (x, y) disegnati su un piano cartesiano.

y 0 x →
02/
Esplorare
Infinite rette possibili

Alcune rette passano sopra i punti, altre sotto, altre tagliano di sbieco. Quale è la "giusta"?

y 0 x → quale retta?
03/
Scegliere
La retta migliore

Tra tutte le rette, c'è quella che calcola meglio la minima distanza complessiva dai punti: la retta del modello.

y 0 x → ŷ = m·x + b

FIG.01 Tre passaggi concettuali: osservare i dati, immaginare rette candidate, scegliere quella che minimizza la distanza complessiva dai punti.

La pendenza geometrica

Prima delle formule, partiamo da un esempio concreto. Immagina un tassista con una tariffa fissa di salita e un costo per ogni chilometro percorso. Se sali e non ti muovi, paghi solo la tariffa di partenza. Per ogni km in più, il contatore sale di una quantità costante.

La regressione lineare descrive esattamente questa logica:

Y = m · X + b
m pendenza · slope, weight b intercetta · tariffa fissa XY variabili osservate
  • bb è la tariffa di salita ovvero l’intercetta, il valore di YY quando XX vale zero
  • mm è il costo per chilometro cioè la pendenza della retta (slope o weight)

Trovare la retta giusta significa trovare quel tassista specifico (cioè i due numeri mm e bb) che descrive meglio i dati che abbiamo osservato.

Il weight mm è geometricamente la pendenza della retta: di quanto cresce YY per ogni unità di XX. In termini di derivata elementare, m=ΔyΔxm = \frac{\Delta y}{\Delta x}.

L’idea interessante qui è che i parametri mm e bb non sono noti ma sono dati da trovare, sono il risultato di un processo di ottimizzazione che parte proprio dai dati. Che il modello “impara” dai dati significa questo.

La pendenza in pratica

osservatoretta ŷ
01k2k3k4k5k6k0510152025x →yΔx = 12Δy = 2410b = 253m = Δy / Δx ≈ 2012345

FIG.02Per ogni 12 unità in più di X (Δx), Y sale di circa 2410 (Δy). Il rapporto Δy/Δx è la pendenza m ≈ 201. Passa il mouse su un punto per leggere valore osservato, predetto e residuo.

Metodo dei minimi quadrati

Su uno stesso insieme di punti si possono tracciare infinite rette. Come scelgo quella giusta?

L’idea è relativamente semplice: per ogni retta candidata, misuro quanto sbaglia su ogni punto del dataset (la distanza verticale tra il valore reale e quello che la retta predice), combino tutti questi errori in un unico numero e scelgo la retta che rende minimo l’errore.

Il metodo dei minimi quadrati fa esattamente questo. Perché al quadrato? Gli scarti tra valore reale e valore predetto vengono elevati al quadrato prima di essere sommati:

  • Da un lato, il quadrato è una funzione derivabile ovunque (il valore assoluto no, ha uno spigolo in zero) e questo permette di risolvere il problema con una formula chiusa invece che con algoritmi iterativi.
  • Dall’altro, elevando al quadrato gli errori grandi pesano molto più di quelli piccoli, il che spinge la retta a evitare predizioni molto sbagliate piuttosto che molte predizioni leggermente sbagliate.

Il risultato è un rapporto tra due quantità statistiche:

m=(xixˉ)(yiyˉ)(xixˉ)2m = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sum (x_i - \bar{x})^2}
N Numeratore · Covarianza

Quanto X e Y variano insieme: cresce se grandi X portano grandi Y.

D Denominatore · Varianza di X

Quanto X varia da solo, indipendentemente da Y. Normalizza il rapporto.

Questa formula semplicemente significa “quanto XX e YY variano insieme, diviso quanto varia XX da solo”, cioè quanta parte della variabilità di YY è attribuibile a XX.

L’intercetta si ricava di conseguenza: b=yˉmxˉb = \bar{y} - m \cdot \bar{x}, cioè il valore medio di YY corretto per l’effetto di XX.

Quattro passi geometrici per m e b

Dai dati grezzi alla retta migliore: medie, scarti, rapporto covarianza/varianza, e finalmente la formula.

01. Media
Il "centro di massa" dell’insieme di punti. Le due rette tratteggiate si incrociano nel baricentro (9, 2060). Calcoliamo x̄ e ȳ.
01k2k3k4k5k6k0510152025mese →ȳ = 2060x̄ = 9

01Media

02Scarti

03cov(x,y)/var(x)

m ≈ 201b ≈ 253

04Risultato

FIG.03Clicca i passi sopra per camminare attraverso i quattro momenti del calcolo. La griglia in basso è un indice cliccabile.

Vediamo un altro caso realistico, prendendo in esempio un PAC (piano di accumulo mensile) su mercato azionario. Abbiamo X che è il mese progressivo e Y il capitale investito cumulativo per ogni punto. È un caso semplificato perché si presta bene: non considereremo tasse, valuta, costi del broker e così via.

Dati osservati

n = 5
#meseversato
1 0 300
2 3 800
3 6 1500
4 12 2600
5 24 5100
6k 5k 4k 3k 2k 1k 0 0 5 10 15 20 25 mese 12345
FIG.04 Cinque osservazioni di un PAC mensile. A sinistra i dati grezzi, a destra la loro distribuzione sul piano cartesiano. Passa il mouse su un punto per i dettagli.

Calcolando: la media di XX è 9, la media di YY è 2.060€. Il numeratore della formula (somma dei prodotti degli scarti) vale 72.300; il denominatore (somma dei quadrati degli scarti di XX) vale 360. Da cui:

Pendenza · Calcolo
m=72.300360m = \frac{72.300}{360}
201 € / mese
Intercetta · Calcolo
b=yˉmxˉ=20602019b = \bar{y} - m \cdot \bar{x} = 2060 - 201 \cdot 9
253

Tradotto: la retta dice che ogni mese vengono investiti in media circa 201€, e che il capitale stimato all’origine era di circa 253€, vicino al primo versamento reale di 300€.

Il coefficiente R²

Una volta trovata la retta, la domanda successiva è inevitabile: quanto è affidabile questo modello?

L’idea per rispondere è semplice. Partiamo da una situazione di riferimento: se non avessi nessun modello e dovessi comunque dare una previsione per YY, la cosa più ragionevole sarebbe usare sempre la media di YY come stima.

Chiamiamo SStotSS_{tot} (sum of squares total) la somma dei quadrati delle distanze tra ogni punto reale e questa media: è l’errore di partenza, l’incertezza che hai senza fare nulla.

Ora introduciamo la retta della regressione. Chiamiamo SSresSS_{res} (sum of squares residual) la somma dei quadrati delle distanze tra ogni punto reale e il valore predetto dalla retta: è l’errore che rimane dopo che il modello ha fatto il suo lavoro.

Il coefficiente R2R^2 confronta questi due numeri:

R2=1SSresSStotR^2 = 1 - \frac{SS_{res}}{SS_{tot}}
1 Retta perfetta

Se SSres è zero, R² vale 1: il modello ha eliminato tutto l'errore.

0 Retta inutile

Se SSres è uguale a SStot, R² vale 0: il modello non migliora nulla.

Un R2R^2 di 0.78 significa che la retta ha ridotto del 78% l’errore di partenza; il restante 22% è variabilità che il modello lineare non riesce a catturare. Ma come si “vede” un R2R^2 a colpo d’occhio?

Come si vede un R²?

0.30
DEBOLE
0.65
MODERATO
0.92
ALTO
QUI
0.999
↑ IL NOSTRO PAC

FIG.07 Stesso layout di scatter, quattro livelli di R². Il caso reale (0.999) è praticamente "una retta perfetta": condizione rara nei dati veri, attesa per un PAC simulato.

Scomposizione della varianza

SS_tot
02k4k6k0510152025
Σ = 14.532.000
SS_reg
02k4k6k0510152025
Σ = 14.544.380
SS_res
02k4k6k0510152025
Σ = 11.780

FIG.05La varianza totale si scompone in parte spiegata dalla retta e parte residua. Hover su un punto per il dettaglio.

Dall'errore della media all'errore della retta

Predici la media BENCHMARK
0 2k 4k ȳ = 2060
SS_tot 14.532.000
RIDUZIONE -99.9%
Predici con la retta MODELLO
0 2k 4k ŷ
SS_res 11.780
R² = 1 - SS_res / SS_tot = 1 - 11.780 / 14.532.000 = 0.999

FIG.06 Senza modello, l'errore quadratico totale è 14.5 milioni. Con la retta scende a 11.780: una riduzione del 99.9%. Quello è R².

Tornando al nostro PAC sui 5 punti, il calcolo dà R20,999R^2 \approx 0{,}999. Quasi tutto l’errore di partenza è stato eliminato dalla retta e ha senso: un piano di accumulo con versamenti regolari è quasi per definizione una relazione lineare nel tempo.

Su 100% di varianza, la retta ne spiega...

SS_reg · spiegata dalla retta
99.92% · 14.520.220 ingrandisci 0.08% · 11.780
0.999
R² = 1 - SS_res / SS_tot
   = 1 - 11.780 / 14.532.000
   = 1 - 0.00081 = 0.99919

FIG.08 Quasi il 100% della varianza dei dati è "catturata" dalla retta. La componente di errore residuo è il sottile lembo viola, ingrandito sotto per renderlo leggibile.

Confrontiamo con un caso opposto: il peso corporeo misurato ogni mattina per 10 giorni.

Peso giornaliero: 10 giorni

n = 10
74.074.575.075.576.076.5 12345678910 kg giorno ȳ = 75.16
0.141
0.00.51.0
La retta spiega solo il 14.1% della varianza.

FIG.09 Il peso oscilla per ritenzione idrica, pasti, attività fisica. La retta è quasi piatta e il modello lineare non cattura praticamente nulla. Confronta con il PAC (R² = 0.999) qui sopra.

Un caso estremo nella stessa direzione: i numeri dell’estrazione del lotto. R2R^2 sarebbe indistinguibile da zero, perché per definizione non esiste nessuna relazione tra un’estrazione e la successiva.

Nota importante: R2R^2 misura quanto la retta segue i nostri dati, non quanto il modello sia “giusto” in senso assoluto. Estrapolare la retta lontano dai dati osservati, o usarla in un contesto in cui le condizioni che hanno generato i dati cambiano, sono problemi che R2R^2 da solo non rileva.

I limiti: cosa la regressione lineare non fa

Come anticipato all’inizio dell’articolo, questo modello è molto semplice e di conseguenza si porta dietro diversi limiti se utilizzato in un contesto real-world:

  • Serve una tendenza lineare nei dati: la regressione produce sempre una retta, anche quando i dati non hanno alcun andamento crescente o decrescente sistematico. In quel caso la retta esce quasi piatta, R2R^2 resta vicino a zero e il modello esiste ma non dice nulla di utile. Relazioni a U, a campana, cicliche o esponenziali non sono adatte perché per quelle servono modelli diversi (regressione polinomiale, alberi decisionali, modelli non lineari).

  • L’estrapolazione è sempre rischiosa. Una retta può essere matematicamente proiettata su qualsiasi valore di X, anche lontanissimo dai dati di partenza. Ma il modello non sa nulla di saturazioni, crisi o cambi di regime: vede solo la pendenza storica e la prolunga. Un classico è una regressione sul PIL mondiale che, estrapolata abbastanza in avanti, prevede una crescita all’infinito. Usare la retta dentro l’intervallo dei dati osservati (interpolazione) è una cosa mentre l’estrapolazione è un’altra, e va fatta con consapevolezza.

  • È utile come punto di partenza, non di arrivo. Per fenomeni reali complessi la regressione lineare da sola non basta, ma è una base concettuale su cui poggiano modelli ben più sofisticati.

C’è poi una considerazione metodologica che è forse la lezione più importante per il blocco iniziale: un modello che funziona sui dati passati non è automaticamente un modello che capisce il mondo.

Correlazione non significa causazione, e nemmeno una correlazione vera significa qualcosa di sensato. C’è un sito ironico che vale la pena conoscere e che mostra esattamente questo concetto, Spurious Correlations di Tyler Vigen: raccoglie coppie di serie storiche reali con coefficienti di correlazione altissimi e zero senso logico.

Uno dei più famosi è il numero di film con Nicolas Cage usciti ogni anno tra il 1999 e il 2009, che correla a 0,66 con il numero di annegamenti in piscina negli Stati Uniti. Altri esempi: il consumo pro capite di margarina e il tasso di divorzio nel Maine, la spesa pubblica USA in ricerca scientifica e il numero di suicidi per impiccagione.

Un modello statistico non capisce il mondo, capisce solo i numeri che gli dai. Sta a chi lo usa decidere se quei numeri hanno un senso causale o se è solo rumore con tre cifre decimali.

Ricapitolando

Tre concetti da portarsi a casa:

  • La regressione lineare trova la retta che minimizza l’errore complessivo sui dati. I parametri mm e bb non li scegliamo noi: li calcola il modello.
  • R2R^2 misura quanto errore è stato eliminato passando dalla media alla retta. Vicino a 1 è buono, vicino a 0 la retta non serve a nulla.
  • Un modello che funziona sui dati passati non capisce il mondo. Correlazione non è causazione, e senza una relazione reale tra le variabili il risultato è solo rumore.
01
Y=mX+bY = m \cdot X + b
Il modello: Y dipende linearmente da X tramite due numeri, pendenza e intercetta.
02
m=cov(X,Y)var(X)m = \frac{\mathrm{cov}(X,Y)}{\mathrm{var}(X)}
La pendenza: quanto X e Y variano insieme, diviso quanto X varia da solo.
03
b=yˉmxˉb = \bar{y} - m \cdot \bar{x}
L'intercetta: il valore medio di Y corretto per l'effetto di X.
04
R2=1SSresSStotR^2 = 1 - \frac{SS_{res}}{SS_{tot}}
La bontà: quanto errore ha eliminato il modello rispetto all'usare la sola media.

Il prossimo post probabilmente affronterà la correlazione tra variabili e l’esplorazione di un dataset reale, ma mi riservo di decidere a fine modulo. Se hai osservazioni o domande, scrivimi.

Ad astra per aspera.

Davide.

Ultimo aggiornamento: 22 maggio 2026
machine-learningdata-scienceia