L'albero che prevede
Come può un albero aiutarti a indovinare quanti gelati venderai, in base al meteo?
Molte decisioni di tutti i giorni dipendono da qualcosa che non possiamo ancora sapere: quante persone si presenteranno, a quanto si venderà una casa, se un'email è spam oppure no.
I computer possono aiutarci guardando cosa è successo in passato e facendo un'ipotesi ragionata su cosa succederà dopo. Un albero decisionale è uno dei modi più semplici per farlo: pone qualche domanda sì o no, una dopo l'altra, come nel gioco delle venti domande, e le risposte portano a una stima. Gli alberi decisionali si usano molto spesso, sia per fare previsioni sia per problemi di classificazione: perché non smontarne uno per capire come funziona?
In questa pagina ne costruiremo uno insieme, una domanda alla volta, per indovinare quanti gelati venderà un piccolo chiosco in un certo giorno sapendo soltanto quanto fa caldo. Niente di quello che vedrai è inventato: dietro le quinte gira una copia fedele di LightGBM, una libreria gratuita che i data scientist usano ogni giorno per fare previsioni, e ci accompagnerà passo dopo passo lungo tutto il percorso.
Il chiosco dei gelati
Immagina un piccolo chiosco di gelati che ha tenuto un registro per quasi tutto l'anno. Ogni riga è un giorno: una temperatura e quanti coni ha venduto. In tutto i giorni sono 300. Data la temperatura di un giorno, come faccio a sapere quanti coni venderò?
Visto che vogliamo sapere se il nostro albero è bravo a dircelo, la prassi vuole che si dividano i dati in due insiemi. Diciamo che 210 giorni fanno da dati di training per insegnare all'albero che legame c'è tra la temperatura e i coni venduti. Gli altri 90 fanno da dati di test per controllare se le previsioni dell'albero reggono il confronto con dati reali che non ha mai visto.
Ora immagina di disegnare un grafico in cui, per ogni giorno, mettiamo la temperatura sull'asse orizzontale e il numero di coni venduti quel giorno sull'asse verticale. Nei giorni freschi le vendite restano basse, salgono in fretta appena la temperatura supera di poco i 20 °C, poi continuano a salire fino a ben oltre 200 coni nei giorni più caldi.
Tra le due cose c'è chiaramente una correlazione, ma come facciamo a stimare quanti coni venderemo conoscendo solo la temperatura di quel giorno? Se dovessimo scegliere un'unica stima per tutti i giorni, ignorando la temperatura, sarebbe la media dei coni venduti ogni giorno, diciamo circa 95 coni. Disegniamola come una linea piatta che attraversa il grafico.
Quella stima piatta sbaglia quasi tutti i giorni: troppo alta quando fa freddo, troppo bassa quando fa caldo. La distanza tra una stima e quanto si è venduto davvero quel giorno è lo scarto. Un trucco è elevare al quadrato lo scarto di ogni giorno, così uno scarto grande conta molto più di uno piccolo e gli scarti in direzioni opposte non si annullano a vicenda. Fallo per tutti i 210 giorni di training e ottieni un solo numero che dice quanto sbaglia, nel complesso, la stima media. È l'errore quadratico medio, o MSE in breve:
Qui si arriva a poco meno di 3.800 coni². È parecchio, quindi proviamo ad abbassare questo numero.
Una domanda
La prossima mossa ovvia è smettere di ignorare la temperatura. E se la stima potesse tenerne conto attraverso un'unica domanda sì o no: "Oggi la temperatura supera una certa soglia?"
Rispondere divide i 210 giorni di training in due gruppi, una divisione sulla soglia, e ogni gruppo diventa una foglia a sé, con la propria media come stima. Due foglie danno due linee piatte invece di una: una scalinata con due gradini. Quanto scende l'MSE è il miglioramento che si ottiene scegliendo una soglia. Il miglioramento di una soglia è quanto si riduce lo scarto, contato una volta per ogni giorno di training:
Lo sommiamo su tutti i giorni invece di farne la media perché presto confronteremo domande poste a gruppi di dimensioni molto diverse, e una domanda che aiuta 150 giorni deve contare molto più di una che ne aiuta 5.
La figura qui sotto ti lascia scegliere da te dove mettere la soglia e vedere come rispondono le due medie, lo scarto e il miglioramento.
Trascina la soglia oltre i 26 °C e guarda le due medie.
Premi "lascia che la trovi la macchina" e guarda la curva riempirsi.
Rimescola, ritrova la soglia migliore e leggi il valore del miglioramento: è il calo dell'errore, contato una volta per ogni giorno di training.
La domanda migliore si trova provando tutte le soglie candidate, da sinistra a destra.
Ora la previsione è una scalinata a due gradini.
Quello che abbiamo chiamato miglioramento è il cosiddetto gain di una divisione.
Domanda dopo domanda
Niente impedisce a ogni foglia di porre, a sua volta, la propria domanda.
Dividi di nuovo la foglia di sinistra, dividi di nuovo quella di destra, e la scalinata cresce ogni volta di un gradino: una domanda in più, una foglia in più, un'occasione in più per seguire la curva un po' meglio. Continua così e le domande si concatenano in un albero: una serie di divisioni sì o no che terminano in foglie, e ogni giorno di training finisce esattamente in una di esse.
A ogni passo l'albero è avido: guarda ogni foglia, prova ogni domanda candidata al suo interno e sceglie la singola domanda che migliora di più la stima in quel momento, senza mai chiedersi se una domanda diversa, meno brillante, avrebbe potuto aprire la strada a una coppia di domande migliori più avanti. È più semplice da calcolare che guardare avanti, ed è esattamente ciò che fa la figura qui sotto, foglia dopo foglia.
Ogni nuova domanda può solo far aderire meglio la stima ai giorni di training, quindi l'errore sui dati di training non sale mai. Ma questo non dice nulla sui giorni che l'albero non ha visto, che sono gli unici che ci interessano davvero. Ecco perché abbiamo tenuto da parte i 90 giorni di test: chiediamo allo stesso albero di indovinarli e calcoliamo il loro MSE esattamente allo stesso modo. È l'errore sui dati di test, ed è il punteggio onesto. Man mano che l'albero cresce, la figura li segue entrambi.
Premi "dividi la foglia migliore" qualche volta e guarda quale foglia si accende di volta in volta.
Trascina il cursore "foglie" oltre 30 e osserva, qui sotto, le curve dell'errore sui dati di training e di quello sui dati di test.
Rimescola qualche volta e controlla se la curva dell'errore sui dati di test torna ancora a salire.
L'albero divide sempre la foglia con il numero “+” più grande: il miglioramento che porterebbe la sua domanda candidata migliore.
Man mano che si aggiungono foglie, l'errore sui dati di training può solo scendere: non risale mai.
L'errore sui dati di test scende, tocca il fondo e poi risale: l'albero ha smesso di spiegare il chiosco e ha iniziato a imparare a memoria i singoli giorni.
L'albero che abbiamo appena fatto crescere ha imparato due cose insieme. Le sue prime domande hanno colto come funziona davvero il chiosco: nei giorni freschi si vende poco, in quelli caldi molto. Ogni domanda successiva ha solo ritagliato un gruppo più piccolo di giorni di training, finché una foglia ne conteneva appena una manciata e la sua media si limitava a ripetere quanto avevano venduto. L'errore sui dati di training continuava a scendere, ma l'errore sui dati di test è tornato a salire: l'albero aveva smesso di imparare qualcosa sul chiosco e aveva iniziato a imparare a memoria il suo registro.
Un albero utile deve sapere quando smettere di fare domande, ed è da qui che comincia la seconda parte: quattro regole che gli dicono quando farlo, e uno sguardo all'ordine in cui pone le sue domande.