Apprendimento automatico nell'IA - supervisionato, SVM e valutazione
In questa pagina 9
In questa pagina 5
Il corso di IA dedica due lezioni e un laboratorio al machine learning (ML): il quadro delle idee e la pipeline pratica in scikit-learn. Le derivazioni, i metodi in dettaglio e gli esercizi sono nella materia Machine Learning: qui si dice cosa serve per l'esame di IA e si rimanda lì. Panoramica generale: Introduzione al machine learningIl machine learning (ML) è la parte dell'intelligenza artificiale che costruisce soluzioni a partire dai dati e non da regole scritte a mano: un modello matematico con parametri liberi viene addestrato su esempi storici e poi usato su dati nuovi. Si distingue tra apprendimento supervisionato (dati $(x,y)$, si impara la mappa $x\mapsto y$: regressione se $y$ è un numero, classificazione se è una categoria), non supervisionato (solo $x$, si cercano struttura e gruppi) e per rinforzo (stato, azione, ricompensa). Un progetto ML non è «plug and play»: segue le fasi problema, raccolta, pulizia, modellazione, rilascio, e va valutato su dati mai visti; senza dati non c'è modello, alcuni fenomeni sono imprevedibili, la generalizzazione fuori dal dominio di addestramento non è garantita.Introduzione al machine learning →. Gli esercizi di questa materia sono Esercizio - Ricerca del miglior C per una SVM lineare sul dataset digits (laboratorio 10), Esercizio - SVM con tre kernel sul dataset iris (laboratorio 10) e Esercizio - Albero di decisione sul ristorante - guadagno d'informazione e potatura (slide del corso).
1. Forme di apprendimento
Un agente impara quando migliora le prestazioni dopo aver osservato dati. A seconda del feedback che accompagna gli ingressi:
- supervisionato: l'agente vede coppie ingresso-uscita e impara la funzione che le lega;
- non supervisionato: impara pattern negli ingressi senza feedback esplicito (per esempio il clustering, Clustering e k-meansIl clustering raggruppa osservazioni simili senza etichette, come preprocessing (un modello per ogni cluster) o come obiettivo (segmentazione clienti, organizzazione di documenti). K-means: si sceglie $K$, si inizializzano $K$ centroidi, si alterna assegnazione di ogni punto al centroide più vicino e aggiornamento di ogni centroide alla media dei suoi punti, fino a convergenza; minimizza $\mathrm{MSE}{\text{within}}=\frac1N\sum_k\sum{x_i\in C_k}|x_i-\mu_k|^2$ ma solo fino a un minimo locale, quindi dipende dall'inizializzazione. Il numero di cluster si sceglie col metodo del gomito (la dispersione cala sempre, si cerca dove rallenta) o con la gap statistic $\mathrm{Gap}(K)=E[\log W_K^{ref}]-\log W_K$ (si prende il più piccolo $K$ con $\mathrm{Gap}(K)\ge\mathrm{Gap}(K+1)-s_{K+1}$). Il clustering gerarchico agglomerativo parte da un cluster per punto e fonde i due più vicini (linkage single, complete, average, Ward) costruendo un dendrogramma; quello divisivo parte da un solo cluster. Programma di Telecomunicazioni: clustering.Clustering e k-means →);
- per rinforzo: impara da una serie di ricompense e punizioni (Cenni a reinforcement learning e reti per sequenzeapprofondimento: non nel programma di Telecomunicazioni, solo cenni (ultima lezione del corso). Reinforcement learning: un agente in uno stato $S_t$ sceglie azioni, l'ambiente restituisce ricompense; l'obiettivo non è minimizzare una loss ma massimizzare il ritorno $G_t=\sum_{k\ge0}\gamma^kR_{t+k+1}$ (fattore di sconto $\gamma\in[0,1)$) trovando la politica ottima $\pi^*=\arg\max G$. Apprendimento di sequenze: servono lunghezze variabili, dipendenze a lungo termine, ordine, parametri condivisi nel tempo; una rete ricorrente aggiorna uno stato $h_t=f_W(h_{t-1},x_t)$; le reti convolutive temporali (TCN) usano convoluzioni causali e dilatate con campo recettivo $1+(k-1)\sum d_\ell$. Chiude con i modelli generativi (VAE, GAN) già visti in Autoencoder.Cenni a reinforcement learning e reti per sequenze →, e il Q-learning del laboratorio 9 in Processi decisionali di Markov - utilità, equazione di Bellman, value e policy iterationUn MDP (processo decisionale di Markov) modella un problema decisionale sequenziale in ambiente stocastico e completamente osservabile con stati S, azioni A(s), modello di transizione P(s'|s,a) e ricompensa R(s,a,s'). La soluzione è una politica pi(s). L'utilità U(s) è il ritorno scontato atteso e soddisfa l'equazione di Bellman U(s)=max_a sum_s' P(s'|s,a)[R(s,a,s')+gamma U(s')]; la quantità tra parentesi quadre sommata su s' è la funzione azione-utilità Q(s,a). Value iteration parte da U=0, applica Bellman a tutti gli stati insieme e si ferma quando delta <= eps(1-gamma)/gamma; la politica è argmax_a Q(s,a). Policy iteration alterna valutazione (sistema lineare, senza max) e miglioramento greedy, e termina quando la politica non cambia. Nei POMDP lo stato è nascosto: si lavora sullo stato di credenza b aggiornato come nel filtraggio, b'(s')=alpha P(e|s') sum_s P(s'|s,a)b(s).Processi decisionali di Markov - utilità, equazione di Bellman, value e policy iteration →).
Due problemi tipici dell'apprendimento supervisionato: classificazione (l'uscita è uno tra un insieme finito di valori, per esempio {nuvoloso, soleggiato, piovoso}) e regressione (l'uscita è un numero, per esempio la pressione). Il corso si concentra sul supervisionato.
2. Apprendimento supervisionato, bias e varianza
Definizione. Dato un training set di esempi generati da una funzione sconosciuta , si cerca un'ipotesi (un modello dei dati) che approssimi . Gli si chiamano ground truth. Un'ipotesi generalizza bene se predice con accuratezza le uscite di esempi non ancora visti: la sua qualità si misura sul test set, non sul training set.
- Bias: tendenza di un'ipotesi a deviare dal valore atteso quando si media su diversi training set. Una retta ha bias alto sui dati non lineari: underfitting (non trova il pattern).
- Varianza: quanto cambia l'ipotesi al variare del training set. Due polinomi di grado 12 addestrati su campioni diversi della stessa sono molto diversi: varianza alta, overfitting (si presta troppa attenzione al training set particolare e si va male sui dati nuovi).
Il compromesso è tra ipotesi complesse a basso bias, che si adattano bene ai dati, e ipotesi semplici a bassa varianza, che generalizzano meglio (rasoio di Ockham). Dettagli e formule in 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 →.
3. Selezione del modello, ottimizzazione e valutazione
Trovare una buona ipotesi ha tre sotto-compiti:
- selezione del modello: scegliere lo spazio delle ipotesi (lineare o polinomiale, quanti nodi, quanti pesi: gli iperparametri);
- ottimizzazione (addestramento): trovare la migliore ipotesi dentro quello spazio (i parametri);
- valutazione: per esempio il tasso d'errore, cioè la frazione di volte in cui .
Servono tre insiemi: un training set per creare i modelli candidati, un validation set per valutare e scegliere il migliore, un test set per la valutazione finale non distorta. Se i dati non bastano per tre insiemi si usa la cross-validation a fold: si divide il training in parti uguali; in giri una parte fa da validation e le altre da training; si riporta la media dei punteggi. Valori comuni: o ; con uguale alla dimensione del dataset è la leave-one-out. Serve comunque un test set separato.
Esempio. Con 1 797 immagini e , ogni giro usa circa 1 437 immagini per l'addestramento e 360 per la validazione; i cinque punteggi, per l'SVM del laboratorio, sono , con media e deviazione standard .
Si sceglie il valore dell'iperparametro con il minimo errore di validazione (per esempio la dimensione ottima di un albero), e solo poi si ricalcola il modello su tutti i dati di addestramento e si misura sul test set.
4. Alberi di decisione
Definizione. Un albero di decisione mappa un vettore di valori di attributi in un'uscita con una sequenza di test, dalla radice a una foglia: ogni nodo interno testa un attributo, i rami sono i suoi valori, le foglie danno la decisione. Dettagli, Gini e CART in Alberi di decisioneUn albero di decisione partiziona i dati con una sequenza di regole su una sola variabile alla volta (nodi interni = regole, foglie = predizioni: classe più frequente, oppure media del target in regressione). Si costruisce in modo ricorsivo scegliendo a ogni nodo la divisione che rende i figli più «puri»: con l'entropia $H=-\sum p_i\log_2p_i$ e il guadagno d'informazione $IG=H(S)-\sum\frac{|S_v|}{|S|}H(S_v)$ (ID3), oppure con l'indice di Gini $1-\sum p_i^2$ e soglie $x\le t$ su variabili numeriche (CART); in regressione con MSE o riduzione di varianza. Un albero pienamente sviluppato fa overfitting (varianza alta): si limita con la profondità massima (pre-potatura) o con la potatura a costo-complessità $R_\alpha(T)=R(T)+\alpha|T|$ (post-potatura). Pro: interpretabile, niente normalizzazione, predizione immediata; contro: varianza alta, da cui le foreste. Programma di Telecomunicazioni: Decision Trees e Random Forests.Alberi di decisione →.
Esempio del corso: il ristorante. Il problema è decidere se aspettare un tavolo (WillWait, booleano) a partire da 10 attributi (Alternate, Bar, Fri, Hungry, Patrons con valori None/Some/Full, Price, Rain, Reservation, Type, Estimated waiting); il dataset ha 12 esempi precedenti, 6 positivi e 6 negativi.
Algoritmo. Si sceglie ricorsivamente l'attributo più importante come radice; se gli esempi in una foglia hanno tutti lo stesso valore, ci si ferma; altrimenti si prende il valore più frequente (plurality value): tra gli esempi correnti se non ci sono più attributi, tra quelli del genitore se non ci sono più esempi.
Importanza = guadagno d'informazione. L'entropia di una variabile booleana vera con probabilità è (per una moneta equa bit). Con esempi positivi e negativi, . Un test su un attributo con valori divide gli esempi in sottoinsiemi con positivi e negativi (); l'entropia attesa dopo il test e il guadagno sono Si sceglie l'attributo con guadagno massimo.
Calcolo per Patrons (None: 0 positivi e 2 negativi; Some: 4 e 0; Full: 2 e 4):
- ;
- , , ;
- ;
- bit.
Per Type (French 1 e 1, Italian 1 e 1, Thai 2 e 2, Burger 2 e 2) ogni sottoinsieme ha entropia 1: . Patrons è molto migliore. L'esercizio Esercizio - Albero di decisione sul ristorante - guadagno d'informazione e potatura (slide del corso) calcola tutti i dieci guadagni.
Overfitting e potatura. Più test ci sono, più sale il rischio di overfitting. La potatura (pruning) elimina i nodi poco rilevanti, quelli con poco guadagno. Quanto poco lo decide un test di significatività: ipotesi nulla "l'attributo è irrilevante" (il guadagno tende a 0 con infiniti esempi). Si misura la deviazione totale dei campioni rispetto a quella attesa sotto l'ipotesi nulla: Se , dove si legge nella tavola del con gradi di libertà per la probabilità di ipotesi nulla desiderata (tipicamente ), l'ipotesi nulla è rifiutata e l'attributo è utile (si tiene); altrimenti si pota.
Esempio (Hungry nel ramo Patrons = Full, con 2 positivi e 4 negativi). Hungry = No: 0 positivi e 2 negativi; Hungry = Yes: 2 positivi e 2 negativi. Attesi: , , , . Con c'è 1 grado di libertà e : , quindi Hungry non è significativo e si pota.
Bagging e random forest. Il bagging estrae training set di esempi con ripetizione, addestra alberi e aggrega: voto di maggioranza (classificazione) o media (regressione). Riduce la varianza. Il problema è che gli alberi sono molto correlati (un attributo con guadagno altissimo è la radice quasi ovunque): la random forest a ogni nodo sceglie il miglior attributo solo tra un sottoinsieme casuale, rendendo gli alberi più diversi; non serve potare, perché l'insieme dei alberi riduce già l'overfitting, e si può costruire in parallelo. Dettagli in Metodi ensemble - bagging, random forest e boostingUn albero da solo ha varianza alta; un ensemble combina molti modelli deboli. Bagging: ogni albero è addestrato su un campione bootstrap (n estrazioni con rimpiazzo, circa il 63% di campioni distinti) e si vota o si fa la media: riduce la varianza, perché la media di $T$ stimatori con varianza $\sigma^2$ e correlazione $\rho$ ha varianza $\rho\sigma^2+(1-\rho)\sigma^2/T$. Random forest = bagging + a ogni split solo $\sqrt p$ feature casuali (alberi meno correlati); l'importanza di una feature è la somma delle riduzioni di Gini pesate sui nodi in cui è usata. Boosting: alberi in sequenza, ciascuno corregge gli errori dei precedenti, e si riduce il bias. Gradient boosting: $F\leftarrow F+\eta h$ con $h$ albero sui residui (gradiente negativo della perdita), $\eta$ piccolo; AdaBoost: stump e pesi sui campioni sbagliati; XGBoost: similarity score $\frac{(\sum r)^2}{N+\lambda}$, gain, potatura con $\gamma$, output $\frac{\sum r}{N+\lambda}$. Programma di Telecomunicazioni: Random Forests; boosting come approfondimento.Metodi ensemble - bagging, random forest e boosting →.
5. Perdita, regressione lineare e discesa del gradiente
In ML di solito si minimizza una perdita invece di massimizzare un'utilità: è l'utilità persa predicendo al posto di . Due perdite comuni: valore assoluto e errore quadratico .
Regressione lineare univariata. Ipotesi ; si cercano i pesi che minimizzano la perdita quadratica sui esempi, . È una funzione convessa dei pesi con un minimo globale, che si trova azzerando le derivate parziali (soluzione analitica). Teoria completa in 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 →.
Discesa del gradiente. Quando non c'è la soluzione in forma chiusa, si cerca il minimo modificando i parametri passo dopo passo (come l'hill climbing ma minimizzando): con passo (learning rate). Su esempi, batch: ; un passaggio su tutti i dati è un'epoca. Con perdita convessa converge al minimo globale se non è troppo grande (altrimenti il passo supera il minimo). SGD: un solo esempio scelto a caso a ogni passo (più veloce); minibatch SGD: esempi su . Dettagli: 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 →.
Esempio a mano. Dati , , ; si parte da , con , per cui e . Il minimo esatto è , (con , , pendenza , ).
- Passo 0: errori , ; , . Con : , .
- Passo 1: , errori , ; gradienti e ; , .
- Passo 2: con si ha e i nuovi pesi sono , . Poi e, dopo un altro passo, con (il minimo esatto ha ).
La perdita scende a ogni passo e si avvicina a . Con i pesi oscillano attorno al minimo prima di assestarsi, e con la perdita cresce a ogni passo (): il passo è troppo grande.
Regressione multivariata. è un vettore di elementi e ; la perdita ha un minimo unico, raggiunto dalla discesa del gradiente.
Dalla regressione alla classificazione. Una funzione lineare serve anche per classificare: , con soglia se e altrimenti. Il confine di decisione è una retta (in dimensioni maggiori un piano o una superficie) che separa le due classi; con dati linearmente separabili è un separatore lineare. Vedi Halfspace e PerceptronUn halfspace (semispazio) classifica con un iperpiano: $h(x)=\operatorname{sign}(w^Tx+b)$, con $w$ normale al piano e $|w^Tx+b|/|w|$ distanza dal piano; aggiungendo una componente costante $1$ a $x$ si scrive $\operatorname{sign}(\tilde w^T\tilde x)$. Il Perceptron (Rosenblatt, 1958) è il neurone con attivazione a gradino e impara con una regola semplice: per ogni errore $y_i,w^Tx_i\le0$ si aggiorna $w\leftarrow w+y_ix_i$. Teorema di convergenza (Novikoff): se i dati sono linearmente separabili con margine $\gamma$ ($y_iw^{T}x_i\ge\gamma$, $|w^|=1$) e $|x_i|\le R$, il Perceptron fa al più $(R/\gamma)^2$ errori e si ferma. Non risolve problemi non separabili (XOR), non ha un criterio di margine ottimale (le SVM sì) e il suo analogo morbido è la regressione logistica. Programma di Telecomunicazioni: halfspace model, Perceptron.Halfspace e Perceptron → e Regressione logistica e softmaxLa regressione lineare non è adatta alla classificazione (valori fuori da [0,1], retta tirata dai punti lontani). La regressione logistica passa il predittore lineare dalla sigmoide $\sigma(z)=1/(1+e^{-z})$ e interpreta $\hat y=\sigma(x^T\beta)$ come $P(y=1\mid x)$: si predice la classe 1 se $\hat y\ge0{,}5$, cioè $x^T\beta\ge0$ (bordo lineare). L'errore quadratico dà una funzione non convessa; si usa la log-verosimiglianza negativa $-\sum[y\log\hat y+(1-y)\log(1-\hat y)]$, convessa, con gradiente $X^T(\hat y-y)$ e nessuna formula chiusa (discesa del gradiente). Per più classi: one-vs-one ($C(C-1)/2$ classificatori, voto), one-vs-all ($C$ classificatori, massima probabilità), o la softmax $p_c=e^{z_c}/\sum_ke^{z_k}$ con cross-entropia. Si può regolarizzare (ridge, LASSO, Elastic Net) e la cross-validation si fa stratificata. Approfondimento: non nel programma di Telecomunicazioni.Regressione logistica e softmax →.
6. Support vector machines
Le SVM hanno tre proprietà: costruiscono un separatore a margine massimo (la distanza massima dagli esempi più vicini); creano un iperpiano separatore lineare; sono non parametriche (l'iperpiano è definito da un insieme di esempi). Gli esempi più vicini al separatore sono i vettori di supporto.
La soluzione ottima si trova risolvendo il problema duale, convesso e con un unico massimo globale: i pesi sono nulli per tutti gli esempi tranne i vettori di supporto, e la classificazione è con soglia 0. Derivazione completa in Support vector machines e metodi kernelUna SVM cerca l'iperpiano $w\cdot x+b=0$ che separa due classi con il margine più largo possibile: normalizzando $y_i(w\cdot x_i+b)\ge1$ il margine totale vale $2/|w|$, quindi si risolve $\min\frac12|w|^2$ (problema convesso, nessun minimo locale). Con classi sovrapposte si ammettono errori con le variabili di scarto $\xi_i$ e il parametro $C$ (soft margin, equivalente alla hinge loss più una penalità su $|w|^2$); $C$ piccolo = margine largo e più bias, $C$ grande = margine stretto e più varianza, si sceglie per cross-validation. La soluzione dipende solo dai vettori di supporto ($w=\sum\alpha_iy_ix_i$) e solo tramite prodotti scalari, per questo si può sostituire $x_i\cdot x_j$ con un kernel $K(x_i,x_j)=\langle\phi(x_i),\phi(x_j)\rangle$ (polinomiale, RBF) senza calcolare $\phi$: così si ottengono bordi non lineari. La SVR usa lo stesso schema con un tubo di tolleranza $\varepsilon$. Nell'esame le SVM sono solo nella parte teorica.Support vector machines e metodi kernel →.
Trucco del kernel. Nel duale compare solo il prodotto scalare : lo si sostituisce con una funzione kernel per una qualche trasformazione in uno spazio di dimensione maggiore, senza calcolare . Un confine circolare in due dimensioni diventa un piano in tre dimensioni. Kernel comuni: polinomiale e gaussiano .
Esempio numerico. Con , : . Il kernel polinomiale con , dà , e coincide con il prodotto scalare delle immagini : , , prodotto . Con , : . Il kernel gaussiano con : , . Per questo il kernel è molto più economico della mappa esplicita (nel gaussiano lo spazio ha dimensione infinita). Esercizio: Esercizio - Kernel e confronto tra SVM.
7. Pipeline in scikit-learn (laboratorio 10)
Il dataset digits ha 1 797 immagini in scala di grigi di cifre da 0 a 9. Prima di passarle a un classificatore: appiattire ogni immagine da a e dividere in training e test.
from sklearn import datasets, svm, metrics
from sklearn.model_selection import train_test_split, cross_val_score
digits = datasets.load_digits()
n = len(digits.images)
data = digits.images.reshape((n, -1)) # (1797, 64)
X_train, X_test, y_train, y_test = train_test_split(
data, digits.target, test_size=0.25, shuffle=False) # 75% training, 25% test
clf = svm.SVC(gamma=0.001) # kernel rbf, C=1 di default
clf.fit(X_train, y_train) # addestramento
predicted = clf.predict(X_test) # predizione sul test set
print(metrics.classification_report(y_test, predicted))
print(metrics.confusion_matrix(y_test, predicted))
print(cross_val_score(svm.SVC(gamma=0.001), data, digits.target, cv=5)) # 5-foldRisultato verificato: accuratezza sui 450 esempi del test; 5-fold: .
Gli iperparametri di SVC: controlla il compromesso tra massimizzare il margine e minimizzare gli errori sul training (grande: pochi errori ma margine stretto); kernel (linear, poly, rbf, ...) permette di trattare dati non linearmente separabili; determina l'influenza di un singolo esempio sul confine. LinearSVC usa il kernel lineare ed è più veloce.
Metriche (classification_report), con TP, TN, FP, FN:
La matrice di confusione confronta etichette vere (righe) e predette (colonne). Esempio: per la SVM lineare del laboratorio (cifra 3) su 47 esempi della classe, , : , , (nel report del corso: , , ). Dettagli e ROC in Metriche di classificazioneIn classificazione binaria ogni previsione è vero positivo (TP), vero negativo (TN), falso positivo (FP, errore di tipo I) o falso negativo (FN, errore di tipo II). Da queste quattro quantità: accuracy $=\frac{TP+TN}{TP+TN+FP+FN}$, specificità $=\frac{TN}{TN+FP}$, precision $=\frac{TP}{TP+FP}$, recall $=\frac{TP}{TP+FN}$, e la loro media armonica $F_1=\frac{2PR}{P+R}$. Con dati sbilanciati l'accuracy inganna (un modello che predice sempre la classe maggioritaria ha 99%): si usano precision, recall, F1, ROC-AUC, la cross-validation stratificata e il riequilibrio con undersampling o oversampling (non SMOTE). Cambiando la soglia sulla probabilità si ottiene la curva ROC (TPR contro FPR) e l'area AUC. Approfondimento: non nel programma di Telecomunicazioni.Metriche di classificazione →; esercizio Esercizio - Metriche di classificazione da una matrice di confusione.
Cross-validation per scegliere gli iperparametri (laboratorio): scegliere e kernel sul test set li "fa trapelare" nel modello (leakage). Si tiene fuori un test set e si usa la CV sul resto. Applicazione: Esercizio - Ricerca del miglior C per una SVM lineare sul dataset digits (laboratorio 10).
Errori tipici
- Valutare il modello sul training set o scegliere gli iperparametri guardando il test set.
- Dimenticare di appiattire le immagini prima di una SVM o di fare lo shuffle: con
shuffle=Falsesu iris il test set contiene una sola classe. - Dimenticare di pesare per nell'entropia attesa.
- Prendere con i gradi di libertà sbagliati: sono .
- Scegliere un passo troppo grande nella discesa del gradiente: la perdita cresce.
- Confondere precision (tra i predetti positivi) e recall (tra i veri positivi).
Domande d'esame
- Un attributo divide 12 esempi (6 positivi e 6 negativi) in tre insiemi: (0 pos, 2 neg), (4 pos, 0 neg), (2 pos, 4 neg). Quanto vale il guadagno d'informazione? ; ; bit.
- Perché non si valuta un modello sul training set? Perché un modello che memorizza il training ha errore nullo ma generalizza male (overfitting). La qualità si misura su dati non visti (test set); gli iperparametri si scelgono su un validation set o con la cross-validation.
- Cosa sono i vettori di supporto e cosa fa il kernel? Sono gli esempi più vicini al separatore a margine massimo, gli unici con peso . Il kernel sostituisce il prodotto scalare e permette confini non lineari senza calcolare .
- Un test dà con valori dell'attributo e soglia al . Si tiene o si pota? (1 grado di libertà): , l'attributo non è significativo, si pota.
Versione ripasso
Supervisionato, bias e varianza
Forme di apprendimento. Supervisionato (coppie ingresso-uscita: classificazione se l'uscita è discreta, regressione se è un numero), non supervisionato (pattern senza feedback, per esempio clustering, Clustering e k-meansIl clustering raggruppa osservazioni simili senza etichette, come preprocessing (un modello per ogni cluster) o come obiettivo (segmentazione clienti, organizzazione di documenti). K-means: si sceglie $K$, si inizializzano $K$ centroidi, si alterna assegnazione di ogni punto al centroide più vicino e aggiornamento di ogni centroide alla media dei suoi punti, fino a convergenza; minimizza $\mathrm{MSE}{\text{within}}=\frac1N\sum_k\sum{x_i\in C_k}|x_i-\mu_k|^2$ ma solo fino a un minimo locale, quindi dipende dall'inizializzazione. Il numero di cluster si sceglie col metodo del gomito (la dispersione cala sempre, si cerca dove rallenta) o con la gap statistic $\mathrm{Gap}(K)=E[\log W_K^{ref}]-\log W_K$ (si prende il più piccolo $K$ con $\mathrm{Gap}(K)\ge\mathrm{Gap}(K+1)-s_{K+1}$). Il clustering gerarchico agglomerativo parte da un cluster per punto e fonde i due più vicini (linkage single, complete, average, Ward) costruendo un dendrogramma; quello divisivo parte da un solo cluster. Programma di Telecomunicazioni: clustering.Clustering e k-means →), per rinforzo (ricompense, Cenni a reinforcement learning e reti per sequenzeapprofondimento: non nel programma di Telecomunicazioni, solo cenni (ultima lezione del corso). Reinforcement learning: un agente in uno stato $S_t$ sceglie azioni, l'ambiente restituisce ricompense; l'obiettivo non è minimizzare una loss ma massimizzare il ritorno $G_t=\sum_{k\ge0}\gamma^kR_{t+k+1}$ (fattore di sconto $\gamma\in[0,1)$) trovando la politica ottima $\pi^*=\arg\max G$. Apprendimento di sequenze: servono lunghezze variabili, dipendenze a lungo termine, ordine, parametri condivisi nel tempo; una rete ricorrente aggiorna uno stato $h_t=f_W(h_{t-1},x_t)$; le reti convolutive temporali (TCN) usano convoluzioni causali e dilatate con campo recettivo $1+(k-1)\sum d_\ell$. Chiude con i modelli generativi (VAE, GAN) già visti in Autoencoder.Cenni a reinforcement learning e reti per sequenze →).
Ipotesi. approssima la funzione vera (, training set di coppie): si valuta sul test set. Bias alto = underfitting (retta su dati non lineari); varianza alta = overfitting (polinomio di grado 12). Compromesso: rasoio di Ockham (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 →).
Selezione del modello: scelta dello spazio delle ipotesi (iperparametri), ottimizzazione (parametri), valutazione (tasso d'errore). Tre insiemi: training, validation, test. -fold CV: giri con una parte di validation, media dei punteggi (; leave-one-out se ); serve comunque un test set. Esempio: SVM su digits, 5-fold: , media .
Alberi di decisione
Guadagno d'informazione. , . ; : si sceglie il massimo (Alberi di decisioneUn albero di decisione partiziona i dati con una sequenza di regole su una sola variabile alla volta (nodi interni = regole, foglie = predizioni: classe più frequente, oppure media del target in regressione). Si costruisce in modo ricorsivo scegliendo a ogni nodo la divisione che rende i figli più «puri»: con l'entropia $H=-\sum p_i\log_2p_i$ e il guadagno d'informazione $IG=H(S)-\sum\frac{|S_v|}{|S|}H(S_v)$ (ID3), oppure con l'indice di Gini $1-\sum p_i^2$ e soglie $x\le t$ su variabili numeriche (CART); in regressione con MSE o riduzione di varianza. Un albero pienamente sviluppato fa overfitting (varianza alta): si limita con la profondità massima (pre-potatura) o con la potatura a costo-complessità $R_\alpha(T)=R(T)+\alpha|T|$ (post-potatura). Pro: interpretabile, niente normalizzazione, predizione immediata; contro: varianza alta, da cui le foreste. Programma di Telecomunicazioni: Decision Trees e Random Forests.Alberi di decisione →). Foglia pura: stop; senza attributi: plurality value tra gli esempi correnti; senza esempi: tra quelli del genitore.
Ristorante (12 esempi, 6+ e 6): ; .
Potatura (). Ipotesi nulla: l'attributo è irrilevante. , con , . Se ( gradi di libertà, tipicamente ) l'attributo è utile; altrimenti si pota.
Hungry in Patrons = Full (2+, 4; No: 0+ e 2, Yes: 2+ e 2): , si pota.
Bagging e random forest. Bagging: campioni con ripetizione, alberi, voto di maggioranza o media: riduce la varianza (Metodi ensemble - bagging, random forest e boostingUn albero da solo ha varianza alta; un ensemble combina molti modelli deboli. Bagging: ogni albero è addestrato su un campione bootstrap (n estrazioni con rimpiazzo, circa il 63% di campioni distinti) e si vota o si fa la media: riduce la varianza, perché la media di $T$ stimatori con varianza $\sigma^2$ e correlazione $\rho$ ha varianza $\rho\sigma^2+(1-\rho)\sigma^2/T$. Random forest = bagging + a ogni split solo $\sqrt p$ feature casuali (alberi meno correlati); l'importanza di una feature è la somma delle riduzioni di Gini pesate sui nodi in cui è usata. Boosting: alberi in sequenza, ciascuno corregge gli errori dei precedenti, e si riduce il bias. Gradient boosting: $F\leftarrow F+\eta h$ con $h$ albero sui residui (gradiente negativo della perdita), $\eta$ piccolo; AdaBoost: stump e pesi sui campioni sbagliati; XGBoost: similarity score $\frac{(\sum r)^2}{N+\lambda}$, gain, potatura con $\gamma$, output $\frac{\sum r}{N+\lambda}$. Programma di Telecomunicazioni: Random Forests; boosting come approfondimento.Metodi ensemble - bagging, random forest e boosting →). Random forest: a ogni nodo il miglior attributo tra un sottoinsieme casuale, alberi meno correlati, niente potatura, costruzione parallela.
Perdita e discesa del gradiente
Perdite. , . Regressione lineare: si minimizza (convessa, soluzione analitica, 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 →). Discesa del gradiente: (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 →). Batch: somma sugli esempi, un passaggio è un'epoca; SGD: un esempio; minibatch: esempi. troppo grande: la perdita cresce.
Esempio , : passo 0 errori , , gradienti e , nuovi pesi , ; poi (con , ) i pesi diventano con . Minimo esatto , .
SVM e kernel
SVM. Separatore a margine massimo, iperpiano, non parametrica; i vettori di supporto (esempi più vicini) sono gli unici con nel problema duale (convesso) (Support vector machines e metodi kernelUna SVM cerca l'iperpiano $w\cdot x+b=0$ che separa due classi con il margine più largo possibile: normalizzando $y_i(w\cdot x_i+b)\ge1$ il margine totale vale $2/|w|$, quindi si risolve $\min\frac12|w|^2$ (problema convesso, nessun minimo locale). Con classi sovrapposte si ammettono errori con le variabili di scarto $\xi_i$ e il parametro $C$ (soft margin, equivalente alla hinge loss più una penalità su $|w|^2$); $C$ piccolo = margine largo e più bias, $C$ grande = margine stretto e più varianza, si sceglie per cross-validation. La soluzione dipende solo dai vettori di supporto ($w=\sum\alpha_iy_ix_i$) e solo tramite prodotti scalari, per questo si può sostituire $x_i\cdot x_j$ con un kernel $K(x_i,x_j)=\langle\phi(x_i),\phi(x_j)\rangle$ (polinomiale, RBF) senza calcolare $\phi$: così si ottengono bordi non lineari. La SVR usa lo stesso schema con un tubo di tolleranza $\varepsilon$. Nell'esame le SVM sono solo nella parte teorica.Support vector machines e metodi kernel →). Kernel: sostituisce ; polinomiale , gaussiano .
Esempio: , : con ; ; gaussiano con : .
scikit-learn (laboratorio 10)
X_train, X_test, y_train, y_test = train_test_split(data, y, test_size=0.25, shuffle=False)
clf = svm.SVC(gamma=0.001).fit(X_train, y_train)
print(metrics.classification_report(y_test, clf.predict(X_test)))Appiattire le immagini ; accuratezza su 450 test. : compromesso margine-errori; kernel; : influenza di un esempio. Metriche: , , (Metriche di classificazioneIn classificazione binaria ogni previsione è vero positivo (TP), vero negativo (TN), falso positivo (FP, errore di tipo I) o falso negativo (FN, errore di tipo II). Da queste quattro quantità: accuracy $=\frac{TP+TN}{TP+TN+FP+FN}$, specificità $=\frac{TN}{TN+FP}$, precision $=\frac{TP}{TP+FP}$, recall $=\frac{TP}{TP+FN}$, e la loro media armonica $F_1=\frac{2PR}{P+R}$. Con dati sbilanciati l'accuracy inganna (un modello che predice sempre la classe maggioritaria ha 99%): si usano precision, recall, F1, ROC-AUC, la cross-validation stratificata e il riequilibrio con undersampling o oversampling (non SMOTE). Cambiando la soglia sulla probabilità si ottiene la curva ROC (TPR contro FPR) e l'area AUC. Approfondimento: non nel programma di Telecomunicazioni.Metriche di classificazione →); cifra 3 della SVM lineare: , , , precision , recall , . Gli iperparametri si scelgono con CV, mai sul test set.
Errori tipici: valutare sul training; scegliere gli iperparametri sul test; non pesare per ; gradi di libertà diversi da ; confondere precision e recall.
Esercizi su questo argomento
- Esercizio - Albero di decisione sul ristorante - guadagno d'informazione e potatura (slide del corso)
- Esercizio - Bias e varianza nella valutazione delle ipotesi (esempio d'esame 1)
- Esercizio - Gradient descent, batch GD, SGD e minibatch SGD (esempio d'esame 2)
- Esercizio - Programma scikit-learn per una SVM con kernel RBF (esempio d'esame 1)
- Esercizio - Ricerca del miglior C per una SVM lineare sul dataset digits (laboratorio 10)
- Esercizio - SVM con tre kernel sul dataset iris (laboratorio 10)