Salta al contenuto
Note per Studenti Esercizio - Ridge regression con standardizzazione e coefficienti in unità originali

Esercizio - Ridge regression con standardizzazione e coefficienti in unità originali

Questa pagina non ha ancora la versione ripasso: qui sotto c'è il testo completo.

In questa pagina 5

Testo. Quattro osservazioni con due feature molto correlate: X=[110220325445]X=\begin{bmatrix}1&10\\2&20\\3&25\\4&45\end{bmatrix} e y=[3,5,6,12]y=[3,5,6,12].

  1. Standardizzare le feature (con media e deviazione standard del training) e centrare yy.
  2. Calcolare i coefficienti OLS e quelli della ridge con λ=1\lambda=1 sui dati standardizzati.
  3. Riportare i coefficienti nelle unità originali delle feature e verificare che le previsioni coincidono.
  4. Commentare la differenza tra OLS e ridge.

Teoria usata: Overfitting, ridge regression e cross-validationUna buona prestazione sul training non basta: serve stimare quella su dati nuovi. La cross-validation (K-fold: $k$ parti, ciascuna a turno come test, errore medio; Monte Carlo: $k$ divisioni casuali con quota di test $q$; leave-one-out se $k=n$) evita di dipendere da una sola divisione casuale. L'errore atteso si scompone in $\text{bias}^2+\text{varianza}+\sigma^2$: i modelli semplici fanno underfitting (bias alto), quelli complessi overfitting (varianza alta). La regolarizzazione aggiunge alla perdita una penalità: la ridge regression minimizza $|y-X\beta|^2+\lambda\sum_{j\ge1}\beta_j^2$ e ha soluzione $\beta=(X^TX+\lambda\tilde I)^{-1}X^Ty$ (l'intercetta non si penalizza, le feature si standardizzano): riduce i coefficienti, rende l'inversa stabile con feature collineari, e $\lambda$ è un iperparametro scelto con la validazione (cross-validation annidata per non contaminare il test).Overfitting, ridge regression e cross-validation → (ridge, standardizzazione, coefficienti in unità originali); Regressione lineareNell'apprendimento supervisionato si impara una funzione $F(x)$ dagli esempi $(x,y)$: regressione se $y$ è continua, classificazione se è categorica. Il modello lineare è $F_\beta(x)=\beta_0+\beta_1x_1+\dots+\beta_px_p=X\beta$ (con una colonna di uni per $\beta_0$) e i parametri si scelgono minimizzando l'errore quadratico medio $\mathrm{MSE}=\frac1n\sum_i(y_i-F_\beta(x_i))^2$, funzione convessa dei parametri. Annullando il gradiente di $J(\beta)=|y-X\beta|^2$ si ottengono le equazioni normali $X^TX\beta=X^Ty$ e la soluzione dei minimi quadrati ordinari $\beta=(X^TX)^{-1}X^Ty$. Il coefficiente di determinazione $R^2=1-SS_{res}/SS_{tot}$ misura la qualità del fit (0 = come la media, negativo = peggio della media). Un modello va valutato su un test set mai usato per addestrare: l'errore sul training è ottimistico e un polinomio di grado alto lo azzera senza generalizzare.Regressione lineare →; la standardizzazione è in Statistica per il machine learningI dati di un problema ML si organizzano nella matrice di progetto $X$ ($n$ osservazioni, $p$ variabili). La statistica serve a capirli, ripulirli e prepararli: i momenti (media $\mu$, varianza $\sigma^2$, asimmetria, curtosi), i quartili con lo scarto interquartile $\mathrm{IQR}=Q_3-Q_1$ (all'esame senza interpolazione), la moda per i dati categorici. Con queste quantità si imputano i dati mancanti (media o mediana), si eliminano le variabili costanti e si standardizza con lo z-score $z=(x-\mu)/\sigma$, usando sempre media e deviazione standard del solo training set.Statistica per il machine learning →; matrici in Matrice inversaL'inversa di una matrice quadrata A è la matrice A⁻¹ con A A⁻¹ = A⁻¹ A = I; esiste se e solo se rango(A) = n e si calcola con Gauss-Jordan riducendo (A | I) fino a (I | A⁻¹).Matrice inversa → e Operazioni tra matriciLe matrici m×n formano uno spazio vettoriale (somma e prodotto per scalare elemento per elemento); il prodotto righe per colonne corrisponde alla composizione di funzioni lineari, è associativo ma non commutativo; la trasposta scambia righe e colonne e (AB)^T = B^T A^T.Operazioni tra matrici →.

1. Standardizzazione

Medie: μ1=1+2+3+44=2,5\mu_1=\frac{1+2+3+4}4=2{,}5, μ2=10+20+25+454=25\mu_2=\frac{10+20+25+45}4=25. Deviazioni standard (divisore nn): σ1=2,25+0,25+0,25+2,254=1,25=1,118\sigma_1=\sqrt{\frac{2{,}25+0{,}25+0{,}25+2{,}25}4}=\sqrt{1{,}25}=1{,}118; σ2=225+25+0+4004=162,5=12,748\sigma_2=\sqrt{\frac{225+25+0+400}4}=\sqrt{162{,}5}=12{,}748.

Dati standardizzati Zij=(Xij−μj)/σjZ_{ij}=(X_{ij}-\mu_j)/\sigma_j: Z=[−1,342−1,177−0,447−0,3920,44701,3421,569].Z=\begin{bmatrix}-1{,}342&-1{,}177\\-0{,}447&-0{,}392\\0{,}447&0\\1{,}342&1{,}569\end{bmatrix}. Media di yy: yˉ=3+5+6+124=6,5\bar y=\frac{3+5+6+12}4=6{,}5; yc=y−yˉ=[−3,5; −1,5; −0,5; 5,5]y_c=y-\bar y=[-3{,}5;\ -1{,}5;\ -0{,}5;\ 5{,}5].

Perché si centra yy. L'intercetta non si penalizza; se le colonne di ZZ hanno media zero, la soluzione per l'intercetta è la media di yy (β^0=yˉ=6,5\hat\beta_0=\bar y=6{,}5) e il resto del problema riguarda solo β1,β2\beta_1,\beta_2 con la formula β^=(ZTZ+λI)−1ZTyc\hat\beta=(Z^TZ+\lambda I)^{-1}Z^Ty_c.

2. OLS e ridge

ZTZ=[43,8593,8594],ZTyc=[12,52213,336].Z^TZ=\begin{bmatrix}4&3{,}859\\3{,}859&4\end{bmatrix},\qquad Z^Ty_c=\begin{bmatrix}12{,}522\\13{,}336\end{bmatrix}. (Gli elementi diagonali valgono n=4n=4 perché ogni colonna ha varianza 11; quello fuori diagonale è n⋅r=4⋅0,965n\cdot r=4\cdot0{,}965: le due feature hanno correlazione r=0,965r=0{,}965.)

OLS (λ=0\lambda=0). det⁡(ZTZ)=16−3,8592=16−14,893=1,107\det(Z^TZ)=16-3{,}859^2=16-14{,}893=1{,}107 (molto piccolo rispetto a 1616: la matrice è quasi singolare). β^=11,107[4−3,859−3,8594][12,52213,336]=11,107[50,088−51,466−48,324+53,344]=[−1,2424,533].\hat\beta=\frac1{1{,}107}\begin{bmatrix}4&-3{,}859\\-3{,}859&4\end{bmatrix}\begin{bmatrix}12{,}522\\13{,}336\end{bmatrix}=\frac1{1{,}107}\begin{bmatrix}50{,}088-51{,}466\\-48{,}324+53{,}344\end{bmatrix}=\begin{bmatrix}-1{,}242\\4{,}533\end{bmatrix}.

Ridge (λ=1\lambda=1). ZTZ+I=[53,8593,8595]Z^TZ+I=\begin{bmatrix}5&3{,}859\\3{,}859&5\end{bmatrix}, det⁡=25−14,893=10,107\det=25-14{,}893=10{,}107: β^ridge=110,107[5⋅12,522−3,859⋅13,336−3,859⋅12,522+5⋅13,336]=110,107[62,61−51,47−48,32+66,68]=[1,1031,816].\hat\beta_{\text{ridge}}=\frac1{10{,}107}\begin{bmatrix}5\cdot12{,}522-3{,}859\cdot13{,}336\\-3{,}859\cdot12{,}522+5\cdot13{,}336\end{bmatrix}=\frac1{10{,}107}\begin{bmatrix}62{,}61-51{,}47\\-48{,}32+66{,}68\end{bmatrix}=\begin{bmatrix}1{,}103\\1{,}816\end{bmatrix}. (Con λ=2\lambda=2 si ottiene (1,121; 1,502)(1{,}121;\ 1{,}502).)

3. Coefficienti nelle unità originali

Dal modello y^=β0+∑jβjXj−μjσj\hat y=\beta_0+\sum_j\beta_j\frac{X_j-\mu_j}{\sigma_j} si ricavano βjorig=βj/σj\beta_j^{\text{orig}}=\beta_j/\sigma_j e β0orig=β0−∑jβjμj/σj\beta_0^{\text{orig}}=\beta_0-\sum_j\beta_j\mu_j/\sigma_j.

  • OLS: β1orig=−1,242/1,118=−1,111\beta_1^{\text{orig}}=-1{,}242/1{,}118=-1{,}111, β2orig=4,533/12,748=0,356\beta_2^{\text{orig}}=4{,}533/12{,}748=0{,}356, β0orig=6,5−(−1,242⋅2,51,118+4,533⋅2512,748)=6,5−(−2,777+8,890)≈0,39\beta_0^{\text{orig}}=6{,}5-\big(-1{,}242\cdot\frac{2{,}5}{1{,}118}+4{,}533\cdot\frac{25}{12{,}748}\big)=6{,}5-(-2{,}777+8{,}890)\approx0{,}39 (con più cifre decimali 0,38890{,}3889).
  • Ridge: β1orig=1,103/1,118=0,986\beta_1^{\text{orig}}=1{,}103/1{,}118=0{,}986, β2orig=1,816/12,748=0,1425\beta_2^{\text{orig}}=1{,}816/12{,}748=0{,}1425, β0orig=6,5−(1,103⋅2,51,118+1,816⋅2512,748)=6,5−(2,466+3,562)=0,473\beta_0^{\text{orig}}=6{,}5-\big(1{,}103\cdot\frac{2{,}5}{1{,}118}+1{,}816\cdot\frac{25}{12{,}748}\big)=6{,}5-(2{,}466+3{,}562)=0{,}473.

Verifica. Per la prima osservazione (1,10)(1,10) la ridge standardizzata dà 6,5+1,103⋅(−1,342)+1,816⋅(−1,177)=6,5−1,480−2,137=2,8836{,}5+1{,}103\cdot(-1{,}342)+1{,}816\cdot(-1{,}177)=6{,}5-1{,}480-2{,}137=2{,}883; il modello in unità originali dà 0,473+0,986⋅1+0,1425⋅10=0,473+0,986+1,425=2,8840{,}473+0{,}986\cdot1+0{,}1425\cdot10=0{,}473+0{,}986+1{,}425=2{,}884 ✓ (stesso valore, a meno degli arrotondamenti).

4. Commento

Le due feature sono quasi proporzionali (r=0,965r=0{,}965), quindi l'OLS distribuisce il peso in modo instabile: dà un coefficiente negativo (−1,24-1{,}24) alla prima e uno molto grande (4,534{,}53) alla seconda, che si compensano. La ridge li riporta a valori concordi e di dimensione simile (1,101{,}10 e 1,821{,}82), più sensati se entrambe le feature crescono insieme a yy. L'MSE sul training è più alto per la ridge (0,6150{,}615 contro 0,0280{,}028 dell'OLS): la ridge cede un po' di adattamento al training per ottenere stabilità (e, su dati nuovi, migliore generalizzazione). Con λ\lambda sempre più grande i coefficienti tendono a zero.

Verifica

python
import numpy as np
X = np.array([[1,10],[2,20],[3,25],[4,45.]]); y = np.array([3,5,6,12.])
mu, sd = X.mean(0), X.std(0); Z = (X - mu) / sd; yc = y - y.mean()
for lam in (0, 1, 2):
    b = np.linalg.solve(Z.T @ Z + lam * np.eye(2), Z.T @ yc)
    b_orig = b / sd; b0_orig = y.mean() - (b * mu / sd).sum()
    print(lam, b.round(3), b_orig.round(4), round(b0_orig, 3))   # lam=1: [1.103 1.816] [0.9863 0.1425] 0.473

Esercizi su questo argomento

Lezioni in cui compare

Teoria collegata