Thursday, 6 August 2026 | Updating Daily AI insight, written for builders

Overfitting nel machine learning: cos’è e come prevenirlo

Aggiornato · Pubblicato originariamente il 18 maggio 2026

Un modello di machine learning può ottenere il 99% di accuratezza nei test e poi fallire clamorosamente nel mondo reale. Il colpevole più frequente ha un nome: overfitting. Si tratta dell’errore più comune nell’applicazione pratica del machine learning, e comprenderlo è fondamentale per costruire modelli che funzionino davvero. Questa guida spiega in modo chiaro l’overfitting e ti fornisce metodi collaudati per prevenirlo.

Punti chiave

  • Overfitting si verifica quando un modello memorizza i dati di addestramento invece di apprendere il modello generale.
  • Il segnale: prestazioni eccellenti sui dati di addestramento, prestazioni scadenti su dati nuovi.
  • Il problema opposto è l’underfitting — un modello troppo semplice per apprendere qualsiasi schema.
  • Prevenilo con: più dati, un modello più semplice, regolarizzazione, validazione incrociata e arresto anticipato.
  • Esegui sempre test su dati mai visti dal modello — questa è l’unica misura onesta della qualità.

Cos’è l’overfitting?

L’overfitting si verifica quando un modello apprende i propri dati di addestramento troppo bene — inclusi il rumore, le stranezze e gli incidenti casuali che non rappresentano il vero schema. Invece di apprendere la regola generale, memorizza esempi specifici.

L'obiettivo del machine learning è la generalizzazione: ottenere buone prestazioni su nuovi dati mai visti prima. Un modello overfit fallisce proprio in questo compito: ha essenzialmente memorizzato le risposte all'esame di prova, quindi lo supera perfettamente — ma poi va in crisi nell'esame reale, perché le domande sono diverse.

Un’analogia semplice

Immaginate due studenti che si preparano per un compito di matematica.

Il primo comprende i concetti — i metodi, il ragionamento. Dategli qualsiasi problema, anche uno mai visto prima, e saprà risolverlo.

Il secondo memorizza esattamente i problemi d'esercitazione e le relative soluzioni, parola per parola. Nell'esame simulato ottiene il massimo dei voti. Nell'esame reale, con numeri diversi, è completamente perso — non ha mai imparato il metodo, ma solo le risposte specifiche.

Il secondo studente è un modello overfit: impeccabile sui dati di addestramento, incapace di affrontare qualsiasi nuovo dato.

Come riconoscere l'overfitting

L'overfitting presenta un segnale classico e inequivocabile: un ampio divario tra le prestazioni sui dati di addestramento e quelle sui dati di test.

Ecco perché è fondamentale suddividere sempre i dati: si addestra il modello su una porzione (il training set) e lo si valuta su una porzione separata, mai vista prima (il test set). Quindi:

  • Divario ridotto, entrambi i punteggi buoni → il modello generalizza bene. Situazione sana.
  • Punteggio di addestramento alto, punteggio di test molto più basso → overfitting. Il modello ha memorizzato.
  • Entrambi i punteggi scadenti → underfitting. Il modello è troppo semplice (ne parleremo più avanti).

Se il vostro modello eccelle sui dati di addestramento ma ottiene risultati mediocri sui dati di test, avete un caso di overfitting — punto e basta.

Il problema opposto: l'underfitting

L'overfitting ha una controparte speculare. L'underfitting si verifica quando un modello è troppo semplice per cogliere lo schema reale, ottenendo quindi prestazioni scadenti sia sui entrambi dati di addestramento che su quelli di test. Non ha memorizzato — non ha affatto imparato.

Questi due fenomeni definiscono un equilibrio che ogni professionista del machine learning deve gestire:

ProblemaPunteggio di addestramentoPunteggio di testCausa
L'underfittingScadenteScadenteModello troppo semplice
Adattamento correttoBuonoBuonoComplessità adeguata
OverfittingEccellenteScadenteModello troppo complesso / troppi pochi dati

L'obiettivo è la riga centrale: un modello sufficientemente complesso da apprendere lo schema, ma non così complesso da memorizzare il rumore.

Perché si verifica l'overfitting

Le cause più comuni sono:

  • Troppo pochi dati di addestramento — con pochi esempi, il modello può memorizzarli tutti invece di generalizzare.
  • Un modello troppo complesso — un modello molto flessibile possiede capacità sufficiente per adattarsi a ogni stranezza presente nei dati.
  • Addestramento protratto eccessivamente — oltre un certo punto, ulteriore addestramento serve solo a modellare ancor più rigidamente il rumore.
  • Dati rumorosi o di bassa qualità — più dati casuali o irrilevanti sono presenti, più elementi ci sono da 'imparare' erroneamente.
  • Troppe caratteristiche (features) — input irrilevanti forniscono al modello schemi fuorvianti su cui fissarsi.

Come prevenire l'overfitting

Non esiste una soluzione unica: i professionisti combinano diverse tecniche.

1. Ottenere più dati di addestramento

La cura più efficace. Con più esempi, la memorizzazione diventa impossibile e il modello è costretto ad apprendere lo schema autentico. Quando non è possibile raccoglierne di nuovi, l’aumento dei dati (data augmentation) — creare variazioni realistiche di quelli già disponibili (ad esempio ruotando o ritagliando immagini) — aiuta.

2. Semplificare il modello

Se il modello è troppo complesso, riducetene la capacità: meno parametri, architettura più superficiale, minor numero di caratteristiche. Provate sempre prima un modello più semplice — è meno soggetto a overfitting ed è più facile da interpretare.

3. Utilizzare la regolarizzazione

La regolarizzazione aggiunge una penalità per la complessità durante l'addestramento, scoraggiando il modello dal fare eccessivo affidamento su una singola caratteristica o dall'adattarsi a valori estremi. Si tratta di un'opzione standard e integrata nella maggior parte degli algoritmi di machine learning ed è uno degli strumenti più efficaci disponibili.

4. Utilizza la validazione incrociata

La validazione incrociata testa il modello su diverse suddivisioni dei dati, anziché su una sola. Fornisce una stima più onesta e stabile delle prestazioni nel mondo reale e rivela rapidamente un modello che sembra buono solo per una suddivisione fortunata.

5. Interrompi l’addestramento in anticipo

Monitora le prestazioni su un insieme di validazione durante l’addestramento. Quando le prestazioni sulla validazione smettono di migliorare e iniziano a peggiorare, interrompi: proseguire oltre quel punto fa sì che il modello si adatti semplicemente al rumore. Questa tecnica è detta early stopping.

6. Usa il dropout (per le reti neurali)

Per reti neurali, il dropout disattiva casualmente alcuni neuroni a ogni passo di addestramento. Ciò impedisce alla rete di fare eccessivo affidamento su un singolo percorso e la costringe ad apprendere schemi più robusti e generali.

7. Riserva sempre un vero insieme di test

Obbligatorio: tieni da parte una porzione di dati che il modello non vede mai durante l’addestramento o l’ottimizzazione, e valuta il modello esclusivamente su quella. È l’unica misura onesta delle sue prestazioni nel mondo reale.

Data leakage: la causa nascosta di risultati falsamente eccellenti

Gran parte di questa guida tratta l’overfitting come un problema di modellazione — un modello troppo complesso per troppo pochi dati. Esiste però una causa più silenziosa che produce lo stesso sintomo e inganna molti più professionisti: il data leakage. Il leakage si verifica quando informazioni non disponibili al momento della previsione entrano accidentalmente nel processo di addestramento. Il modello appare brillante nei test, ma crolla in produzione. Se i tuoi punteggi di validazione sembrano troppo buoni per essere veri, sospetta prima il leakage piuttosto che la fortuna.

Esistono due categorie principali da tenere d’occhio:

  • Contaminazione tra addestramento e test. I dati di test infiltrano il processo di addestramento. L’errore classico riguarda la fase di preprocessing e prima di suddivisione: se normalizzi, standardizzi o imputi valori mancanti usando statistiche calcolate sull’intero dataset, il tuo insieme di addestramento ha già "visto" la media e l’intervallo dell’insieme di test. Suddividi sempre prima, poi adatta ogni trasformatore esclusivamente sui dati di addestramento e applicalo all’insieme di test.
  • Target leakage. Una caratteristica codifica segretamente la risposta. Un modello che prevede se un paziente ha una certa malattia apparirà quasi perfetto se uno degli input è "farmaco prescritto per quella malattia" — un’informazione che esiste soltanto dopo la diagnosi. Tale caratteristica non è disponibile nel momento in cui serve effettivamente una previsione, quindi il punteggio è illusorio.

I dati ordinati temporalmente aggiungono una terza insidia. Mescolare casualmente una serie temporale prima della suddivisione permette al modello di addestrarsi sul futuro per prevedere il passato, violando la causalità e gonfiando artificialmente l’accuratezza. Per qualsiasi dato con timestamp, effettua la suddivisione in ordine cronologico: addestra sui periodi precedenti, testa su quelli successivi.

Il leakage è pericoloso proprio perché nessuna delle correzioni descritte altrove in questo articolo lo rileva. Più dati, regolarizzazione ed early stopping presuppongono che la tua valutazione sia onesta. Se l’insieme di test è contaminato, ogni segnale su cui fai affidamento per rilevare l’overfitting è esso stesso compromesso — pertanto il modello supera tutti i controlli ma fallisce comunque con gli utenti reali.

Tre buone abitudini ne prevengono la maggior parte. Primo, incapsula preprocessing e modello in una singola pipeline (scikit-learn offre la classe Pipeline che fa esattamente questo), in modo che le trasformazioni vengano adattate esclusivamente sui fold di addestramento. Secondo, esamina criticamente le caratteristiche sospettosamente forti chiedendoti: saprei davvero questo valore nel momento esatto in cui devo effettuare la previsione? Se la risposta è no, scartala. Terzo, quando i risultati appaiono straordinari, considerali un campanello d’allarme da investigare, non una vittoria da celebrare. Una vera capacità di generalizzazione raramente appare senza sforzo.

Domande frequenti

Cos’è l’overfitting nell’apprendimento automatico?

L’overfitting si verifica quando un modello apprende i dati di addestramento troppo bene — memorizzando rumore e anomalie invece del modello generale. Ottiene prestazioni eccellenti sui dati di addestramento, ma scarse su nuovi dati mai visti, perché non ha mai imparato a generalizzare.

Come faccio a sapere se il mio modello sta subendo overfitting?

Confronta le sue prestazioni sui dati di addestramento rispetto a quelli di test (dati mai visti). Se ottiene punteggi molto più alti sull’addestramento che sul test, sta subendo overfitting. Un modello sano ottiene prestazioni simili su entrambi.

Qual è la differenza tra overfitting e underfitting?

L’overfitting è causato da un modello troppo complesso, che memorizza i dati di addestramento e fallisce su dati nuovi. L’underfitting è causato da un modello troppo semplice per cogliere affatto il modello sottostante, quindi performa male sia sull’addestramento che sui nuovi dati. L’obiettivo è trovare un equilibrio.

Come si previene l’overfitting?

Usa più dati di addestramento, scegli un modello più semplice, applica tecniche di regolarizzazione, utilizza la validazione incrociata e interrompi l’addestramento non appena le prestazioni sulla validazione smettono di migliorare. Per le reti neurali, il dropout aiuta ulteriormente. La maggior parte dei professionisti combina diverse di queste tecniche.

Più dati risolvono sempre l’overfitting?

Più dati di alta qualità rappresentano la cura più affidabile, poiché rendono impossibile la memorizzazione e costringono l’algoritmo ad apprendere in modo autentico. Tuttavia, non sono sempre disponibili — ed è per questo che semplificare il modello, applicare regolarizzazione e usare l’early stopping sono alternative pratiche fondamentali.

Cos’è il data leakage e come differisce dall’overfitting?

L’overfitting è un modello che memorizza rumore presente nei dati di addestramento legittimamente disponibili. Il data leakage è invece l’introduzione di informazioni che non dovrebbero essere disponibili — come statistiche dell’insieme di test o una caratteristica che codifica direttamente la risposta — nel processo di addestramento. Entrambi producono lo stesso sintomo (eccellenti punteggi di test, scarse prestazioni nel mondo reale), ma il leakage è più insidioso: rende inaffidabile la stessa valutazione, quindi i consueti controlli per l’overfitting non riescono a rilevarlo. La soluzione è l’igiene dei dati — suddividi prima del preprocessing e verifica criticamente ogni caratteristica che sembri eccessivamente predittiva.

Perché il mio modello subisce overfitting quando fine-tuno un LLM su un piccolo dataset?

Piccoli dataset per il fine-tuning rappresentano un rischio classico di overfitting: con pochi esempi, il modello li memorizza invece di apprendere il modello sottostante. Il segnale tipico è una diminuzione della loss di addestramento accompagnata da un aumento della loss di validazione. Le soluzioni standard sono limitare il numero di epoche (spesso bastano poche) e usare metodi efficienti in termini di parametri, come LoRA, che vincola gli aggiornamenti a un sottoinsieme ridotto di pesi e agisce come regolarizzazione integrata contro la memorizzazione.

È accettabile un piccolo divario tra accuratezza sull’addestramento e sul test?

Sì. Un piccolo divario è normale e salutare — nessun modello performa identicamente sui dati già visti e su quelli mai visti. L’overfitting è indicato da un divario ampio o in crescita , dove l’accuratezza sull’addestramento continua a salire mentre quella sul test si stabilizza o diminuisce. Cercare un divario nullo di solito porta invece all’underfitting. Valuta un modello in base alle sue prestazioni sull’insieme di test, e considera il divario come un segnale di allerta sul trend di comportamento, non come un numero da eliminare.

Conclusione

L’overfitting è il divario tra l’apparire bravi e l’esserlo davvero. Un modello che memorizza i dati di addestramento ti lascerà a bocca aperta nei test, ma ti deluderà in produzione: ha imparato le risposte, non il metodo.

La difesa è semplice: valuta sempre su dati che il modello non ha mai visto, osserva attentamente il divario tra prestazioni sull’addestramento e sul test, e preveni l’overfitting con più dati, modelli più semplici, regolarizzazione, validazione incrociata e early stopping. Padronanzia questo equilibrio e costruirai modelli che funzionano non solo sulla tua scrivania, ma nel mondo reale. Per una visione d’insieme, consulta il nostro guida al machine learning.

Scritto da Mustafa Ihsan

Mustafa Ihsan è fondatore e redattore capo di Convly.ai. Ha progettato e gestisce il database in tempo reale di modelli IA del sito, il suo indice prezzo-prestazioni e i suoi calcolatori gratuiti per i requisiti di VRAM, i costi delle API e l'economia dell'auto-hosting. Scrive di prezzi dei modelli, risultati di benchmark e hardware necessario per eseguire modelli IA localmente, privilegiando costantemente dati misurati rispetto alle dichiarazioni dei produttori.

Scroll to Top
Featured on There's An AI For That