<marco />
← Tutti gli articoli
11 min di lettura

Regolarizzazione e validazione: tenere a bada l'overfitting

aiprogrammazione

Nell'articolo su bias e varianza un polinomio di grado 11 stimato su 12 punti passava esattamente per tutti i punti di addestramento, ma sbagliava di molto su dati nuovi. Per tenere a bada questo problema servono due strumenti complementari:

  • la regolarizzazione penalizza la complessità del modello durante la stima, così che si adatti meno al rumore e sbagli meno su dati nuovi (cioè generalizzi meglio);
  • la validazione stima quanto il modello sbaglia su dati nuovi, e permette di scegliere tra modelli diversi.

Regolarizzazione

Un modello semplice tende ad avere bassa varianza, ma un bias elevato, perché potrebbe non essere abbastanza flessibile da descrivere correttamente i dati. Al contrario, un modello molto complesso può adattarsi meglio ai dati, ma rischia di avere una varianza elevata e di apprendere anche il rumore presente nel campione.

La regolarizzazione permette di mantenere un modello sufficientemente complesso, limitandone però la flessibilità attraverso una penalizzazione. A tal fine, invece di minimizzare soltanto l'errore sui dati, si minimizza una funzione obiettivo aumentata:

Eaug(θ)=∑i=1N(y(i)−φ(i)⊤θ)2+λ Ω(θ)E_\text{aug}(\theta) = \sum_{i=1}^{N} \bigl(y(i) - \varphi(i)^\top\theta\bigr)^2 + \lambda\,\Omega(\theta)

Il primo termine rappresenta l'errore di adattamento ai dati, mentre il secondo, Ω(θ)\Omega(\theta), introduce una penalizzazione che limita la complessità del modello. L'iperparametro λ≥0\lambda \ge 0 controlla l'intensità della penalizzazione: valori piccoli di λ\lambda privilegiano l'adattamento ai dati, mentre valori grandi impongono una maggiore regolarizzazione, riducendo la flessibilità del modello.

L'obiettivo è trovare un equilibrio tra bias e varianza, evitando sia un modello troppo semplice, che rischia di non cogliere le relazioni presenti nei dati, sia un modello troppo complesso, che rischia di sovradattarsi (overfitting).

Il regolarizzatore più comune è la regolarizzazione L2, o Ridge: la somma dei quadrati dei coefficienti, Ω(θ)=∑jθj2\Omega(\theta) = \sum_j \theta_j^2. Per la regressione lineare la soluzione resta in forma chiusa: si aggiunge solo λ\lambda sulla diagonale delle equazioni normali:

θ^reg=(X⊤X+λI)−1X⊤Y\hat\theta_\text{reg} = (X^\top X + \lambda I)^{-1} X^\top Y

Il termine λI\lambda I ha anche un effetto collaterale utile: rende la matrice invertibile anche quando X⊤XX^\top X non lo è.

Riprendiamo il polinomio di grado 11 su 12 punti, e cambiamo solo λ\lambda:

λ\lambda bias² varianza EoutE_\text{out}
0 0,000 3,045 3,135
0,000001 0,000 0,157 0,247
0,0001 0,000 0,069 0,159
0,01 0,004 0,038 0,132
1 0,136 0,015 0,241
10 0,362 0,005 0,457

Una penalità piccola fa diminuire la varianza. Con λ=0,01\lambda = 0{,}01 il polinomio di grado 11 fa quasi come il miglior polinomio di grado 3 dell'articolo precedente (0,121). Esagerando, il modello diventa troppo rigido: al limite tutti i coefficienti vanno a zero e resta una retta orizzontale. La regolarizzazione accetta un po' di bias in più in cambio di molta varianza in meno.

Ridge e Lasso

Un'altra tecnica di regolarizzazione molto utilizzata è la regolarizzazione L1, o Lasso, che penalizza la somma dei valori assoluti dei coefficienti:

Ω(θ)=∑j∣θj∣\Omega(\theta) = \sum_j |\theta_j|

La differenza principale rispetto alla regolarizzazione Ridge (L2) riguarda il modo in cui vengono modificati i coefficienti:

  • Ridge (L2) riduce i valori dei coefficienti, ma generalmente non li porta esattamente a zero.
  • Lasso (L1) può portare alcuni coefficienti esattamente a zero, escludendo di fatto le variabili corrispondenti dal modello. In questo modo, oltre a regolarizzare, effettua anche una selezione automatica delle feature.

Questa differenza si può comprendere dal punto di vista geometrico, riscrivendo il problema come un problema di minimo vincolato. In entrambi i casi si minimizza l'errore sui dati, imponendo un limite alla grandezza dei coefficienti:

  • per Ridge, il vincolo è ∑jθj2≤c\sum_j \theta_j^2 \le c, che in due dimensioni definisce un cerchio;
  • per Lasso, il vincolo è ∑j∣θj∣≤c\sum_j |\theta_j| \le c, che in due dimensioni definisce un rombo.
θ₁ θ₂ θ̂ Ridge: Σθⱼ² ≤ c soluzione: θ₁ ≠ 0, θ₂ ≠ 0 θ₁ θ₂ θ̂ Lasso: Σ|θⱼ| ≤ c soluzione sul vertice: θ₁ = 0

Le curve di livello della funzione di errore tendono a toccare il rombo del Lasso in corrispondenza dei suoi vertici, dove almeno un coefficiente è esattamente zero.

Infine, la elastic net combina le penalizzazioni L1 e L2, unendo la capacità di Lasso di selezionare le variabili con quella di Ridge di ridurre e stabilizzare i coefficienti.

Validazione

L'errore in-sample è ottimista perché i dati sono gli stessi usati per stimare il modello. La soluzione più diretta è tenerne da parte una porzione:

  1. si separa un validation set, che non si usa per la stima;
  2. si stima il modello sui dati rimanenti (training set);
  3. si misura l'errore sul validation set: è una stima corretta dell'errore out-of-sample;
  4. alla fine si ristima il modello su tutti i dati.

Un validation set troppo piccolo dà una stima imprecisa; uno troppo grande toglie dati all'addestramento.

La validazione serve anche a scegliere: il grado del polinomio, quali regressori usare, il valore di λ\lambda. Si stima ogni candidato sul training set e si tiene quello con l'errore di validazione più basso.

Attenzione: a forza di usare il validation set per scegliere, le scelte si adattano ai suoi dati particolari, e il suo errore torna ottimista. Si sta facendo overfitting sul validation set. Per questo, con abbastanza dati, si divide in tre parti:

Training (60%) Validation (20%) Test (20%)
stima del modello scelte sul modello stima finale dell'errore (il test set si usa una volta sola)

Cross-validazione

Con pochi dati, sacrificarne il 40% è troppo costoso. La cross-validazione K-fold li usa tutti: si dividono i dati in KK parti; a turno ciascuna fa da validation set e le altre da training set. L'errore di cross-validazione è la media dei KK errori. Un buon compromesso è K=10K = 10.

Il caso estremo, K=NK = N, è il leave-one-out: si toglie un dato alla volta. Sfrutta al massimo i dati, ma richiede NN stime e l'errore che produce ha varianza alta.

Criteri di complessità: AIC e MDL

Quando i dati sono molto pochi, è possibile stimare l'errore su dati nuovi a partire dal solo training set, aggiungendo all'errore una penalizzazione che cresce con il numero dd di parametri del modello. Due criteri molto utilizzati sono l'AIC (Akaike Information Criterion) e l'MDL (Minimum Description Length):

AIC(d)=2 dN+ln⁡J(θ^N)\text{AIC}(d) = 2\,\frac{d}{N} + \ln J(\hat\theta_N) MDL(d)=ln⁡N⋅dN+ln⁡J(θ^N)\text{MDL}(d) = \ln N \cdot \frac{d}{N} + \ln J(\hat\theta_N)

dove NN è il numero di dati disponibili, dd è il numero di parametri del modello e J(θ^N)J(\hat\theta_N) è l'errore quadratico medio, calcolato sugli stessi dati usati per la stima.

All'aumentare di dd, l'errore JJ tende a diminuire, mentre la penalizzazione aumenta. Si sceglie quindi il valore di dd che minimizza il criterio complessivo, cercando un equilibrio tra adattamento ai dati e complessità del modello.

La differenza tra i due criteri risiede nel fattore che moltiplica il numero di parametri: 22 per AIC e ln⁡N\ln N per MDL. Quando N>e2≈7,39N > e^2 \approx 7{,}39, cioè per almeno 8 dati, MDL applica una penalizzazione maggiore rispetto ad AIC e tende quindi a preferire modelli più semplici, a parità di errore.

Nell'identificazione dei sistemi dinamici si utilizza spesso anche il criterio FPE (Final Prediction Error), che stima l'errore di previsione su dati non utilizzati per la stima e svolge un ruolo analogo a quello di AIC nella selezione della complessità del modello.

  • La regolarizzazione aggiunge al costo una penalità sulla complessità: accetta un po' di bias in più per ridurre molto la varianza.
  • Ridge (L2) rimpicciolisce tutti i coefficienti; Lasso (L1) ne porta alcuni esattamente a zero.
  • La validazione stima l'errore su dati nuovi e serve a scegliere iperparametri e modelli; con molti dati si divide in training, validation e test.
  • Con pochi dati si usa la cross-validazione; con pochissimi, criteri come AIC e MDL.