Alberi di decisione
In questa pagina 9
In questa pagina 5
Gli alberi sono tra i metodi più efficaci per l'apprendimento supervisionato su dati tabellari di dimensione medio-piccola (meno di circa 10 000 campioni), e le idee alla base sono semplici. Qui si costruisce l'albero singolo; la combinazione di molti alberi (foreste, boosting) è 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 →. Gli esercizi sono Esercizio - Albero di decisione ID3 sul dataset del tennis, Esercizio - Albero di decisione con criteri di impurità e potatura sul dataset iris e Esercizio - ID3 con potatura e foresta casuale sul dataset Titanic.
L'idea: decisioni a una variabile alla volta
Un esempio di decisione medica: «età > 50? peso > 90 kg? fumatore?» da cui si stima il rischio di infarto. Il diagramma è probabilmente stato costruito da dati storici: è un problema supervisionato multivariato di classificazione, ma ogni decisione guarda una sola variabile per volta.
Definizione (albero di decisione). Struttura ad albero in cui
- ogni nodo interno rappresenta una regola basata su una feature (per esempio «umidità = alta» oppure «»);
- ogni ramo è l'esito della regola;
- ogni foglia è una predizione: tipicamente la classe più frequente tra i campioni che arrivano in quella foglia (in regressione, la media dei loro valori).
Per classificare un nuovo punto si parte dalla radice e si segue il ramo indicato dal valore delle sue feature, fino a una foglia.
L'obiettivo dell'addestramento è trovare le decisioni (coppie variabile-valore, o variabile-soglia) che dividono i dati in scenari in cui una classe diventa dominante o più facile da prevedere. Si procede in modo ricorsivo:
- si parte dalla radice con tutti i dati;
- si sceglie la variabile (e il valore) che «semplifica» di più il problema, cioè che rende più omogenee le classi nei figli;
- si divide e si ripete su ciascun figlio, finché le classi sono separate o si raggiunge una profondità massima.
Serve una misura quantitativa di quanto sia «semplice» un nodo: le misure di impurità.
Entropia e guadagno d'informazione
Definizione (entropia). (Logaritmo in base 2: Esponenziale e logaritmoLa funzione esponenziale a^x (base positiva diversa da 1) e la sua inversa, il logaritmo in base a, con grafici e proprietà.Esponenziale e logaritmo →.) Per un insieme di campioni con classi, di proporzioni , : l'insieme è puro (una sola classe); più alta: classi più mescolate, maggiore incertezza. Con due classi il massimo è per .
Definizione (guadagno d'informazione). Dividere secondo i valori dell'attributo in sottoinsiemi riduce l'entropia di alto: la divisione riduce molto l'incertezza (buona scelta); basso: l'attributo non aiuta a separare le classi.
Il secondo termine è la media delle entropie dei figli pesata dalla frazione di campioni di ciascun figlio.
Da dove viene l'entropia (passaggi). Si vuole un numero che misuri la «sorpresa» nel vedere la classe di un campione.
- Un evento di probabilità è tanto più sorprendente quanto più è raro, e la sorpresa di due eventi indipendenti si somma mentre le loro probabilità si moltiplicano (la probabilità di eventi indipendenti si moltiplica: Indipendenza di eventiA e B sono indipendenti se P(A ∩ B) = P(A) P(B), cioè se sapere che uno si è verificato non cambia la probabilità dell'altro; l'indipendenza passa ai complementari, non va confusa con l'incompatibilità, e per più eventi va richiesta su ogni sottofamiglia.Indipendenza di eventi →). L'unica funzione di che trasforma un prodotto in una somma è il logaritmo: la sorpresa è (proprietà : Esponenziale e logaritmoLa funzione esponenziale a^x (base positiva diversa da 1) e la sua inversa, il logaritmo in base a, con grafici e proprietà.Esponenziale e logaritmo →). Il segno meno la rende perché quando ; l'evento certo () ha sorpresa , quello con ha sorpresa bit.
- L'entropia è la sorpresa media sulle classi, cioè il valore attesoIl valore atteso E[X] = Σ x p_X(x) è la media dei valori di X pesata con le loro probabilità (esiste se la serie converge assolutamente); per una funzione g vale E[g(X)] = Σ g(x) p_X(x) senza trovare la legge di g(X), ed E è lineare: E[aX + bY + c] = aE[X] + bE[Y] + c.Valore atteso → della sorpresa: ogni classe capita con probabilità e porta sorpresa , quindi . È la formula sopra.
- Il logaritmo in base 2 si calcola con il cambio di base : per esempio .
Perché il massimo con due classi è in . Con due classi . Si deriva (Regole di derivazioneDerivate delle funzioni elementari e delle loro inverse (arcsin, arctan, settcosh...) e regole di calcolo: linearità, prodotto (Leibniz), quoziente, funzione composta (regola della catena), funzione inversa, f(x)^g(x).Regole di derivazione →; ): . È quando , cioè , positiva a sinistra e negativa a destra (Massimi e minimi relativi e teorema di Fermatx0 è punto di minimo (massimo) relativo se f(x0) ≤ f(x) (≥) per gli x del dominio vicini a x0. I candidati sono gli estremi del dominio, i punti dove f non è derivabile e i punti interni con f'(x0) = 0 (punti critici o stazionari). Teorema di Fermat: in un punto interno di minimo o massimo relativo dove f è derivabile, f'(x0) = 0. È solo una condizione necessaria: x³ in 0.Massimi e minimi relativi e teorema di Fermat →). La derivata seconda conferma che è concava (Funzioni convesse, concave e punti di flessof è convessa se ogni corda sta sopra il grafico (concava se sta sotto). Una funzione convessa è continua e ha derivate destra e sinistra in ogni punto interno. Per f derivabile: convessa ⇔ grafico sopra ogni tangente ⇔ f' crescente ⇔ (se esiste) f'' ≥ 0. f'' > 0 ⇒ strettamente convessa, non viceversa (x⁴). Flesso: punto in cui f passa da convessa a concava; lì, se esiste, f''(x0) = 0, ma non basta (x⁴ in 0).Funzioni convesse, concave e punti di flesso →), quindi quel punto è un massimo, con . Per classi equiprobabili .
Esempio (dataset del tennis, Mitchell 1997). Dati di 14 giorni per prevedere se l'amico gioca a tennis:
| # | Outlook | Temp. | Humidity | Wind | Play |
|---|---|---|---|---|---|
| 1 | Sunny | Hot | High | Weak | No |
| 2 | Sunny | Hot | High | Strong | No |
| 3 | Overcast | Hot | High | Weak | Yes |
| 4 | Rain | Mild | High | Weak | Yes |
| 5 | Rain | Cool | Normal | Weak | Yes |
| 6 | Rain | Cool | Normal | Strong | No |
| 7 | Overcast | Cool | Normal | Strong | Yes |
| 8 | Sunny | Mild | High | Weak | No |
| 9 | Sunny | Cool | Normal | Weak | Yes |
| 10 | Rain | Mild | Normal | Weak | Yes |
| 11 | Sunny | Mild | Normal | Strong | Yes |
| 12 | Overcast | Mild | High | Strong | Yes |
| 13 | Overcast | Hot | Normal | Weak | Yes |
| 14 | Rain | Mild | High | Strong | No |
(Le slide indicano ma le righe sono 14.) Ci sono «Yes» e «No»: .
Passi del calcolo: e ; e (la classe rara è più «sorprendente»); media pesata più , in totale . Un'entropia di su un massimo di dice che il nodo è quasi del tutto misto.
Passo 1: scelta della radice. Per ogni attributo si calcola l'entropia di ciascun sottoinsieme. Un esempio completo: Sunny ha Yes e No su , quindi e , e . Gli altri valori sotto si ottengono allo stesso modo: , , , .
- Outlook: Sunny (5: 2 Yes, 3 No) ; Overcast (4: 4 Yes) ; Rain (5: 3 Yes, 2 No) . .
- Temperature: Hot (4: 2/2) ; Mild (6: 4/2) ; Cool (4: 3/1) . .
- Humidity: High (7: 3 Yes, 4 No) ; Normal (7: 6/1) . .
- Wind: Weak (8: 6/2) ; Strong (6: 3/3) . .
Il guadagno massimo è quello di Outlook (): è la radice. Il ramo Overcast è già puro (sempre Yes): foglia «Yes».
Passo 2: rami Sunny e Rain.
- Sunny (5 campioni: 2 Yes, 3 No, ): lo split su Humidity dà High 3 No () e Normal 2 Yes (): , il massimo possibile (Temperature darebbe , Wind ).
- Rain (5 campioni: 3 Yes, 2 No): lo split su Wind dà Weak 3 Yes e Strong 2 No: .
Outlook?
├── Sunny -> Humidity?
│ ├── High -> No
│ └── Normal -> Yes
├── Overcast -> Yes
└── Rain -> Wind?
├── Weak -> Yes
└── Strong -> NoL'albero classifica correttamente tutti i 14 campioni di training. Le regole sono immediatamente leggibili («se è soleggiato e l'umidità è normale, gioca»).
L'indice di Gini e l'algoritmo CART
Definizione (indice di Gini o impurità di Gini). Vale per un insieme puro, e il massimo per classi equiprobabili. Per una divisione in sinistra/destra: Si sceglie la divisione con minimo (cioè con la massima riduzione di impurità).
Che cosa misura il Gini. È la probabilità di sbagliare se si estrae a caso un campione e gli si assegna una classe estratta a caso con le stesse proporzioni. Le due estrazioni sono indipendenti, quindi la probabilità che abbiano la stessa classe è (Indipendenza di eventiA e B sono indipendenti se P(A ∩ B) = P(A) P(B), cioè se sapere che uno si è verificato non cambia la probabilità dell'altro; l'indipendenza passa ai complementari, non va confusa con l'incompatibilità, e per più eventi va richiesta su ogni sottofamiglia.Indipendenza di eventi →); le classi sono eventi incompatibili, e per l'additività (Misura di probabilità e sue proprietàUna misura di probabilità è una funzione P: F → [0,1] con P(Ω) = 1 e σ-additiva; ne seguono P(Aᶜ) = 1 − P(A), P(∅) = 0, monotonia, P(A ∪ B) = P(A) + P(B) − P(A ∩ B) e la formula di inclusione-esclusione.Misura di probabilità e sue proprietà →) la probabilità che le due classi coincidano è . Il Gini è la probabilità del complementare: che le due classi differiscano. Per due classi , con massimo in . Con classi equiprobabili : . Rispetto all'entropia non serve calcolare logaritmi.
Esempio. Sul tennis, . Split su Outlook: Sunny , Overcast , Rain , quindi (riduzione ); Humidity: ; Wind: ; Temperature: . Anche con Gini la scelta migliore è Outlook. I passaggi di Humidity: High ( Yes, No su ) ; Normal ( Yes, No) ; media pesata . Wind: Weak () , Strong () , quindi .
Le due curve sono molto simili, come quella dell'errore di classificazione (per due classi, in funzione di ):
Grafico interattivo: Misure di impurità per due classi in funzione della proporzione p di una classe: entropia (normalizzata a 1 in p = 0,5), indice di Gini 2p(1 − p) e errore di classificazione min(p, 1 − p). Tutte valgono 0 per un nodo puro e sono massime per p = 0,5
(Il Gini ha massimo per due classi.)
CART (Classification And Regression Trees) costruisce alberi binari con un algoritmo ricorsivo:
CART(dati):
se tutti gli esempi hanno la stessa classe -> foglia con quella classe
miglior_divisione = attributo e valore con il Gini_split minimo
se nessuna divisione migliora il Gini -> foglia con la classe maggioritaria
sx, dx = dividi i dati con la miglior_divisione
nodo con: la condizione, CART(sx), CART(dx)Variabili numeriche
Per una feature numerica (per esempio la lunghezza del petalo) CART considera divisioni binarie e prova molte soglie (di solito i punti medi tra valori consecutivi dei dati ordinati), scegliendo quella che minimizza l'impurità. Per le variabili categoriche si divide in «uguale a un valore» / «diverso».
Esempio. con etichette . Per le soglie il Gini ponderato vale . Per : sinistra (Gini ), destra (Gini ): . Le soglie e sono alla pari (ex aequo): si sceglie la prima trovata.
Esempio (dataset iris con CART, profondità 3). Radice: petalo cm (o, equivalentemente, lunghezza del petalo ) isola le 50 setosa. Poi larghezza e lunghezza o . Accuracy sul training con profondità 3 ( con profondità 1, con 2, con 4, con 5).
Grafico interattivo: Iris: l'albero di profondità 3 divide il piano (lunghezza petalo, larghezza petalo) con rette parallele agli assi: larghezza ≤ 0,8 setosa; poi larghezza ≤ 1,75 con lunghezza ≤ 4,95 versicolor, oltre virginica; larghezza > 1,75: virginica
Alberi di regressione
Con un target continuo cambiano il criterio di divisione e l'uscita delle foglie.
Formula (criteri per la regressione). Per una divisione in sinistra/destra con campioni (): con (Varianza e momentiI momenti E[X^k] e i momenti centrati E[(X − μ)^k] descrivono la forma di una legge; la varianza Var(X) = E[(X − μ)²] = E[X²] − E[X]² misura quanto X si disperde attorno alla media, vale Var(aX + b) = a² Var(X) e Var(X) = 0 solo se X è costante.Varianza e momenti →). Poiché in ogni nodo la previsione è la media (e quindi l'MSE del nodo è la sua varianza), massimizzare la riduzione di varianza equivale a minimizzare l'MSE. Ogni foglia restituisce la media del target dei suoi campioni.
Perché la foglia restituisce la media (passaggi). Una foglia ha una sola previsione per tutti i suoi campioni e si vuole la che minimizza l'errore quadratico . È una parabola in : , che si annulla in (Massimi e minimi relativi e teorema di Fermatx0 è punto di minimo (massimo) relativo se f(x0) ≤ f(x) (≥) per gli x del dominio vicini a x0. I candidati sono gli estremi del dominio, i punti dove f non è derivabile e i punti interni con f'(x0) = 0 (punti critici o stazionari). Teorema di Fermat: in un punto interno di minimo o massimo relativo dove f è derivabile, f'(x0) = 0. È solo una condizione necessaria: x³ in 0.Massimi e minimi relativi e teorema di Fermat →); , quindi è un minimo. Con l'errore medio è , cioè proprio la varianza del nodo (Varianza e momentiI momenti E[X^k] e i momenti centrati E[(X − μ)^k] descrivono la forma di una legge; la varianza Var(X) = E[(X − μ)²] = E[X²] − E[X]² misura quanto X si disperde attorno alla media, vale Var(aX + b) = a² Var(X) e Var(X) = 0 solo se X è costante.Varianza e momenti →): per questo MSE del nodo e varianza coincidono.
Esempio. , : varianza del genitore (media , scarti quadratici , somma , divisa per ). Per : sinistra (varianza ), destra (media , varianza ): MSE ponderato . Ripetendo per tutte le soglie si ottiene per : la migliore è (sinistra con media e varianza ; destra con media e varianza ), con riduzione di varianza . Le predizioni sono per e per : una funzione costante a tratti.
Grafico interattivo: Albero di regressione di profondità 1 sull'esempio: i sei punti e la previsione a gradini (2 per x ≤ 3,5; 11 per x > 3,5), cioè la media di ciascuna foglia
ID3 e altre varianti
ID3 (Iterative Dichotomiser 3) è l'algoritmo originale per feature categoriche, alternativo a CART:
- a ogni nodo si calcola l'entropia di split (o il guadagno) per ogni feature non ancora usata nel ramo e si sceglie la migliore;
- si divide in tutti i valori della feature, creando tanti figli quanti sono i valori (anche più di due, o uno solo);
- una feature usata non è riutilizzata nei discendenti;
- si fermano la crescita (foglia): nessun campione nel nodo si predice la classe maggioritaria del genitore; tutti i campioni della stessa classe quella classe; nessuna feature rimasta con classi miste classe maggioritaria (e, opzionale, profondità massima).
Per le feature continue si può: usare la soglia binaria come in CART (scegliere la miglior ), oppure quantizzare le variabili in intervalli e trattarle come categoriche (pre-elaborazione), oppure fare uno split multiplo con i punti medi tra valori consecutivi. Nelle prove di laboratorio sul Titanic la soglia ( di accuracy su test) e la quantizzazione () sono confrontabili.
| Algoritmo | Idea |
|---|---|
| ID3, C4.5, C5.0 | versioni precedenti/estese di CART; C4.5 (e la versione commerciale C5.0) usa il rapporto di guadagno (gain ratio) invece di Gini o entropia, per non favorire attributi con molti valori; C5.0 è più veloce ed efficiente in memoria |
| CHAID | basato sul test chi-quadro; gestisce bene i dati categorici e può dividere in più rami; popolare in scienze sociali e marketing |
| QUEST | progettato per ridurre il bias nella scelta della variabile; tratta categoriche e continue |
Overfitting e potatura
Un albero lasciato crescere fino a foglie pure separa perfettamente il training ma si adatta al rumore: varianza alta (Varianza e momentiI momenti E[X^k] e i momenti centrati E[(X − μ)^k] descrivono la forma di una legge; la varianza Var(X) = E[(X − μ)²] = E[X²] − E[X]² misura quanto X si disperde attorno alla media, vale Var(aX + b) = a² Var(X) e Var(X) = 0 solo se X è costante.Varianza e momenti →), scarsa generalizzazione (lo stesso fenomeno di 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 →). Al crescere della profondità l'accuracy sul training sale sempre (nell'iris da a ); su dati nuovi sale e poi scende. Due rimedi:
Pre-potatura (profondità massima). Si ferma la crescita a una profondità anche se altre divisioni migliorerebbero l'adattamento (early stopping). Pro: veloce e facile da controllare; evita l'overfitting con pochi dati. Contro: può perdere divisioni utili subito oltre il limite e non guarda quanto siano significative. Nel laboratorio sul dataset wine l'accuracy su test passa da (profondità 1) a (2) e (3).
Post-potatura a costo-complessità (minimal cost-complexity pruning, di CART). Si lascia crescere l'albero completo e poi si tolgono i rami che non migliorano la generalizzazione. Si cercano i sottoalberi che bilanciano l'errore e la semplicità: con l'errore (impurità di Gini o tasso di errata classificazione) dell'albero , il numero di foglie e il parametro di potatura (più alto = più potatura). Per ogni nodo interno si calcola il al quale conviene sostituire il suo sottoalbero con una foglia: Il numeratore è la riduzione di errore che quel sottoalbero apporta, il denominatore il numero di foglie «aggiunte». Si pota per primo il nodo con minimo (il «filo più debole»: aggiunge poco per foglia), si ricalcolano gli e si ripete; ciò dà una successione di alberi sempre più piccoli, tra cui si sceglie con una validazione. Pro: flessibile, di solito generalizza meglio del limite rigido; contro: più lenta (valuta sottoalberi) e richiede un'accurata scelta di .
Esempio (iris, albero di profondità 3, 150 campioni). I quattro nodi interni sono: (a) il nodo «larghezza » (46 campioni: 1 versicolor e 45 virginica) con due foglie e : , , 2 foglie ; (b) il nodo «larghezza » (54 campioni) con le foglie e : ; (c) il nodo «larghezza » (100 campioni, 4 foglie): ; (d) la radice (5 foglie): . Il calcolo di (a) per intero: Gini del nodo , quindi (il peso misura quanta parte del training passa dal nodo); le foglie sono (3 campioni, Gini , ) e (pura, ), quindi ; con foglie . Si pota per primo il nodo (a), con minimo (), poi si ricalcolano gli altri. (Nel notebook di laboratorio i valori , , sono gli stessi; per la radice compare perché il loro albero divide anche il nodo puro delle setosa e ha 7 foglie: .)
Vantaggi e svantaggi
- Pro: facilmente interpretabili (regole leggibili); non richiedono normalizzazione dei dati (le soglie su una variabile non dipendono dalla scala); classificazione quasi immediata; la parte costosa (l'addestramento) si fa una volta, offline; trattano classi multiple e variabili miste.
- Contro: sono classificatori ad alta varianza: piccole modifiche nei dati cambiano molto l'albero, quindi sono soggetti a overfitting e spesso generalizzano male.
La soluzione è considerare molti alberi diversi e combinarli: una foresta (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 →). L'importanza delle feature, calcolata dalla riduzione di impurità, è trattata anch'essa lì.
Codice
from sklearn.tree import DecisionTreeClassifier, export_text
tree = DecisionTreeClassifier(criterion="gini", max_depth=3, ccp_alpha=0.0, random_state=0)
tree.fit(X_train, y_train)
print(export_text(tree, feature_names=names)) # regole dell'albero
alphas = tree.cost_complexity_pruning_path(X_train, y_train).ccp_alphas # alpha di potaturaL'implementazione da zero nei laboratori usa classi con impurity() e split_impurity() e un nodo con (feature, soglia, predizione); nodi indicizzati come e (la stessa numerazione per livelli con cui si memorizza un heapAlbero binario completo e sua altezza floor(log2 n); heap = albero completo con heap-order property; proprietà (radice minima, cammini non decrescenti); rappresentazione su array con level numbering; insert con up-heap bubbling, removeMin con down-heap bubbling, rimozione di una entry qualsiasi; invarianti e costi Theta(log n); esempio svolto.Heap → in un array: i figli del nodo stanno a e , senza puntatori).
Costi (con gli strumenti di Dati e Algoritmi). Un albero di decisione è un albero binarioAlbero binario e albero binario proprio; interfaccia; relazioni tra nodi, foglie e altezza (m = n-m+1, h+1 <= m <= 2^h, 2h+1 <= n <= 2^(h+1)-1) con dimostrazioni; visita inorder; parse tree e valutazione di espressioni; heightSum come esempio di calcolo di un'informazione più ricca.Alberi binari → (in CART) e predire significa percorrere un cammino dalla radice a una foglia (Visite di alberiVisite in preorder e postorder come schemi generali (template) da adattare; complessità Theta(n + somma dei costi di visita) perché la somma dei figli è n-1; esempi (indice di un libro, spazio occupato in un file system); profondità con il preorder, altezza con il postorder; antenato comune più basso.Visite di alberi →): il costo è , con l'altezza, che è al più la profondità massima scelta. Non dipende da , a differenza del k-NN (Classificazione e k-nearest neighborsNella classificazione l'uscita $y$ è una categoria (con $C$ classi; $C=2$ è il caso binario). Il classificatore più semplice è il k-nearest neighbors: una nuova osservazione prende la classe più frequente (voto di maggioranza) tra i suoi $k$ vicini più prossimi nel training, con distanza euclidea $\sqrt{\sum(A_i-B_i)^2}$ o di Manhattan $\sum|A_i-B_i|$ (per la regressione si fa la media dei vicini). $k$ è un iperparametro: $k$ piccolo dà bordi frastagliati e overfitting, $k$ grande underfitting. È un metodo basato su istanze e «pigro» (nessun addestramento, costo alla predizione), sensibile a scala e feature irrilevanti e alla maledizione della dimensionalità; gli ingressi categorici si codificano con one-hot. Approfondimento: non nel programma di Telecomunicazioni.Classificazione e k-nearest neighbors →). Per addestrare, a ogni livello si guardano al più tutti gli campioni; per ogni feature numerica si ordinano i valori (, Algoritmi di ordinamentoSelection sort e insertion sort (quadratici, con invarianti), merge sort (divide et impera, Theta(n log n)), quick sort (caso pessimo quadratico, medio n log n), heap sort (in loco, Theta(n log n)), ordinamento senza confronti per chiavi intere in un intervallo piccolo, limite inferiore Omega(n log n) per gli algoritmi basati su confronti.Algoritmi di ordinamento →) e si calcola l'impurità di ogni soglia con somme cumulate; con feature e profondità il costo è (Notazione asintoticaDefinizioni di O, Omega, Theta e o piccolo con le costanti c ed n0; esempi con costanti esplicite; proprietà (polinomi, esponenziali, logaritmi, somme, implicazioni tra notazioni); sommatorie notevoli; terminologia (logaritmica, lineare, polinomiale, esponenziale).Notazione asintotica →). Un albero perfettamente bilanciato con livelli ha fino a foglie, perciò con al più regioni. Nota: nel codice del laboratorio il criterio «minimizza» (Gini, entropia) o «massimizza» (guadagno d'informazione).
Errori tipici
- Dimenticare che il guadagno d'informazione si massimizza mentre Gini e entropia dei figli si minimizzano.
- Calcolare la media delle entropie dei figli senza pesare per la dimensione dei sottoinsiemi.
- Scegliere la profondità guardando l'accuracy sul training (sale sempre).
- Pensare che serva standardizzare le feature: per gli alberi non serve.
- Usare un albero molto profondo sperando in una buona generalizzazione: varianza alta.
Versione ripasso
Definizione (albero di decisione). Nodi interni = regole su una variabile alla volta (per esempio «umidità = alta» o «»); rami = esiti della regola; foglie = predizione, cioè la classe più frequente (in regressione la media del target). Per classificare si parte dalla radice e si segue il ramo fino a una foglia.
Costruzione ricorsiva. Dalla radice con tutti i dati: si sceglie la variabile e il valore che rendono più omogenei i figli; si ripete su ciascun figlio finché le classi sono separate o si raggiunge la profondità massima. Serve una misura di impurità.
Entropia e guadagno d'informazione (ID3)
Formula (entropia). Con classi di proporzioni : , con . se il nodo è puro; con due classi il massimo è in . Per classi equiprobabili .
Esempio. Logaritmo con cambio di base: . Derivando con due classi si trova , che si annulla in (Esponenziale e logaritmoLa funzione esponenziale a^x (base positiva diversa da 1) e la sua inversa, il logaritmo in base a, con grafici e proprietà.Esponenziale e logaritmo →).
Formula (guadagno d'informazione). . Si massimizza: è l'entropia media dei figli, pesata per la frazione di campioni in ciascuno.
L'entropia è la sorpresa media delle classi, cioè il valore attesoIl valore atteso E[X] = Σ x p_X(x) è la media dei valori di X pesata con le loro probabilità (esiste se la serie converge assolutamente); per una funzione g vale E[g(X)] = Σ g(x) p_X(x) senza trovare la legge di g(X), ed E è lineare: E[aX + bY + c] = aE[X] + bE[Y] + c.Valore atteso → della sorpresa.
Esempio (tennis, 14 giorni, 9 Yes e 5 No). .
- Outlook: Sunny (2 Yes, 3 No) ; Overcast (4 Yes) ; Rain (3 Yes, 2 No) . .
- Humidity: . Wind: . Temperature: .
Radice: Outlook, con il guadagno massimo. Overcast è puro (sempre Yes). Sunny ha con Humidity (High tutto No, Normal tutto Yes). Rain ha con Wind (Weak tutto Yes, Strong tutto No). L'albero classifica bene tutti i 14 campioni di training.
Indice di Gini e CART
Formula (Gini). , pari a per un nodo puro, con massimo . Per una divisione sinistra/destra: . Si minimizza.
Il Gini è la probabilità che due campioni estratti a caso abbiano classi diverse (Indipendenza di eventiA e B sono indipendenti se P(A ∩ B) = P(A) P(B), cioè se sapere che uno si è verificato non cambia la probabilità dell'altro; l'indipendenza passa ai complementari, non va confusa con l'incompatibilità, e per più eventi va richiesta su ogni sottofamiglia.Indipendenza di eventi →). Per due classi vale , con massimo .
Esempio (tennis). . Split su Outlook: , la scelta migliore anche con Gini (Humidity , Wind , Temperature ).
Entropia normalizzata, Gini ed errore di classificazione hanno tutti massimo in e valgono per un nodo puro.
CART costruisce alberi binari:
CART(dati):
se tutti gli esempi hanno la stessa classe -> foglia con quella classe
miglior_divisione = attributo e valore con il Gini_split minimo
se nessuna divisione migliora il Gini -> foglia con la classe maggioritaria
sx, dx = dividi i dati con la miglior_divisione
nodo con: la condizione, CART(sx), CART(dx)Feature numeriche. CART prova divisioni con punto medio tra valori consecutivi. Esempio. , etichette : per la sinistra ha Gini , la destra ha Gini , quindi (il valore minimo tra le soglie).
Alberi di regressione
Formula (criteri per la regressione). , oppure riduzione di varianza . Massimizzare la riduzione equivale a minimizzare l'MSE. Ogni foglia restituisce la media dei suoi (Varianza e momentiI momenti E[X^k] e i momenti centrati E[(X − μ)^k] descrivono la forma di una legge; la varianza Var(X) = E[(X − μ)²] = E[X²] − E[X]² misura quanto X si disperde attorno alla media, vale Var(aX + b) = a² Var(X) e Var(X) = 0 solo se X è costante.Varianza e momenti →).
Il motivo della media: la che minimizza si trova con e vale (Massimi e minimi relativi e teorema di Fermatx0 è punto di minimo (massimo) relativo se f(x0) ≤ f(x) (≥) per gli x del dominio vicini a x0. I candidati sono gli estremi del dominio, i punti dove f non è derivabile e i punti interni con f'(x0) = 0 (punti critici o stazionari). Teorema di Fermat: in un punto interno di minimo o massimo relativo dove f è derivabile, f'(x0) = 0. È solo una condizione necessaria: x³ in 0.Massimi e minimi relativi e teorema di Fermat →).
Esempio. , : varianza del genitore . Per : sinistra con varianza , destra con varianza , MSE e riduzione . Le previsioni sono per e per . Le altre soglie danno .
Overfitting e potatura
Un albero cresciuto fino alle foglie pure separa perfettamente il training e si adatta al rumore: varianza alta (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 →). Sul training l'accuratezza sale sempre con la profondità (nell'iris da a ), su dati nuovi sale e poi scende.
- Pre-potatura (profondità massima , early stopping). Veloce, ma può perdere divisioni utili subito oltre il limite. Sul dataset wine l'accuracy su test passa da (profondità 1) a (2) e (3).
- Post-potatura a costo-complessità (CART). Si lascia crescere l'albero, poi si cerca il sottoalbero che minimizza con il numero di foglie e . Per ogni nodo interno : Passi: si calcolano tutti gli ; si pota il nodo con minimo (il «filo più debole»); si ricalcola e si ripete, ottenendo alberi sempre più piccoli; si sceglie quello migliore con la validazione.
Esempio (iris, nodo «larghezza », 46 campioni con foglie e ). Gini del nodo , quindi . La foglia ha Gini e peso : ; la foglia pura ha . Con foglie: , il valore minimo, quindi è il primo nodo da potare.
Vantaggi e svantaggi
- Pro: regole leggibili; nessuna normalizzazione (le soglie su una variabile non dipendono dalla scala); predizione immediata; trattano classi multiple e variabili miste.
- Contro: alta varianza. Piccole modifiche dei dati cambiano molto l'albero. La soluzione sono molti alberi combinati: 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 →.
Costi. Predire costa , con la profondità, indipendentemente da (Visite di alberiVisite in preorder e postorder come schemi generali (template) da adattare; complessità Theta(n + somma dei costi di visita) perché la somma dei figli è n-1; esempi (indice di un libro, spazio occupato in un file system); profondità con il preorder, altezza con il postorder; antenato comune più basso.Visite di alberi →, Alberi binariAlbero binario e albero binario proprio; interfaccia; relazioni tra nodi, foglie e altezza (m = n-m+1, h+1 <= m <= 2^h, 2h+1 <= n <= 2^(h+1)-1) con dimostrazioni; visita inorder; parse tree e valutazione di espressioni; heightSum come esempio di calcolo di un'informazione più ricca.Alberi binari →). Per addestrare, per ogni feature numerica si ordinano i valori (, Algoritmi di ordinamentoSelection sort e insertion sort (quadratici, con invarianti), merge sort (divide et impera, Theta(n log n)), quick sort (caso pessimo quadratico, medio n log n), heap sort (in loco, Theta(n log n)), ordinamento senza confronti per chiavi intere in un intervallo piccolo, limite inferiore Omega(n log n) per gli algoritmi basati su confronti.Algoritmi di ordinamento →) e si calcolano le impurità con somme cumulate: con feature e profondità il costo è (Notazione asintoticaDefinizioni di O, Omega, Theta e o piccolo con le costanti c ed n0; esempi con costanti esplicite; proprietà (polinomi, esponenziali, logaritmi, somme, implicazioni tra notazioni); sommatorie notevoli; terminologia (logaritmica, lineare, polinomiale, esponenziale).Notazione asintotica →).
from sklearn.tree import DecisionTreeClassifier, export_text
tree = DecisionTreeClassifier(criterion="gini", max_depth=3, ccp_alpha=0.0, random_state=0)
tree.fit(X_train, y_train)
print(export_text(tree, feature_names=names)) # regole dell'albero
alphas = tree.cost_complexity_pruning_path(X_train, y_train).ccp_alphas # alpha di potaturaErrori tipici:
- scegliere lo split con il guadagno minimo: il guadagno si massimizza, Gini ed entropia dei figli si minimizzano;
- fare la media delle entropie dei figli senza pesarle per la dimensione dei sottoinsiemi;
- scegliere la profondità guardando l'accuratezza sul training, che sale sempre;
- standardizzare le feature: per gli alberi non serve;
- usare un albero molto profondo sperando in una buona generalizzazione.
Esercizi su questo argomento
- Esercizio - Albero di decisione sul ristorante - guadagno d'informazione e potatura (slide del corso)
- Esercizio - Albero di decisione con criteri di impurità e potatura sul dataset iris
- Esercizio - Albero di decisione ID3 sul dataset del tennis
- Esercizio - Albero di isolamento passo per passo (laboratorio di ripasso)
- Esercizio - Balanced random forest (laboratorio di ripasso)
- Esercizio - Cross-validation annidata con alberi (laboratorio di ripasso)
- Esercizio - Curva ROC e AUC di una foresta casuale e di un albero
- Esercizio - Gradient boosting per la regressione sul dataset housing
- Esercizio - ID3 con potatura e foresta casuale sul dataset Titanic
- Esercizio - Importanza delle feature di un albero sul dataset wine
- Esercizio - Isolation forest da zero e anomalie sul dataset delle abitazioni