Salta al contenuto
Note per Studenti Esercizio - Regressione quantile con funzione pinball e discesa del gradiente

Esercizio - Regressione quantile con funzione pinball e discesa del gradiente

Esame

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

In questa pagina 3

Testo (1° appello 2026, parte di modellazione). Nella regressione lineare con perdita quadratica si sostituisce ℓ(y,y^)=(y−y^)2\ell(y,\hat y)=(y-\hat y)^2 con la perdita asimmetrica ℓτ(y,y^)={τ (y−y^)y≥y^,(τ−1)(y−y^)y<y^,τ∈(0,1),\ell_\tau(y,\hat y)=\begin{cases}\tau\,(y-\hat y)&y\ge\hat y,\\(\tau-1)(y-\hat y)&y<\hat y,\end{cases}\qquad\tau\in(0,1), e si minimizza Lτ=1n∑iℓτ(yi,xiTβ)L_\tau=\frac1n\sum_i\ell_\tau(y_i,x_i^T\beta). Il subgradiente per il singolo campione è xi six_i\,s_i con si=−τs_i=-\tau se yi−xiTβ>0y_i-x_i^T\beta>0, 00 se =0=0, 1−τ1-\tau se <0<0; quindi ∇βLτ=1nXTs\nabla_\beta L_\tau=\frac1nX^Ts.

  1. Calcolare a mano il minimo della perdita per un modello costante su y=[1,2,3,10]y=[1,2,3,10] con τ=0,8\tau=0{,}8 e τ=0,5\tau=0{,}5.
  2. Implementare perdita, gradiente e addestramento con discesa del gradiente e passo adattivo sul dataset insurance (età, indice di massa corporea, numero di figli →\to costi assicurativi charges, 700 campioni).
  3. Addestrare con τ=0,8\tau=0{,}8 e stampare la percentuale di punti del training per cui yi≤y^iy_i\le\hat y_i; ripetere con τ=0,2\tau=0{,}2 e τ=0,5\tau=0{,}5 e spiegare in al massimo 3 righe che cosa calcola l'algoritmo.

Teoria usata: LASSO e discesa del gradienteIl LASSO è la regressione regolarizzata con penalità $L_1$: minimizza $\sum_i(y_i-x_i^T\beta)^2+\lambda\sum_{j\ge1}|\beta_j|$. A differenza della ridge, porta alcuni coefficienti esattamente a zero (soluzione sparsa, selezione delle feature): geometricamente le curve di livello dell'errore toccano il vincolo $\sum|\beta_j|\le s$ (un rombo) in uno spigolo. Non ha formula chiusa, quindi si minimizza con la discesa del gradiente $W\leftarrow W-\eta,\nabla J(W)$, usando il subgradiente $\operatorname{sign}(\beta_j)$ per il valore assoluto (nel punto 0 qualunque valore in $[-1,1]$). Il passo $\eta$ è critico: per l'errore quadratico converge se $\eta<1/\mu_{\max}(X^TX)$; si può usare $\eta_t=\eta_0/(1+\gamma t)$. L'Elastic Net combina le penalità $L_1$ e $L_2$ con $\lambda_1=\alpha\lambda$, $\lambda_2=(1-\alpha)\lambda$.LASSO e discesa del gradiente → (subgradiente, passo adattivo); 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 →; per mediana e quantili 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 → e Funzione di distribuzioneLa funzione di distribuzione (FdD) F_X(x) = P(X ≤ x) è definita per ogni v.a., è crescente, continua a destra, va da 0 a 1 e determina la legge; per una v.a. discreta è a gradini, con salti in corrispondenza dei valori e di altezza pari alla densità.Funzione di distribuzione →.

1. Perché la perdita calcola un quantile

Con un modello costante y^=c\hat y=c e y=[1,2,3,10]y=[1,2,3,10], τ=0,8\tau=0{,}8: la perdita media è 14∑iℓτ(yi,c)\frac14\sum_i\ell_\tau(y_i,c).

  • c=3c=3: y=1y=1 è sotto: (τ−1)(1−3)=0,2⋅2=0,4(\tau-1)(1-3)=0{,}2\cdot2=0{,}4; y=2y=2: 0,2⋅1=0,20{,}2\cdot1=0{,}2; y=3y=3: 00; y=10y=10 è sopra: τ(10−3)=0,8⋅7=5,6\tau(10-3)=0{,}8\cdot7=5{,}6. Somma 6,26{,}2, media 1,551{,}55.
  • c=10c=10: y=1y=1: 0,2⋅9=1,80{,}2\cdot9=1{,}8; y=2y=2: 0,2⋅8=1,60{,}2\cdot8=1{,}6; y=3y=3: 0,2⋅7=1,40{,}2\cdot7=1{,}4; y=10y=10: 00. Somma 4,84{,}8, media 1,2\mathbf{1{,}2}.

Con τ=0,8\tau=0{,}8 conviene c=10c=10 (il quantile 0,80{,}8: l'80%80\% dei dati, 3 su 4, è ≤10\le10). Con τ=0,5\tau=0{,}5 la stessa c=3c=3 dà 0,5⋅(2+1+0+7)/4=1,250{,}5\cdot(2+1+0+7)/4=1{,}25 mentre c=10c=10 dà 0,5⋅(9+8+7+0)/4=3,00{,}5\cdot(9+8+7+0)/4=3{,}0: il minimo è nella mediana (c∈[2,3]c\in[2,3]). In generale: la derivata della perdita media rispetto a cc è 1n∑si\frac1n\sum s_i, con si=−τs_i=-\tau per i dati sopra cc e 1−τ1-\tau per quelli sotto; si annulla quando −τ⋅#sopra+(1−τ)⋅#sotto=0-\tau\cdot\#\text{sopra}+(1-\tau)\cdot\#\text{sotto}=0, cioè quando la frazione di dati sotto cc è τ\tau: cc è il quantile di livello τ\tau. Per τ=0,5\tau=0{,}5 la perdita è 12∣y−y^∣\tfrac12|y-\hat y| (errore assoluto) e il minimo è la mediana; la perdita quadratica, invece, porta alla media.

2. Implementazione

python
import numpy as np
def pinball(y, y_hat, tau):
    r = y - y_hat
    return np.mean(np.where(r >= 0, tau * r, (tau - 1) * r))

def pinball_grad(X, beta, y, tau):                 # X con colonna di uni, y: (n,1)
    r = y - X @ beta
    s = np.where(r > 0, -tau, np.where(r < 0, 1 - tau, 0.0))
    return X.T @ s / len(y)                        # (1/n) X^T s

def train(X, y, tau, lr0, decay=1e-4, max_iter=10000):
    X = np.hstack([np.ones((len(X), 1)), X]); beta = np.random.rand(X.shape[1], 1)
    for i in range(max_iter):
        beta -= lr0 / (1 + decay * i) * pinball_grad(X, beta, y, tau)
    return beta

Passi. (i) il residuo ri=yi−xiTβr_i=y_i-x_i^T\beta determina il segno del subgradiente; (ii) per la regola della catena, con y^=xiTβ\hat y=x_i^T\beta si ha ∂ℓτ/∂β=(∂ℓτ/∂y^) xi\partial\ell_\tau/\partial\beta=(\partial\ell_\tau/\partial\hat y)\,x_i: se r>0r>0, ℓ=τ(y−y^)\ell=\tau(y-\hat y) ha derivata −τ-\tau rispetto a y^\hat y e quindi −τxi-\tau x_i rispetto a β\beta; se r<0r<0, ℓ=(τ−1)(y−y^)\ell=(\tau-1)(y-\hat y) ha derivata −(τ−1)=1−τ-(\tau-1)=1-\tau rispetto a y^\hat y, quindi (1−τ)xi(1-\tau)x_i; (iii) la media su ii è 1nXTs\frac1nX^Ts; (iv) aggiornamento con il passo adattivo ηt=η0/(1+γt)\eta_t=\eta_0/(1+\gamma t).

3. Risultati

Su 700 campioni di insurance (seme 0), training 560, test 140, con η0=0,1\eta_0=0{,}1, γ=10−4\gamma=10^{-4} e 10 000 iterazioni, senza standardizzare le feature:

τ\tau % di training con yi<y^iy_i<\hat y_i % di test con yi<y^iy_i<\hat y_i
0,80{,}8 80,0%80{,}0\% 72,9%72{,}9\%
0,20{,}2 23,4%23{,}4\% 22,9%22{,}9\%
0,50{,}5 52,9%52{,}9\% 46,4%46{,}4\%

(L'appello riporta 80,18%80{,}18\%, 23,21%23{,}21\%, 52,86%52{,}86\% con il suo campione.) Con feature standardizzate la discesa del gradiente converge molto meglio: la soluzione coincide con quella esatta (programmazione lineare) fino alla terza cifra; per τ=0,8\tau=0{,}8 la perdita media è 39623962 contro 39613961 dell'ottimo e la frazione sotto è 0,7990{,}799; per τ=0,5\tau=0{,}5: 3197,43197{,}4 e 0,5000{,}500; per τ=0,2\tau=0{,}2: 1355,31355{,}3 e 0,1990{,}199. Senza standardizzare l'intercetta si muove troppo lentamente (le età sono dell'ordine di 40, i costi di 10410^4) e la frazione sotto la retta è solo approssimata.

Che cosa calcola l'algoritmo. La regressione con questa perdita (pinball loss) stima il quantile condizionato di yy date le feature, non la media condizionata come l'OLS: per τ=0,8\tau=0{,}8 trova l'iperpiano sotto cui sta circa l'80%80\% dei dati di training (e sopra circa il 20%20\%), per τ=0,2\tau=0{,}2 quello con circa il 20%20\% sotto, per τ=0,5\tau=0{,}5 la mediana condizionata. Serve per previsioni conservative (per esempio stimare il costo che sarà superato solo nel 20%20\% dei casi) o per conoscere la distribuzione condizionata e non solo la media. Nei dati standardizzati l'effetto di bmi sul costo è grande per τ=0,8\tau=0{,}8 (coefficiente ≈6400\approx6400 per deviazione standard) e quasi nullo per τ=0,2\tau=0{,}2 e 0,50{,}5: l'indice di massa corporea influenza soprattutto la coda alta dei costi.

Lezioni in cui compare

Teoria collegata