My IBM Accedi Iscriviti

Che cos'è XGBoost?

9 maggio 2024

Autori

Eda Kavlakoglu

Program Manager

Erika Russi

Data Scientist

IBM

Che cos'è XGBoost?

XGBoost (eXtreme Gradient Boosting) è una libreria di apprendimento automatico distribuita e open source che utilizza alberi decisionali potenziati dal gradiente, un algoritmo di potenziamento dell'apprendimento supervisionato che utilizza la discesa del gradiente. È noto per la sua velocità, efficienza e capacità di scalare in modo efficace con set di dati di grandi dimensioni.

Sviluppato da Tianqi Chen dell'Università di Washington, XGBoost è un'implementazione avanzata del boosting del gradiente con lo stesso framework generale; cioè, combina alberi di weak learner con strong learner sommando i residui. La libreria è disponibile per C++, Python, R, Java, Scala e Julia1.

Alberi decisionali vs boosting

Gli alberi decisionali sono utilizzati per compiti di classificazione o regressione nell'apprendimento automatico. Usano una struttura ad albero gerarchica in cui un nodo interno rappresenta una funzione, il ramo rappresenta una regola decisionale­ e ogni nodo foglia rappresenta il risultato del set di dati.

Poiché i decision tree sono inclini all'overfitting, i metodi d'insieme, come il boosting, possono essere spesso utilizzati per creare modelli più robusti. Il boosting combina più alberi deboli individuali, ovvero modelli che hanno prestazioni leggermente migliori rispetto al caso random, per formare uno strong learner. Ogni weak learner viene addestrato in sequenza per correggere gli errori commessi dai modelli precedenti. Dopo centinaia di iterazioni, i weak learner vengono trasformati in strong learner.

Le foreste casuali e gli algoritmi di boosting sono entrambe tecniche di apprendimento d'insieme popolari che utilizzano alberi di learner individuali per migliorare le prestazioni predittive. Le foreste casuali si basano sul concetto di bagging (aggregazione bootstrap) e addestrano ogni albero in modo indipendente per combinare le proprie previsioni, mentre gli algoritmi di boosting utilizzano un approccio additivo in cui i weak learner vengono addestrati in sequenza a correggere gli errori dei modelli precedenti.

Alberi decisionali potenziati dal gradiente

I decision tree potenziati dal gradiente sono un tipo di algoritmo di boosting che utilizza la discesa del gradiente. Come altre metodologie di boosting, il boosting del gradiente inizia con un weak learner per fare previsioni. Il primo decision tree nel boosting del gradiente è chiamato base learner. Successivamente, i nuovi alberi vengono creati in modo additivo in base agli errori del base learner. L'algoritmo calcola quindi i residui delle previsioni di ciascun albero per stabilire quanto le previsioni del modello fossero lontane dalla realtà. I residui sono la differenza tra i valori previsti e quelli effettivi del modello. I residui vengono quindi aggregati per assegnare un punteggio al modello con una funzione di perdita.

Nell'apprendimento automatico, le funzioni di perdita vengono utilizzate per misurare le prestazioni di un modello. Il gradiente negli alberi decisionali con boosting del gradiente si riferisce alla discesa del gradiente. La discesa del gradiente viene utilizzata per ridurre al minimo la perdita (cioè per migliorare le prestazioni del modello) quando addestriamo nuovi modelli. La discesa del gradiente è un algoritmo di ottimizzazione comune utilizzato per ridurre al minimo la funzione di perdita nei problemi di apprendimento automatico. Alcuni esempi di funzioni di perdita includono l'errore quadratico medio o l'errore medio assoluto per problemi di regressione, la perdita di entropia incrociata per problemi di classificazione o le funzioni di perdita personalizzate possono essere le sviluppate per un caso d'uso e un set di dati specifici.

Funzioni di XGBoost

Di seguito vengono illustrate alcune delle funzioni di XGBoost in Python che lo distinguono rispetto al normale pacchetto di boosting del gradiente in scikit-learn2:

  • Calcolo parallelo e distribuito: la libreria memorizza i dati in unità di memoria chiamate blocchi. Blocchi separati possono essere distribuiti tra le macchine o memorizzati su una memoria esterna utilizzando l'elaborazione out-of-core. XGBoost consente inoltre casi d'uso più avanzati, come l'addestramento distribuito su un cluster di computer per velocizzare il calcolo. XGBoost può anche essere implementato nella sua modalità distribuita utilizzando strumenti come Apache Spark, Dask o Kubernetes.
  • Algoritmo di precaricamento con riconoscimento della cache: XGBoost utilizza un algoritmo di precaricamento con riconoscimento della cache che aiuta a ridurre il tempo di esecuzione per set di dati di grandi dimensioni. La libreria può essere eseguita più di dieci volte più velocemente rispetto ad altri framework esistenti su una singola macchina. Grazie alla sua impressionante velocità, XGBoost può elaborare miliardi di esempi utilizzando meno risorse, rendendolo un sistema di boosting ad albero scalabile.
  • Regolarizzazione incorporata: XGBoost include la regolarizzazione come parte dell'obiettivo di apprendimento, a differenza del normale potenziamento del gradiente. I dati possono essere regolarizzati anche attraverso la messa a punto degli iperparametri. L'utilizzo della regolarizzazione integrata di XGBoost consente inoltre alla libreria di fornire risultati migliori rispetto al normale pacchetto di boosting del gradiente scikit-learn.
  • Gestione dei valori mancanti: XGBoost utilizza un algoritmo che riconosce la sparsità per i dati sparsi. Quando manca un valore nel set di dati, il punto dati viene classificato nella direzione predefinita e l'algoritmo apprende la direzione migliore per gestire i valori mancanti.
Design 3D di palline che rotolano su una pista

Le ultime notizie e insight sull'AI 


Scopri notizie e insight selezionati da esperti in materia di AI, cloud e molto altro nella newsletter settimanale Think. 

Come funziona XGBoost

In questa sezione, esamineremo come utilizzare il pacchetto XGBoost, come selezionare gli iperparametri per il booster dell'albero XGBoost, come XGBoost si confronta con altre implementazioni di boosting e alcuni dei suoi casi d'uso.

Suddivisione dei dati e conversione in formato DMatrix

Supponendo che tu abbia già eseguito un'analisi esplorativa dei dati, continua a suddividere i tuoi dati tra un set di dati di addestramento e un set di dati di test. Successivamente, converti i tuoi dati nel formato DMatrix previsto da XGBoost3. DMatrix è la struttura dati interna di XGBoost ottimizzata per l'efficienza della memoria e la velocità di addestramento4.

Genera e valuta il modello

Crea quindi un'istanza di un modello XGBoost e, a seconda del caso d'uso, seleziona la funzione oggettiva che desideri utilizzare attraverso l'iperparametro "oggetto". Ad esempio, per un'attività di classificazione multiclasse, dovresti impostare l'obiettivo su "multi:softmax"5. In alternativa, se hai un problema di classificazione binaria, puoi utilizzare l'obiettivo di regressione logistica "binary:logistic". Ora puoi utilizzare il tuo set di addestramento per addestrare il modello e prevedere le classificazioni dei dati messi da parte come set di test. Valuta le prestazioni del modello confrontando i valori previsti con i valori effettivi del set di test. Puoi utilizzare metriche come accuratezza, precisione, richiamo o punteggio f-1 per valutare il tuo modello. Potresti anche visualizzare i tuoi veri positivi, veri negativi, falsi positivi e falsi negativi utilizzando una matrice di confusione.

Messa a punto degli iperparametri

Successivamente, puoi eseguire l'iterazione di una combinazione di iperparametri per migliorare le prestazioni del modello. La messa a punto degli iperparametri è il processo di ottimizzazione per gli iperparametri di un algoritmo di apprendimento automatico. I migliori iperparametri si trovano utilizzando metodi di ricerca a griglia e convalida incrociata che iterano su un dizionario di combinazioni iperparametri possibili.

Iperparametri selezionati per alberi con gradiente potenziato in XGBoost

Di seguito è riportata una spiegazione di alcuni degli iperparametri disponibili per la messa a punto degli alberi con gradiente potenziato in XGBoost:

  • Il tasso di apprendimento (noto anche come "step size" o "shrinkage") è l'iperparametro più importante del boosting del gradiente. Nella libreria XGBoost, è noto come "eta", dovrebbe essere un numero compreso tra 0 e 1 e il valore predefinito è 0,36. Il tasso di apprendimento determina la velocità con cui l'algoritmo di boosting apprende da ogni iterazione. Un valore più basso di eta significa un apprendimento più lento, poiché riduce il contributo di ogni albero d'insieme, contribuendo così a prevenire un adattamento eccessivo. Al contrario, un valore più elevato di eta accelera l'apprendimento, ma può portare a un overfitting se non viene regolato con attenzione.
  • L'iperparametro n_estimators specifica il numero di alberi da costruire nell'insieme. Ogni round di boosting aggiunge un nuovo albero all'insieme e il modello impara lentamente a correggere gli errori commessi dagli alberi precedenti. N_estimators dirige la complessità del modello e influenza sia il tempo di addestramento, sia la capacità del modello di generalizzare a dati invisibili. L'aumento del valore di n_estimators in genere aumenta la complessità del modello, in quanto consente al modello di acquisire modelli più complessi nei dati. Tuttavia, l'aggiunta di troppi alberi può portare a un overfitting. In generale, man mano che n_estimators aumenta, il tasso di apprendimento dovrebbe diminuire.
  • La gamma (noto anche come moltiplicatore di Lagrange o parametro di riduzione minima della perdita) controlla la quantità minima di riduzione della perdita richiesta per effettuare un'ulteriore divisione su un nodo della foglia dell'albero. Un valore più basso significa che XGBoost si ferma prima ma potrebbe non trovare la soluzione migliore; mentre un valore più alto significa che XGBoost continua ad addestrarsi più a lungo, potenzialmente trovando soluzioni migliori, ma con un rischio maggiore di overfitting. Non esiste un limite massimo per la gamma. Il valore predefinito in XGBoost è 0 e qualsiasi valore superiore a 10 è considerato alto.
  • Max_depth rappresenta la profondità con cui ogni albero decisionale di boosting può crescere durante l'addestramento. La profondità di un albero si riferisce al numero di livelli o divisioni che ha dal nodo radice ai nodi della foglia. Aumentando questo valore il modello diventerà più complesso e più soggetto a overfitting. In XGBoost, il max_depth predefinito è 6, il che significa che ogni albero nel modello può crescere fino a una profondità massima di 6 livelli.
Mixture of Experts | Podcast

Decoding AI: Weekly News Roundup

Unisciti al nostro gruppo di livello mondiale di ingegneri, ricercatori, leader di prodotto e molti altri mentre si fanno strada nell'enorme quantità di informazioni sull'AI per darti le ultime notizie e gli ultimi insight sull'argomento.

Confronto tra XGBoost e altri algoritmi di boosting

XGBoost è uno dei tanti algoritmi di boosting open source disponibili. In questa sezione, confronteremo XGBoost con altri tre framework di boosting.

XGBoost vs AdaBoost

AdaBoost è uno dei primi algoritmi di boosting inventati da Yoav Freund e Robert Schapire nel 19957. In AdaBoost, viene data maggiore enfasi alle previsioni non corrette attraverso un sistema di valutazioni che influisce in modo più significativo sui punti dati più difficili da prevedere. Innanzitutto, a ogni punto dati nel set di dati viene assegnato un peso specifico. Poiché i weak learner prevedono correttamente un esempio, il peso dell'esempio si riduce. Ma se i learner sbagliano un esempio, il peso di quel punto dati aumenta. Man mano che vengono creati nuovi alberi, il loro peso si basa sulle classificazioni errate degli alberi di apprendimento precedenti. Con l'aumentare del numero di learner, i campioni facili da prevedere verranno utilizzati meno per i future learner, mentre i dati più difficili da prevedere verranno ponderati in modo più evidente. Gradient Boosting e XGBoost tendono ad essere alternative più forti ad AdaBoost grazie alla loro precisione e velocità.

XGBoost vs CatBoost

CatBoost è un altro framework di boosting del gradiente. Sviluppato da Yandex nel 2017, è specializzato nella gestione di funzioni categoriche senza alcuna necessità di pre-elaborazione e generalmente funziona bene senza la necessità di eseguire un'ampia regolazione degli iperparametri8. Come XGBoost, CatBoost ha integrato il supporto per la gestione dei dati mancanti. CatBoost è particolarmente utile per i set di dati con molte funzioni di categorie. Secondo Yandex, il framework viene utilizzato per la ricerca, i sistemi di raccomandazione, gli assistenti personali, le auto a guida autonoma, la previsione del tempo e altri compiti.

XGBoost vs LightGBM

LightGBM (Light Gradient Boosting Machine) è l'ultimo algoritmo di aumento del gradiente che esamineremo. LightGBM è stato sviluppato da Microsoft e rilasciato per la prima volta nel 20169. Laddove la maggior parte degli algoritmi di apprendimento degli alberi decisionali fa crescere gli alberi in profondità, LightGBM utilizza una strategia di crescita degli alberi per foglie10. Come XGBoost, LightGBM mostra velocità e precisione di addestramento elevate dei modelli e si comporta bene con set di dati di grandi dimensioni.

Applicazioni di XGBoost

XGBoost e alberi decisionali potenziati dal gradiente sono utilizzati in una varietà di applicazioni di data science, tra cui:

  • Imparare a classificare: uno dei casi d'uso più popolari per l'algoritmo XGBoost è quello di un classificatore. Nel recupero delle informazioni, l'obiettivo di imparare a classificare è quello di fornire agli utenti contenuti ordinati per pertinenza. In XGBoost, XGBRanker si basa sull'algoritmo LambdaMART11.
  • Previsione del click through rate sugli annunci pubblicitari: i ricercatori hanno utilizzato un modello addestrato su XGBoost per determinare la frequenza con cui gli annunci online erano stati cliccati in 10 giorni di clic sui dati. L'obiettivo della ricerca era misurare l'efficacia degli annunci online e individuare quali annunci funzionassero bene12.
  • Previsione delle vendite in negozio: XGBoost può essere utilizzato per la modellazione predittiva, come dimostrato in questo documento in cui le vendite di 45 negozi Walmart sono state previste utilizzando un modello XGBoost13.
  • Classificazione del malware: utilizzando un classificatore XGBoost, gli ingegneri dell'Università tecnica di Košice sono stati in grado di classificare il malware in modo accurato, come mostrato nel loro articolo14.
  • Competizioni Kaggle: XGBoost è stato un popolare algoritmo vincente nelle competizioni Kaggle, come indicato nella pagina DMLC (Distributed (Deep) Machine Learning Community) che contiene un elenco dei recenti vincitori di competizioni Kaggle che hanno utilizzato XGBoost per i progetti con cui hanno partecipato15
Soluzioni correlate

Soluzioni correlate

IBM watsonx.ai

Addestra, convalida, adatta e implementa le funzionalità di AI generativa, foundation model e machine learning con IBM watsonx.ai, uno studio aziendale di nuova generazione per builder AI. Crea applicazioni AI in tempi ridotti e una minima quantità di dati.

Scopri watsonx.ai
Soluzioni di intelligenza artificiale

Metti l'AI al servizio della tua azienda con l'esperienza leader di settore e il portfolio di soluzioni di IBM nel campo dell'AI.

Esplora le soluzioni AI
Consulenza e servizi sull'AI

Reinventa i flussi di lavoro e le operazioni critiche aggiungendo l'AI per massimizzare le esperienze, il processo decisionale in tempo reale e il valore di business.

Esplora i servizi AI
Fai il passo successivo

Ottieni l'accesso completo a funzionalità che coprono l'intero ciclo di vita dello sviluppo dell'AI. Crea soluzioni AI all'avanguardia con interfacce intuitive, workflow e accesso alle API e agli SDK standard di settore.

Esplora watsonx.ai Prenota una demo live
Note a piè di pagina

1 "Scalable and Flexible Gradient Boosting", https://xgboost.ai/.

2 Tianqi Chen and Carlos Guestrin, "XGBoost: A Scalable Tree Boosting System," University of Washington, 10 June 2016, https://arxiv.org/pdf/1603.02754.

3 "XGBoost Python Package Introduction, Data Interface", https://xgboost.readthedocs.io/en/stable/python/python_intro.html#data-interface.

4 "XGBoost API Reference, Core Data Structure," https://xgboost.readthedocs.io/en/stable/python/python_api.html#module-xgboost.core.

5 "XGBoost Parameters, Learning Task Parameters", https://xgboost.readthedocs.io/en/stable/parameter.html#learning-task-parameters.

"XGBoost Parameters for Tree Booster", https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster.

7 Yoav Freund and Robert E. Schapire, "A decision-theoretic generalization of on-line learning and an application to boosting," Journal of Computer and System Sciences, Vol. 55, pp. 119–139, agosto 1997.

8 "CatBoost is a high-performance open source library for gradient boosting on decision trees," https://catboost.ai/.

9 Qi Meng, Guolin Ke, Taifeng Wang, Wei Chen, Qiwei Ye, Zhi-Ming Ma e Tie-Yan Liu, "A Communication-Efficient Parallel Algorithm for Decision Tree", Peking University, Microsoft Research e Chinese Academy of Mathematics and Systems Science, 4 novembre 2016, https://arxiv.org/pdf/1611.01276.

10 "LightGBM Features, Leaf-wise (Best-first) Tree Growth", https://lightgbm.readthedocs.io/en/latest/Features.html#leaf-wise-best-first-tree-growth.

11 "XGBoost Tutorials, Learning to Rank Overview", https://xgboost.readthedocs.io/en/latest/tutorials/learning_to_rank.html#overview.

12 AlAli Moneera, AlQahtani Maram, AlJuried Azizah, Taghareed AlOnizan, Dalia Alboqaytah, Nida Aslam e Irfan Ullah Khan, "Click through Rate Effectiveness Prediction on Mobile Ads Using Extreme Gradient Boosting", College of Computer Science and Information Technology, Imam Abdulrahman bin Faisal University, 12 settembre 2020, https://www.techscience.com/cmc/v66n2/40673/html.

13 Yetunde Faith Akande, Joyce Idowu, Abhavya Gautam, Sanjay Misra, Oluwatobi Noah Akande e Ranjan Kumar Behera, "Application of Xgboost Algorithm for Sales Forecasting Using Walmart Dataset", Landmark University, Ladoke Akintola University of Technology, Brandan University, Covenant University e XIM University, giugno 2022, https://www.researchgate.net/publication/361549465_Application_of_XGBoost_Algorithm_for_Sales_Forecasting_Using_Walmart_set_di_dati.

14 Jakub Palša, Norbert Ádám, Ján Hurtuk, Eva Chovancová, Branislav Madoš, Martin Chovanec e Stanislav Kocan, "MLMD—A Malware-Detecting Antivirus Tool Based on the XGBoost Machine Learning Algorithm", MDPI.com Journal of Applied Sciences, Vol 12, 6672, 1 luglio 2022, https://www.mdpi.com/2076-3417/12/13/6672.

15 "Distributed (Deep) Machine Learning Community XGBoost Machine Learning Challenge Winning Solutions," https://github.com/dmlc/xgboost/tree/master/demo#machine-learning-challenge-winning-solutions.