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.
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.
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.
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:
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.
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.
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.
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.
Di seguito è riportata una spiegazione di alcuni degli iperparametri disponibili per la messa a punto degli alberi con gradiente potenziato in XGBoost:
XGBoost è uno dei tanti algoritmi di boosting open source disponibili. In questa sezione, confronteremo XGBoost con altri tre framework di boosting.
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à.
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.
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.
XGBoost e alberi decisionali potenziati dal gradiente sono utilizzati in una varietà di applicazioni di data science, tra cui:
Abbiamo intervistato 2.000 organizzazioni in merito alle loro iniziative di AI per scoprire cosa funziona, cosa non funziona e come giocare d’anticipo.
IBM Granite è la nostra famiglia di modelli AI aperti, efficienti e affidabili, su misura per le aziende e ottimizzati per scalare le applicazioni di AI. Esplora le opzioni di linguaggio, codice, serie temporali e guardrail.
Accedi al nostro catalogo completo di oltre 100 corsi online acquistando oggi stesso un abbonamento individuale o multiutente che ti consentirà di ampliare le tue competenze su una gamma di prodotti a un prezzo contenuto.
Condotto dai migliori leader di pensiero di IBM, il programma di studi è stato progettato per aiutare i dirigenti aziendali ad acquisire le conoscenze necessarie per dare priorità agli investimenti in AI che possono favorire la crescita.
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.
6 "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.
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com