Il sito che ti spiega l'AI.
News, strumenti e guide in italiano.
Guide e tutorial

Overfitting e underfitting: cosa sono e come evitarli nel machine learning

Overfitting e underfitting sono i due errori più comuni del machine learning: scopri cosa sono, come riconoscerli e le tecniche per evitarli.

FA
Franco Artigiano IA Franco Artigiano
Agosto 18, 2026
Lettura: 15 min
Rappresentazione astratta di dati e machine learning

Immagina di preparare uno studente a un esame facendogli imparare a memoria tutte le risposte dei compiti degli anni precedenti. Se le domande si ripetono identiche andrà benissimo, ma davanti alla prima domanda nuova andrà in crisi, perché ha memorizzato senza capire. Nel machine learning succede esattamente la stessa cosa, e questo comportamento ha un nome preciso: overfitting.

All’estremo opposto c’è lo studente che ha studiato così poco da non aver afferrato nemmeno le regole di base, e allora sbaglia sia le domande già viste sia quelle mai incontrate. Questo secondo problema si chiama underfitting.

Overfitting e underfitting sono i due errori più comuni e insidiosi quando si addestra un modello di intelligenza artificiale. Non sono un dettaglio teorico riservato ai ricercatori: sono la differenza tra un sistema che funziona davvero sui dati del mondo reale e uno che sembra perfetto in laboratorio e poi delude appena entra in produzione. In questa guida completa trovi cosa sono, perché si verificano, come riconoscerli e soprattutto quali tecniche usare per tenerli sotto controllo, con esempi concreti e un linguaggio comprensibile anche se non sei un data scientist.

Che cosa significa davvero che un modello “impara”

Per capire overfitting e underfitting bisogna partire da una domanda semplice: cosa vuol dire che un modello di machine learning ha imparato qualcosa? La risposta non è “ha memorizzato i dati che gli abbiamo mostrato”, ma qualcosa di più sottile e più ambizioso.

Un modello impara quando riesce a cogliere la struttura di fondo dei dati, cioè le relazioni che si ripetono e che valgono anche al di fuori degli esempi visti durante l’addestramento. Questa capacità di funzionare bene su dati nuovi, mai incontrati prima, si chiama generalizzazione ed è l’unico vero obiettivo che conta.

La generalizzazione è tutto. Un modello che generalizza bene è utile, uno che non generalizza è un costoso archivio di ricordi.

Per misurare questa capacità, chi lavora con i dati non usa mai un solo blocco di informazioni. Divide i dati a disposizione in almeno due parti: un insieme di addestramento, con cui il modello impara, e un insieme di test, che il modello non vede mai durante l’apprendimento e che serve a simulare il contatto con la realtà. Spesso si aggiunge anche un terzo gruppo, l’insieme di validazione, usato per mettere a punto le impostazioni del modello senza contaminare il test finale.

Il ragionamento è intuitivo. Se valutassimo un modello sugli stessi dati con cui lo abbiamo addestrato, staremmo semplicemente chiedendogli di ripetere cose che ha già visto, un po’ come promuovere lo studente perché ripete a pappagallo le risposte che ha copiato. Solo il confronto con dati nuovi ci dice se ha capito.

Il compromesso tra memorizzare e comprendere

Il cuore del problema sta in un equilibrio delicato. Se il modello è troppo semplice, non riesce a cogliere le relazioni importanti e resta ignorante. Se è troppo complesso e flessibile, rischia di adattarsi anche ai dettagli irrilevanti e al rumore casuale presente nei dati, scambiando le coincidenze per regole. Tra questi due eccessi si trova il punto ideale, quello in cui il modello ha imparato abbastanza da capire ma non così tanto da confondere il rumore con il segnale.

Overfitting e underfitting sono proprio i nomi dei due modi in cui possiamo sbagliare questo equilibrio.

Cos’è l’overfitting (sovradattamento)

L’overfitting, in italiano sovradattamento, si verifica quando un modello si adatta troppo bene ai dati di addestramento, al punto da imparare non solo la struttura utile ma anche il rumore, le eccezioni e le peculiarità specifiche di quel particolare insieme di dati. Il risultato è un modello che ottiene punteggi altissimi sui dati con cui è stato addestrato e punteggi scadenti su qualsiasi dato nuovo.

È il caso dello studente che ha memorizzato le risposte senza capire la materia. Finché l’esame ripropone le stesse identiche domande sembra un genio, ma appena cambia la formulazione crolla.

Un modo utile per immaginarlo è pensare a una nuvola di punti su un grafico che seguono grosso modo una linea, con qualche oscillazione casuale. Un modello sano traccia quella linea. Un modello in overfitting disegna invece una curva contorta che passa esattamente per ogni singolo punto, comprese le oscillazioni dovute al caso. Quella curva descrive alla perfezione i dati visti, ma appena arriva un punto nuovo si rivela completamente sbagliata.

Come riconoscere l’overfitting

Il segnale più chiaro dell’overfitting è un divario ampio tra le prestazioni sull’addestramento e quelle sul test. Quando un modello raggiunge, per esempio, il 99 per cento di accuratezza sui dati di addestramento ma solo il 70 per cento su quelli di test, quel salto verso il basso è la firma inconfondibile del sovradattamento.

In pratica il modello va benissimo dove non dovrebbe stupirci e male dove conta davvero. Più il divario è ampio, più il problema è grave.

C’è anche un secondo sintomo, meno immediato ma altrettanto rivelatore. Un modello in overfitting tende a essere instabile: piccole variazioni nei dati di ingresso producono previsioni molto diverse, segno che il modello si aggrappa a dettagli fragili invece di basarsi su relazioni solide.

Le cause più comuni del sovradattamento

L’overfitting nasce quasi sempre da uno squilibrio tra la complessità del modello e la quantità di informazione realmente disponibile. Le cause ricorrenti sono diverse e vale la pena conoscerle, perché riconoscere l’origine del problema è già metà della soluzione.

La prima causa è un modello troppo complesso rispetto al problema, con troppi parametri liberi da regolare. Più un modello ha gradi di libertà, più ha la possibilità di piegarsi fino a inseguire ogni singolo esempio. La seconda causa è la scarsità di dati: quando gli esempi sono pochi, il modello fatica a distinguere ciò che è regola da ciò che è coincidenza, e finisce per trattare il caso come se fosse legge. La terza è un addestramento prolungato troppo a lungo, che spinge il modello a continuare a limare l’errore sui dati noti ben oltre il punto in cui aveva già imparato l’essenziale.

Spesso queste cause agiscono insieme, e per questo la difesa dall’overfitting non è mai una singola mossa ma una combinazione di accorgimenti.

Cos’è l’underfitting (sottoadattamento)

L’underfitting, o sottoadattamento, è il problema speculare. Si verifica quando il modello è troppo semplice per cogliere la struttura dei dati, e quindi sbaglia sia sui dati di addestramento sia su quelli nuovi. Non ha imparato abbastanza nemmeno dagli esempi che aveva sotto gli occhi.

Se l’overfitting è lo studente che memorizza senza capire, l’underfitting è lo studente che non ha proprio studiato. Non c’è trucco che tenga: sbaglia ovunque.

Tornando all’immagine dei punti su un grafico, l’underfitting corrisponde a tracciare una linea retta là dove i dati seguono chiaramente una curva. La retta è troppo rigida per descrivere l’andamento reale, e allora resta lontana da gran parte dei punti, sia quelli usati per addestrare sia quelli di prova.

Come riconoscere l’underfitting

Il sintomo dell’underfitting è più facile da individuare rispetto all’overfitting, perché il modello va male da subito e in modo evidente. Le prestazioni sono scarse già sui dati di addestramento, e restano scarse sul test. Non c’è quel divario tipico del sovradattamento, semplicemente il modello è mediocre ovunque.

Quando vedi un modello che non riesce a superare una certa soglia di accuratezza nemmeno sui dati che ha usato per imparare, è quasi sempre un problema di sottoadattamento. Il modello è troppo debole per il compito che gli hai assegnato.

Le cause tipiche sono l’opposto di quelle dell’overfitting: un modello troppo semplice, un addestramento interrotto troppo presto, oppure una fase di preparazione dei dati che ha eliminato informazioni utili, lasciando al modello troppo poco su cui lavorare.

Il compromesso tra distorsione e varianza

Dietro overfitting e underfitting c’è un principio teorico che merita di essere capito, perché dà una cornice unica a entrambi i problemi. È il cosiddetto compromesso tra distorsione e varianza, in inglese bias-variance tradeoff, uno dei concetti più importanti di tutto il machine learning.

La distorsione, o bias, misura quanto le assunzioni semplificatrici del modello lo allontanano sistematicamente dalla realtà. Un modello con distorsione alta è troppo rigido, dà per scontate cose che non sono vere e per questo tende all’underfitting. La varianza, invece, misura quanto le previsioni del modello cambiano al variare dei dati di addestramento. Un modello con varianza alta è troppo sensibile, reagisce a ogni piccola fluttuazione e per questo tende all’overfitting.

Il punto cruciale è che questi due aspetti sono in tensione tra loro. Ridurre la distorsione rendendo il modello più flessibile fa quasi sempre crescere la varianza, e viceversa. L’obiettivo non è azzerare l’una o l’altra, cosa impossibile, ma trovare il punto di equilibrio in cui la loro somma, cioè l’errore complessivo su dati nuovi, è la più bassa possibile.

Capire questo compromesso cambia il modo di lavorare. Non insegui più la perfezione sui dati noti, ma il miglior risultato possibile su quelli che ancora non hai visto.

Come diagnosticare il problema con le curve di apprendimento

Uno strumento pratico e potente per capire se un modello soffre di overfitting o underfitting è la curva di apprendimento. Si tratta di un grafico che mostra come cambia l’errore del modello sui dati di addestramento e su quelli di validazione man mano che l’addestramento procede o man mano che aumenta la quantità di dati usati.

Leggere queste curve è come misurare la febbre: ti dice subito se e dove c’è qualcosa che non va.

In una situazione di overfitting le due curve divergono. L’errore sull’addestramento continua a scendere fino a diventare quasi nullo, mentre l’errore sulla validazione a un certo punto smette di calare e comincia a risalire. Quel momento in cui le due linee si separano segnala che il modello ha iniziato a memorizzare invece di generalizzare.

Nel caso dell’underfitting, al contrario, entrambe le curve restano bloccate su valori di errore alti e vicine tra loro. Il modello non migliora abbastanza nemmeno sui dati di addestramento, segno che è troppo semplice o che non ha avuto modo di apprendere davvero. Osservare la distanza e l’andamento di queste due curve è spesso il primo passo di qualsiasi diagnosi seria.

Le tecniche per prevenire l’overfitting

La buona notizia è che l’overfitting si può combattere con un insieme di tecniche ormai collaudate. Nessuna di queste è una bacchetta magica, ma usate insieme e con criterio permettono di costruire modelli che generalizzano davvero. Vediamo le più importanti.

Aumentare i dati e la data augmentation

Il rimedio più efficace e più intuitivo contro l’overfitting è avere più dati. Con un numero maggiore di esempi diventa molto più difficile per il modello scambiare il rumore per un segnale, perché le coincidenze tendono a diluirsi e le regole vere emergono con più forza.

Quando raccogliere altri dati reali è troppo costoso o impossibile, si ricorre a due strade. La prima è la data augmentation, cioè la creazione di nuove varianti a partire dagli esempi esistenti: nel caso delle immagini si applicano rotazioni, ritagli, variazioni di luminosità, in modo che il modello impari a riconoscere l’essenziale al di là dei dettagli superficiali. La seconda strada è l’uso di dati sintetici generati artificialmente, utili quando i dati reali sono scarsi o delicati da trattare per motivi di privacy.

La regolarizzazione

La regolarizzazione è una famiglia di tecniche che aggiungono un freno alla complessità del modello. L’idea è penalizzare i modelli che diventano troppo elaborati, spingendoli verso soluzioni più semplici e quindi più robuste.

Nella pratica si aggiunge alla funzione che il modello cerca di minimizzare un termine extra che cresce quando i parametri diventano troppo grandi. Le due forme più note sono la regolarizzazione L1, che tende ad azzerare i parametri meno utili semplificando il modello, e la regolarizzazione L2, che li mantiene piccoli e distribuiti senza cancellarli del tutto. In entrambi i casi il messaggio al modello è lo stesso: usa solo la complessità che ti serve davvero, non di più.

Il dropout nelle reti neurali

Quando si lavora con le reti neurali artificiali, una delle tecniche più efficaci contro l’overfitting è il dropout. Durante l’addestramento, a ogni passaggio, una parte casuale dei neuroni viene temporaneamente disattivata, come se fosse spenta.

Questo obbliga la rete a non dipendere troppo da singoli neuroni e a distribuire la conoscenza su più percorsi. Il risultato è una rete più robusta, che non si aggrappa a scorciatoie fragili e generalizza meglio quando incontra dati nuovi.

L’arresto anticipato

L’arresto anticipato, o early stopping, sfrutta proprio l’osservazione delle curve di apprendimento. Poiché l’addestramento prolungato è una delle cause dell’overfitting, l’idea è fermarsi al momento giusto, cioè quando l’errore sulla validazione smette di migliorare e comincia a peggiorare.

Molti algoritmi di addestramento si basano su procedure iterative come la discesa del gradiente, che affinano il modello passo dopo passo. L’arresto anticipato monitora le prestazioni a ogni passo e interrompe il processo appena la generalizzazione inizia a deteriorarsi, conservando la versione migliore del modello invece di continuare a peggiorarla.

La convalida incrociata

La convalida incrociata, in inglese cross-validation, è una tecnica di valutazione che rende molto più affidabile il giudizio sulle prestazioni del modello. Invece di dividere i dati una sola volta in addestramento e test, li si divide più volte in modo diverso, addestrando e valutando il modello su diverse combinazioni.

La forma più diffusa suddivide i dati in un certo numero di parti, addestra il modello su tutte tranne una e lo verifica su quella esclusa, ripetendo il procedimento a rotazione. La media dei risultati offre una stima più stabile e meno fortunata delle reali capacità del modello, riducendo il rischio di illudersi per una divisione dei dati particolarmente favorevole.

Semplificare il modello e selezionare le variabili

A volte la soluzione più semplice è anche la migliore: ridurre la complessità del modello. Diminuire il numero di parametri, scegliere un’architettura meno elaborata o limitare la profondità di certi algoritmi può bastare a riportare l’equilibrio.

Sul fronte dei dati, la selezione delle variabili aiuta nella stessa direzione. Eliminare le caratteristiche poco informative o ridondanti riduce le occasioni in cui il modello può inseguire correlazioni spurie, e spesso migliora la generalizzazione oltre a rendere il modello più veloce e più facile da interpretare.

Come combattere l’underfitting

Se il problema è opposto, cioè un modello che non riesce a imparare abbastanza, la strategia si rovescia. Bisogna dare al modello più capacità e più informazione, non toglierne.

La prima mossa è aumentare la complessità del modello, per esempio scegliendo un’architettura più ricca o un algoritmo capace di cogliere relazioni non lineari. La seconda è arricchire i dati con variabili più informative, magari costruendo nuove caratteristiche a partire da quelle esistenti, un lavoro noto come ingegnerizzazione delle variabili. La terza è concedere al modello un addestramento più lungo, se era stato interrotto prima che potesse davvero apprendere.

C’è anche un dettaglio spesso trascurato: una regolarizzazione troppo aggressiva può causare underfitting. Se hai frenato troppo il modello nel timore dell’overfitting, allentare quel freno può essere la soluzione. Come sempre, si tratta di trovare la giusta misura.

Overfitting nel deep learning e nei modelli moderni

Con l’arrivo di modelli sempre più grandi, dal deep learning ai grandi modelli linguistici, il problema dell’overfitting non è scomparso, ma ha cambiato forma. Questi modelli hanno miliardi di parametri e una capacità enorme di memorizzare, il che li renderebbe candidati perfetti al sovradattamento.

Ciò che li salva è soprattutto la mole gigantesca di dati su cui vengono addestrati, insieme a un uso sistematico delle tecniche che abbiamo visto. Regolarizzazione, dropout, arresto anticipato e augmentation restano strumenti quotidiani anche ai vertici della ricerca.

Nei modelli linguistici l’overfitting può manifestarsi in modo particolare, per esempio quando il modello memorizza interi passaggi dei dati di addestramento e li ripropone tali e quali, oppure quando funziona benissimo sui casi visti durante la messa a punto e fatica su richieste leggermente diverse. Anche qui la bussola resta la stessa: contano le prestazioni su dati e situazioni nuove, non la bravura nel ripetere ciò che è già stato visto.

Errori da evitare e buone pratiche

Al di là delle singole tecniche, ci sono alcuni principi di metodo che fanno la differenza tra chi tratta overfitting e underfitting con consapevolezza e chi ci sbatte contro senza accorgersene.

Il primo principio è non guardare mai i dati di test durante lo sviluppo. Devono restare intoccati fino alla valutazione finale, perché ogni sbirciatina li contamina e ti fa sopravvalutare il modello. Usa la validazione per le tue decisioni e tieni il test come giudizio conclusivo.

Il secondo principio è diffidare dei risultati troppo belli. Un’accuratezza vicina alla perfezione sui dati di addestramento non è un traguardo da festeggiare, è quasi sempre un campanello d’allarme di overfitting. La domanda giusta non è mai quanto il modello sia bravo su ciò che conosce, ma quanto regge davanti a ciò che non ha mai visto.

Il terzo principio è procedere per gradi e misurare tutto. Cambia una cosa alla volta, osserva l’effetto sulle curve di apprendimento e sulla validazione, e costruisci così una comprensione solida di come il tuo modello reagisce. La lotta a overfitting e underfitting è fatta di piccoli aggiustamenti ragionati, non di colpi di genio.

Conclusioni

Overfitting e underfitting non sono difetti da eliminare una volta per tutte, ma due poli tra cui ogni progetto di machine learning deve trovare il proprio equilibrio. Da un lato il rischio di un modello che memorizza e non capisce, dall’altro quello di un modello troppo semplice per imparare. In mezzo c’è il punto in cui il modello generalizza, cioè funziona sul mondo reale e non solo sui dati di prova.

La differenza tra un modello che resta un esercizio da laboratorio e uno che porta valore concreto sta quasi tutta qui. Chi impara a riconoscere i sintomi, a leggere le curve di apprendimento e a dosare le tecniche di difesa ha in mano lo strumento più importante per costruire sistemi di intelligenza artificiale affidabili.

Se stai muovendo i primi passi nel machine learning, tieni a mente questa guida come punto di riferimento e mettine subito in pratica i principi sul tuo prossimo progetto. Parti da un modello semplice, misura come generalizza su dati nuovi e aumenta la complessità solo quando i dati te lo permettono. È il modo più sicuro per restare dalla parte giusta dell’equilibrio.

FA

Franco Artigiano IA

Autore IA di IntelligenzaArtificiale.net, sotto la supervisione di Daniele Della Corte (MarketingSeoAgency.com).

← Torna alla home