Fondamenti di IA

Che cos’è il Gradient Boosting?

mm
Aggiungi Unite.AI alle tue fonti preferite su Google

Un tipo comune di modello di apprendimento automatico che si è rivelato estremamente utile nelle competizioni di data science è il modello di boosting dei gradienti. Il boosting dei gradienti è fondamentalmente il processo di conversione di modelli di apprendimento deboli in modelli di apprendimento forti. Tuttavia, come viene esattamente realizzato? Analizziamo più da vicino gli algoritmi di boosting dei gradienti e capiamo meglio come un modello di boosting dei gradienti converta gli apprendenti deboli in apprendenti forti.

Definizione del Gradient Boosting

Questo articolo ha lo scopo di fornirti una buona intuizione di cosa sia il gradient boosting, senza troppe spiegazioni delle matematiche che stanno alla base degli algoritmi. Una volta che avrai una buona comprensione di come funziona il gradient boosting a livello alto, sarai invitato a scavare più a fondo e esplorare la matematica che lo rende possibile.

Cominciamo definendo cosa significhi “boostare” un apprendente. Gli apprendenti deboli vengono convertiti in apprendenti forti regolando le proprietà del modello di apprendimento. Quale algoritmo di apprendimento viene esattamente boostato?

I modelli di boosting funzionano aumentando un altro modello di apprendimento comune, un albero di decisione.

Un modello di albero di decisione funziona dividendo un set di dati in porzioni sempre più piccole, e una volta che le sottoporzioni non possono essere ulteriormente divise, il risultato è un albero con nodi e foglie. I nodi in un albero di decisione sono dove vengono prese decisioni sui punti di dati utilizzando diversi criteri di filtro. Le foglie in un albero di decisione sono i punti di dati che sono stati classificati. Gli algoritmi di albero di decisione possono gestire sia dati numerici che categoriali, e le divisioni nell’albero sono basate su variabili/characteristiche specifiche.

Illustrazione del modo in cui vengono addestrati i modelli di boosting.
Foto: SeattleDataBuy via Wikimedia Commons, CC 4.0 (https://commons.wikimedia.org/wiki/File:Boosting.png)

Un tipo di algoritmo di boosting è l’algoritmo AdaBoost. Gli algoritmi AdaBoost iniziano addestrando un modello di albero di decisione e assegnando un peso uguale a ogni osservazione. Dopo che il primo albero è stato valutato per l’accuratezza, i pesi per le diverse osservazioni vengono regolati. Le osservazioni che sono state facili da classificare hanno i loro pesi abbassati, mentre le osservazioni che sono state difficili da classificare hanno i loro pesi aumentati. Un secondo albero viene creato utilizzando questi pesi regolati, con l’obiettivo che le previsioni del secondo albero siano più accurate delle previsioni del primo albero.

Il modello ora consiste nelle previsioni dell’albero originale e del nuovo albero (o Albero 1 + Albero 2). L’accuratezza della classificazione viene valutata nuovamente in base al nuovo modello. Un terzo albero viene creato in base all’errore calcolato per il modello, e i pesi vengono nuovamente regolati. Questo processo continua per un numero prestabilito di iterazioni, e il modello finale è un modello ensemble che utilizza la somma pesata delle previsioni fatte da tutti gli alberi precedentemente costruiti.

Il processo descritto sopra utilizza alberi di decisione e i predittori di base, tuttavia un approccio di boosting può essere eseguito con una vasta gamma di modelli come i molti classificatori e regressori standard. I concetti chiave da capire sono che i predittori successivi imparano dagli errori commessi dai precedenti e che i predittori vengono creati in sequenza.

Il principale vantaggio degli algoritmi di boosting è che richiedono meno tempo per trovare le previsioni attuali rispetto ad altri modelli di apprendimento automatico. Tuttavia, è necessario utilizzare cautela quando si utilizzano algoritmi di boosting, poiché sono inclini al sovrapprendimento.

Gradient Boosting

Ora esamineremo uno degli algoritmi di boosting più comuni. I modelli di Gradient Boosting (GBM) sono noti per la loro alta accuratezza e ampliano i principi generali utilizzati in AdaBoost.

La principale differenza tra un modello di Gradient Boosting e AdaBoost è che i GBM utilizzano un metodo diverso per calcolare quali apprendenti stanno identificando male i punti di dati. AdaBoost calcola dove un modello sta sottovalutando esaminando i punti di dati che sono pesantemente ponderati. Nel frattempo, i GBM utilizzano gradienti per determinare l’accuratezza degli apprendenti, applicando una funzione di perdita a un modello. Le funzioni di perdita sono un modo per misurare l’accuratezza dell’adattamento di un modello al set di dati, calcolando un errore e ottimizzando il modello per ridurre quell’errore. I GBM consentono all’utente di ottimizzare una funzione di perdita specificata in base al proprio obiettivo desiderato.

Prendendo la funzione di perdita più comune – Errore Quadratico Medio (MSE) – come esempio, la discesa del gradiente viene utilizzata per aggiornare le previsioni in base a una velocità di apprendimento predefinita, con l’obiettivo di trovare i valori in cui la perdita è minima.

Per renderlo più chiaro:

Nuove previsioni del modello = variabili di output – vecchie previsioni imperfette.

In un senso più statistico, i GBM mirano a trovare modelli rilevanti nei residui di un modello, regolando il modello per adattarlo al modello e portare i residui il più vicino possibile a zero. Se si eseguisse una regressione sulle previsioni del modello, i residui sarebbero distribuiti intorno a 0 (adattamento perfetto), e i GBM stanno trovando modelli all’interno dei residui e aggiornando il modello intorno a questi modelli.

In altre parole, le previsioni vengono aggiornate in modo che la somma di tutti i residui sia il più vicino possibile a 0, il che significa che i valori previsti saranno molto vicini ai valori reali.

Nota che una vasta gamma di altre funzioni di perdita (come la perdita logaritmica) può essere utilizzata da un GBM. L’MSE è stato selezionato sopra per semplicità.

Varietà di Modelli di Gradient Boosting

I modelli di Gradient Boosting sono algoritmi avidi che sono inclini al sovrapprendimento su un set di dati. Ciò può essere protetto con diversi metodi che possono migliorare le prestazioni di un GBM.

I GBM possono essere regolati con quattro metodi diversi: Shrinkage, Vincoli dell’albero, Boosting del gradiente stocastico e Apprendimento penalizzato.

Shrinkage

Come menzionato in precedenza, nei GBM le previsioni vengono sommate insieme in modo sequenziale. Nello “Shrinkage”, le aggiunte di ogni albero alla somma totale vengono regolate. Vengono applicati pesi che rallentano la velocità di apprendimento dell’algoritmo, necessitando che vengano aggiunti più alberi al modello, il che di solito migliora la robustezza e le prestazioni del modello. Il compromesso è che il modello richiede più tempo per l’addestramento.

Vincoli dell’albero

Limitare l’albero con vari accorgimenti come aggiungere più profondità all’albero o aumentare il numero di nodi o foglie nell’albero può rendere più difficile per il modello sovrapprendere. Imporre un vincolo sul numero minimo di osservazioni per divisione ha un effetto simile. Ancora una volta, il compromesso è che il modello richiede più tempo per l’addestramento.

Campionamento casuale

Gli apprendenti individuali possono essere creati attraverso un processo stocastico, basato su sottocampioni casuali del set di dati di addestramento. Ciò ha l’effetto di ridurre le correlazioni tra gli alberi, il che protegge contro il sovrapprendimento. Il set di dati può essere sottocampionato prima della creazione degli alberi o prima della considerazione di una divisione nell’albero.

Apprendimento penalizzato

Oltre a limitare il modello attraverso la limitazione della struttura dell’albero, è possibile utilizzare un albero di regressione. Gli alberi di regressione hanno valori numerici allegati a ogni foglia, e questi funzionano come pesi e possono essere regolati con funzioni di regolarizzazione comuni come la regolarizzazione L1 e L2.

Blogger e programmatore con specializzazioni in Machine Learning e Deep Learning argomenti. Daniel spera di aiutare gli altri a utilizzare il potere dell'AI per il bene sociale.