)
Serie 1 · Fondamenti del Machine Learning

Overfitting vs. generalizzazione

Un modello che fitta perfettamente i dati di training può comunque essere inutile: l'obiettivo non è errore zero ma la generalizzazione — predire al meglio i casi mai visti — il che significa resistere alla tentazione dell'overfitting.

← Tutti gli argomenti
Un modello molto complesso passa per ogni punto di training ma oscilla vistosamente tra un punto e l'altro, sbagliando di grosso la predizione per un'età mai vista.

C’è una trappola nascosta in “rendi la loss la più piccola possibile”. Presa alla lettera, si può quasi sempre portare la loss a zero — basta rendere il modello abbastanza complesso, con abbastanza pesi, e sarà in grado di riprodurre esattamente un output del training set dato l’input. Nel nostro esempio semplificato con un solo input e un solo output, è come dire che al crescere del numero dei pesi esisterà sempre una funzione (il modello) che passerà esattamente per ogni singolo punto del training set.

Il problema è ciò che succede tra i punti.

Guarda di nuovo i dati età/reddito (qui sopra), stavolta fittati con un modello più complesso di una semplice retta. Passa perfettamente per ogni punto — loss di training pari a zero — ma per farlo oscilla su e giù in modo marcato nel mezzo. Chiedigli di predire il reddito di un cinquantenne, un valore su cui non è stato allenato, e produce qualcosa di assurdo. Ha memorizzato i dati invece di imparare lo schema. Questo è l’overfitting.

Ciò che vogliamo davvero è la generalizzazione: buone predizioni su dati che il modello non ha mai visto. È l’intero scopo di un predittore. La vera abilità sta nel trovare il giusto compromesso tra fittare i dati e generalizzare oltre di essi:

Come si valuta se il modello allenato è davvero capace di generalizzare? Si dividono i dati disponibili in un training set (80–90%) e un test set (10–20%). Si allena il modello sul training set, poi si misura la performance sul test set, che per il modello rappresenta un dato mai visto ma di cui noi conosciamo gli output osservati nel mondo reale. Se il modello predice in modo sufficientemente accurato il test set, ha generalizzato; se eccelle sui dati di training ma fallisce sul test set, siamo in una situazione di overfitting.

È anche per questo che un modello di machine learning ha due fasi distinte: una fase di training, in cui i pesi vengono appresi, e una fase d’uso (o inferenza), in cui il modello “congelato” fa predizioni su nuovi input.