Vai al contenuto principale

Regolarizzazione nel Machine Learning: L1, L2 ed Elastic Net spiegate

Una panoramica pratica della regolarizzazione nel machine learning: cos'è, come funziona e quando usare L1, L2 ed Elastic Net per costruire modelli che generalizzano.
Aggiornato 4 mag 2026  · 9 min leggi

Hai addestrato un modello che azzecca quasi alla perfezione ogni esempio di training, ma fallisce sui nuovi dati? Ci siamo passati tutti.

Questa è una definizione ad alto livello di overfitting. Il tuo modello non ha imparato il vero schema, ma ha memorizzato i dati di training. In produzione, con dati nuovi e mai visti, farebbe previsioni di cui non ti fideresti. Più i dati reali si allontanano dai campioni di training, peggio va.

La regolarizzazione risolve aggiungendo una penalità alla funzione di perdita. Quella penalità scoraggia i modelli complessi. In altre parole, è il meccanismo che impedisce al modello di adattarsi a ogni singolo punto dati e lo costringe invece a generalizzare.

In questo articolo ti guiderò nell'intuizione alla base della regolarizzazione, nei metodi più comuni - L1, L2 ed Elastic Net - e su come scegliere quello giusto per il tuo caso d'uso.

Se vuoi capire perché e come i modelli di machine learning falliscono in produzione, leggi il nostro post sul blog Compromesso bias-varianza.

Cos'è la regolarizzazione nel Machine Learning

La regolarizzazione è una tecnica che aggiunge un termine di penalità alla funzione di perdita del modello per scoraggiare la complessità.

Senza questo termine, un modello è abbastanza flessibile da adattarsi ai dati di training quanto vuole, inclusi rumore e outlier. La regolarizzazione aggiunge un costo a quella flessibilità. Più il modello vuole essere complesso, più alta sarà la penalità.

La funzione di perdita del modello di solito misura la differenza tra valori previsti e reali. La regolarizzazione aggiunge un termine extra a quell'equazione, che cresce al crescere dei coefficienti del modello. Il modello ora deve bilanciare due obiettivi in competizione: adattarsi ai dati di training e mantenere piccoli i coefficienti.

Questo equilibrio è ciò che controlla la flessibilità del modello.

Un modello molto flessibile può contorcersi in qualsiasi forma per adattarsi ai dati di training. La regolarizzazione lo riporta a una forma più semplice, più probabile da reggere su dati che il modello non ha mai visto.

Perché serve la regolarizzazione

Ogni modello che addestri si colloca tra due estremi inutilizzabili: uno troppo semplice e uno troppo complesso.

Un modello troppo semplice non coglie i veri pattern nei dati. Perde il segnale. Questo è underfitting: il modello va male sia sui dati di training sia su quelli nuovi.

Un modello troppo complesso fa l'opposto. Si adatta a ogni dettaglio dei dati di training, incluso il rumore. Questo è overfitting: il modello va benissimo sui dati di training, ma fallisce su quelli nuovi perché ha memorizzato le cose sbagliate.

Prendi la regressione polinomiale come esempio concreto. Un polinomio di grado 3 tracciato su dati che mostrano una curva dolce probabilmente intercetta il pattern corretto. Ma un polinomio di grado 15 sugli stessi dati porta all'overfitting: la curva passa per ogni punto dati, ma fa previsioni casuali tra un punto e l'altro.

Il grafico qui sotto mostra come appare in pratica.

Modello giusto contro modello troppo complesso

Modello giusto contro modello troppo complesso

Questo è il compromesso bias-varianza.

I modelli semplici hanno alto bias: fanno forti assunzioni che mancano i pattern reali. I modelli complessi hanno alta varianza: sono troppo sensibili ai campioni specifici visti in training e piccoli cambiamenti nei dati producono modelli molto diversi.

La regolarizzazione ti aiuta a ottenere il meglio di entrambi. Non elimina la complessità, ma la penalizza. Di conseguenza, il tuo modello ha maggiori probabilità di apprendere il vero segnale.

Come funziona la regolarizzazione

Ogni modello impara minimizzando una funzione di perdita, una misura di quanto siano sbagliate le sue previsioni. Senza regolarizzazione, il compito del modello è solo minimizzare quell'errore. Farà di tutto, inclusi coefficienti grandi che si adattano ai dati di training ma non generalizzano.

La regolarizzazione cambia l'obiettivo. Invece di minimizzare solo l'errore, ora il modello minimizza questo:

Come funziona la regolarizzazione

Come funziona la regolarizzazione

Il termine di penalità è una funzione dei coefficienti del modello. Coefficienti grandi fanno aumentare la penalità. Per mantenere basso il costo totale, il modello è costretto a mantenere piccoli i coefficienti, cioè soluzioni più semplici e più generalizzabili.

La λ (lambda) controlla quanto conti la penalità. Una λ più alta esercita più pressione affinché il modello resti semplice. Una λ più bassa lascia al modello più margine per adattarsi ai dati. Vedrai come sintonizzarla nella sezione Scelta dell'intensità della regolarizzazione qui sotto.

Tipi di regolarizzazione nel Machine Learning

Ci sono diversi modi per penalizzare la complessità del modello. Ognuno esercita pressione sui coefficienti in modo diverso, quindi è adatto a situazioni differenti.

Regolarizzazione L2 (regressione Ridge)

La regolarizzazione L2 penalizza il valore quadratico di ciascun coefficiente. Più un coefficiente è grande, più contribuisce alla penalità e più il modello cerca di ridurlo.

Regolarizzazione L2

Regolarizzazione L2

La parola chiave qui è ridurre. L2 spinge tutti i coefficienti verso zero, ma non arriva mai esattamente a zero. Ogni feature resta nel modello, solo con un peso più piccolo. Questo rende Ridge una buona scelta di default quando credi che la maggior parte delle feature sia rilevante e vuoi un modello stabile e ben comportato.

Regolarizzazione L1 (regressione Lasso)

La regolarizzazione L1 penalizza il valore assoluto di ciascun coefficiente invece del quadrato.

Regolarizzazione L1

Regolarizzazione L1

Questa piccola differenza ha una grande conseguenza. L1 può spingere i coefficienti fino a esattamente zero, il che significa rimuovere feature dal modello. Puoi pensarla come una selezione automatica delle feature. In altre parole, la regolarizzazione Lasso può semplificare il modello rimuovendo feature.

L1 vs L2

La differenza principale riguarda la sparsità. L1 produce modelli sparsi: solo un sottoinsieme di feature passa. L2 produce modelli densi: tutte le feature restano, con pesi minori.

Questo incide anche sull'interpretabilità. Un modello Lasso con 5 feature attive è più facile da spiegare di un modello Ridge con 50 feature che contribuiscono un po' ciascuna. Ma Ridge tende a essere più stabile quando le feature sono correlate tra loro, perché distribuisce il peso invece di sceglierne una in modo arbitrario.

Ecco una rapida panoramica delle differenze:

Regolarizzazione L1 contro L2

Regolarizzazione L1 contro L2

Se vuoi vedere il confronto in Python, consulta il nostro tutorial su Lasso e Ridge Regression in Python.

Regolarizzazione Elastic Net

Elastic Net combina L1 e L2 in un unico termine di penalità.

Regolarizzazione Elastic Net

Regolarizzazione Elastic Net

L'idea è ottenere il meglio di entrambi: la selezione delle feature di L1 e la stabilità di L2. È utile quando hai feature correlate e vuoi comunque eliminarne alcune. Lasso tende a scegliere una feature da un gruppo correlato e ignorare le altre. Elastic Net è più propenso a mantenerne alcune pur rimuovendo quelle irrilevanti.

Regolarizzazione in modelli diversi

La regolarizzazione compare in molti modelli di machine learning, ma in forme diverse. Vediamo quali sono.

La regressione lineare è dove la maggior parte delle persone incontra per prima la regolarizzazione. Se aggiungi L2 alla regressione lineare ottieni la Ridge. Allo stesso modo, aggiungendo L1 ottieni la Lasso. La matematica è la stessa descritta sopra: un termine di penalità aggiunto alla perdita dei minimi quadrati.

La regressione logistica funziona allo stesso modo. La funzione di perdita cambia (è l'entropia incrociata invece dell'errore quadratico), ma il termine di penalità è identico. La maggior parte delle librerie di machine learning applica L2 alla regressione logistica per impostazione predefinita, motivo per cui vedrai un parametro chiamato C in scikit-learn. È l'inverso di λ, quindi un C più piccolo significa regolarizzazione più forte.

Le reti neurali usano alcuni approcci diversi:

  • Weight decay: regolarizzazione L2 applicata ai pesi della rete, funziona allo stesso modo ma su scala molto maggiore
  • Dropout: durante l'addestramento disabilita casualmente una frazione di neuroni a ogni passaggio, impedendo alla rete di fare troppo affidamento su un singolo percorso tra i layer.

Entrambi riducono l'overfitting, ma con mezzi diversi.

I modelli basati su alberi non usano penalità sulla perdita. Invece controllano la complessità tramite pruning: limitano quanto può crescere in profondità un albero o rimuovono rami che non migliorano abbastanza le previsioni da giustificarne l'esistenza. Iperparametri come max_depth e min_samples_split in scikit-learn sono parametri di regolarizzazione, anche se non vengono chiamati così.

Regolarizzazione e compromesso bias-varianza

La regolarizzazione è tutta una questione di compromessi.

Quando aggiungi una penalità, stai limitando ciò che il modello può fare. Non può più adattarsi ai dati di training quanto vuole. Quel vincolo introduce bias: il modello fa ipotesi leggermente sbagliate per progetto, perché gli hai detto di restare semplice.

Ma lo stesso vincolo riduce la varianza. Un modello che non può adattarsi a ogni punto dati è meno sensibile ai campioni specifici su cui è stato addestrato. Se lo addestri su un dataset leggermente diverso, otterrai un risultato simile. Quella stabilità è ciò che davvero vuoi, così il modello non fallisce in produzione.

Senza regolarizzazione, ottieni un modello molto flessibile con basso bias (fa poche assunzioni e si adatta bene ai dati di training) e alta varianza (piccoli cambiamenti nei dati di training producono modelli molto diversi, quindi non è affidabile sui dati nuovi).

La regolarizzazione sposta l'equilibrio. Un po' più di bias in cambio di molta meno varianza di solito porta a prestazioni migliori su dati mai visti. È il compromesso, e quasi sempre vale la pena.

Scelta dell'intensità della regolarizzazione

Come praticante di machine learning, dovrai impostare l'intensità della regolarizzazione dopo aver scelto il tipo di regolarizzazione.

Questa intensità è controllata da un iperparametro, di solito chiamato lambda (λ) nella notazione matematica, o alpha in scikit-learn. È il moltiplicatore davanti al termine di penalità. Quando lo cambi, cambi quanto forte il modello viene spinto verso la semplicità.

Se lo imposti male in un senso o nell'altro, avrai problemi in produzione:

  • Troppo basso: la penalità è troppo debole per contare. Il modello va in overfitting, come se non avessi alcuna regolarizzazione.
  • Troppo alto: la penalità diventa il fattore dominante. Il modello è così vincolato che non riesce a cogliere i pattern reali nei dati. È underfitting.

Il valore giusto sta nel mezzo, e non esiste una risposta universale. Dipende dai tuoi dati, dal modello e da quanto rumore c'è.

Il modo standard per trovarlo è la cross-validation. Suddividi i dati di training in fold, addestri il modello su ogni combinazione di fold e misuri le prestazioni in validazione su un intervallo di valori di alpha. Il valore che dà il miglior punteggio medio di validazione è quello da usare.

In scikit-learn, RidgeCV e LassoCV possono farlo automaticamente: eseguono la cross-validation su una griglia di valori di alpha e selezionano il migliore per te.

from sklearn.linear_model import RidgeCV

model = RidgeCV(alphas=[0.01, 0.1, 1.0, 10.0], cv=5)
model.fit(X_train, y_train)

print(model.alpha_)

L'alpha stampato mostrerà il valore migliore trovato con la cross-validation. Parti da un intervallo ampio di valori, poi restringilo una volta individuata l'area ottimale.

Conclusione

La regolarizzazione è il modo per impedire a un modello di essere troppo furbo per il suo bene.

Penalizza la complessità, costringendo il modello a trovare soluzioni che generalizzano invece di memorizzare i dati di training. L2 mantiene tutte le feature riducendone l'influenza. L1 rimuove le feature irrilevanti. Elastic Net combina entrambe. E tra modelli lineari, regressione logistica, reti neurali e modelli a insiemi, la stessa idea compare in forme diverse e non sempre si chiama "regolarizzazione".

La cosa più importante è la tecnica che scegli e l'intensità che imposti. Quindi, quello che dovresti fare è sperimentare. Prova approcci diversi con valori di parametro diversi. Non fermarti al primo che capita.

Saranno i tuoi dati a dirti cosa funziona.

Se vuoi vedere altre tecniche di regolarizzazione in azione, iscriviti al nostro percorso Machine Learning Scientist in Python. Offre 85 ore di materiali per prepararti al lavoro.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Senior Data Scientist con base in Croazia. Top Tech Writer con oltre 700 articoli pubblicati, per più di 10 milioni di visualizzazioni. Autore del libro Machine Learning Automation with TPOT.

FAQs

Cos'è la regolarizzazione nel machine learning?

La regolarizzazione è una tecnica che aggiunge un termine di penalità alla funzione di perdita di un modello per scoraggiare la complessità. Previene l'overfitting costringendo il modello a mantenere piccoli i coefficienti, il che porta a soluzioni più semplici che generalizzano meglio su nuovi dati.

Quando dovrei usare la regolarizzazione?

Usa la regolarizzazione ogni volta che il tuo modello va bene sui dati di training ma male su quelli di validazione o test: quel divario è un segnale di overfitting. È anche una buona pratica di default quando lavori con dati ad alta dimensionalità o quando il numero di feature è vicino o superiore al numero di campioni.

La regolarizzazione migliora sempre le prestazioni del modello?

Non sempre. Se il tuo modello sta già facendo underfitting, aggiungere regolarizzazione peggiorerà le cose spingendolo verso soluzioni ancora più semplici. L'obiettivo è trovare il giusto equilibrio: la regolarizzazione aiuta quando il modello è troppo complesso, non quando è troppo semplice.

Qual è la differenza tra alpha nella Lasso e C nella regressione logistica?

Entrambi controllano l'intensità della regolarizzazione, ma in direzioni opposte. alpha in Lasso scala la penalità: un valore più alto significa regolarizzazione più forte. C nella regressione logistica di scikit-learn è l'inverso dell'intensità della penalità, quindi un C più piccolo significa regolarizzazione più forte. Se passi dall'uno all'altro, ricorda che aumentare alpha e diminuire C hanno lo stesso effetto.

Posso usare insieme la regolarizzazione L1 e L2?

Sì: è esattamente ciò che fa Elastic Net. Combina entrambi i termini di penalità in un unico obiettivo, offrendoti la selezione delle feature di L1 e la stabilità di L2 allo stesso tempo. È utile quando hai feature correlate e vuoi comunque un po' di pruning, dato che Lasso tende a eliminare arbitrariamente tutte tranne una feature da un gruppo correlato.

Argomenti

Impara con DataCamp

Corso

Machine Learning con modelli ad alberi in Python

5 h
115.8K
In questo corso imparerai come usare modelli basati su alberi e insiemi per la regressione e la classificazione usando scikit-learn.
Vedi dettagliRight Arrow
Inizia il corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra altroMostra altro