Home/ Wiki/ AI/ Overfitting e Underfitting

Overfitting e Underfitting

Un modello che ha imparato a memoria e uno che non ha imparato niente. Come si riconoscono, come si misura l'equilibrio, e le tecniche per tenerlo.

Illustrazione sul machine learning e l'addestramento dei modelli
Indice dei contenuti
Aggiornato: Aprile 2026 9 min di lettura

Definizioni

Ogni modello di machine learning sta in equilibrio fra due modi di sbagliare, e la parte difficile del mestiere è stare in mezzo:

Punti chiave

  • Underfitting: modello troppo semplice, sbaglia anche sui dati già visti (alto bias).
  • Overfitting: modello troppo complesso, memorizza il rumore e non generalizza (alta varianza).
  • Il bias-variance tradeoff è la cornice teorica per capire e bilanciare i due fenomeni.
  • Le difese principali: regolarizzazione L1/L2, dropout, cross-validation, early stopping e data augmentation.
  • Il punto di partenza resta sempre la qualità e la quantità dei dati.
  • Underfitting: il modello è troppo semplice per catturare i pattern presenti nei dati. Sbaglia sia sui dati di training che su quelli nuovi. È come uno studente che non ha studiato abbastanza: non capisce nemmeno gli esercizi già visti.
  • Overfitting: il modello è troppo complesso e memorizza il rumore e le particolarità dei dati di training, perdendo la capacità di generalizzare su dati nuovi. È come uno studente che impara le risposte a memoria senza capire i concetti: perfetto sugli esercizi noti, fallimentare su quelli nuovi.
Come riconoscerli

Underfitting: training loss alta + validation loss alta.

Overfitting: training loss bassa + validation loss alta (gap crescente).

Fit corretto: training loss bassa + validation loss bassa (gap minimo).

Bias-variance tradeoff

Il compromesso fra bias e varianza è la cornice teorica che spiega tutti e due i problemi. L'errore totale si scompone in tre pezzi:

Errore totale = Bias^2 + Varianza + Rumore irriducibile

  • Bias: errore sistematico dovuto ad assunzioni semplificative del modello. Un modello lineare applicato a dati non lineari ha alto bias (underfitting).
  • Varianza: sensibilità del modello ai dati di training specifici. Un modello troppo complesso cambia drasticamente predizioni se cambia il training set (overfitting).
  • Rumore irriducibile: errore intrinseco nei dati, non eliminabile da nessun modello.

Aumentare la complessità del modello riduce il bias ma aumenta la varianza. L'obiettivo è trovare il punto di equilibrio che minimizza l'errore totale sui dati non visti.

In pratica, questo si traduce nella scelta della giusta complessità: il numero di layer e neuroni nelle reti neurali, la profondità in un decision tree, il grado di un polinomio nella regressione. Un sintomo classico di varianza eccessiva è un modello che ottiene un'accuratezza quasi perfetta in training ma crolla in produzione: è il segnale che ha imparato il dataset, non il problema.

Regolarizzazione L1 e L2

La regolarizzazione aggiunge una penalità alla funzione di costo per scoraggiare pesi troppo grandi, quindi limita quanto il modello può diventare contorto:

TipoPenalitaEffettoUso tipico
L1 (Lasso)lambda * sum(|w|)Porta alcuni pesi esattamente a zero (feature selection)Quando si sospettano molte feature irrilevanti
L2 (Ridge)lambda * sum(w^2)Riduce tutti i pesi uniformemente (shrinkage)Caso generale, prevenzione overfitting
Elastic Netalpha*L1 + (1-alpha)*L2Combinazione dei due effettiQuando servono sia sparsità che stabilità

Il parametro lambda (o alpha in Scikit-learn) controlla l'intensità della regolarizzazione: troppo basso e la regolarizzazione non ha effetto; troppo alto e il modello diventa troppo semplice (underfitting). Si sceglie tipicamente tramite cross-validation, provando una griglia di valori su scala logaritmica (per esempio 0.001, 0.01, 0.1, 1) e scegliendo quello con la migliore validation loss media.

Dropout

Il dropout è la tecnica di regolarizzazione più usata nelle reti neurali. Durante l'addestramento, a ogni iterazione si "spengono" casualmente una percentuale di neuroni (tipicamente 20-50%), azzerando il loro output.

Il risultato è che la rete non può appoggiarsi a pochi neuroni e deve distribuire quello che sa. È un po' come addestrare tante sotto-reti e poi metterle insieme: la varianza scende, e in pratica funziona meglio di quanto la spiegazione faccia sospettare.

Dropout in pratica

Training: ogni neurone viene disattivato con probabilità p ad ogni forward pass.

Inference: tutti i neuroni sono attivi, ma i pesi vengono scalati per compensare (moltiplicati per 1-p).

Valori tipici: p = 0.2 per l'input layer, p = 0.5 per gli hidden layer.

Cross-validation

La validazione incrociata è il modo standard per stimare quanto un modello funzionerà su dati nuovi e per scegliere gli iperparametri. La versione più usata è la k-fold:

  1. Si divide il dataset in k parti (fold) di dimensione uguale (tipicamente k = 5 o 10).
  2. Si addestra il modello k volte, ogni volta usando k-1 fold come training set e 1 fold come validation set.
  3. Si calcola la media e la deviazione standard delle metriche sui k validation set.

Varianti importanti includono la stratified k-fold (mantiene le proporzioni delle classi in ogni fold, essenziale per dataset sbilanciati) e la leave-one-out (k = numero di campioni, costosa ma utile con dataset piccoli). Per i dati temporali esiste la time series split, che valida sempre su dati successivi a quelli di training per evitare di "guardare nel futuro".

La cross-validation fornisce una stima più affidabile di un singolo split train/validation, perché riduce la dipendenza dal particolare partizionamento dei dati. Le metriche da monitorare sono quelle discusse nell'articolo sulla matrice di confusione.

Early stopping

L'early stopping monitora la validation loss durante l'addestramento e interrompe il training quando la loss smette di diminuire (o inizia a crescere), segno che il modello sta iniziando a fare overfitting.

In pratica si definisce un parametro di patience: il numero di epoch consecutive in cui la validation loss può non migliorare prima di fermare il training. Si salva il modello con la migliore validation loss e si usa quello per l'inferenza. È una tecnica semplice ma estremamente efficace, specialmente nel fine-tuning dei LLM, dove pochissime epoch bastano a ottenere risultati ottimi e proseguire oltre rischia solo di degradare la generalizzazione.

Data augmentation

La data augmentation è una strategia per combattere l'overfitting aumentando artificialmente la quantità e la variabilità dei dati di training, senza raccogliere nuovi campioni.

Nella Computer Vision:

  • Rotazione, flip orizzontale/verticale, crop casuale
  • Variazioni di luminosita, contrasto, saturazione
  • Cutout (rimuovere porzioni casuali dell'immagine)
  • MixUp / CutMix (combinare due immagini)

Nel NLP:

  • Sinonimi e parafrasi
  • Back-translation (tradurre in un'altra lingua e ritradurre)
  • Random insertion, deletion, swap di parole
  • Generazione di dati sintetici con LLM

All'overfitting non si risponde con una tecnica sola: si mettono insieme regolarizzazione, dropout, validazione incrociata, early stopping, aumento dei dati. E la leva più forte resta la meno tecnologica, cioè avere più dati e migliori. Sugli errori tipici nella gestione dei dati c'è Errori comuni nell'AI.

Vuoi imparare ad applicarlo davvero?

Scopri i corsi e la formazione di Federico Boggia su AI, dati e digitale.

Vai ai corsi
Federico BoggiaRispondo io, in giornata

Ciao! Dimmi che ti serve: un corso online, una giornata in aula a Livorno o la formazione per la tua azienda.

Scrivimi su WhatsApp