XGBoost La Guida Definitiva (Parte 2)
XGBoost Guida Definitiva (Parte 2)
Implementazione dell’algoritmo XGBoost in Python da zero
Nell’articolo precedente abbiamo discusso dell’algoritmo XGBoost e mostrato la sua implementazione in pseudocodice. In questo articolo andremo ad implementare l’algoritmo in Python da zero.
Il codice fornito è un’implementazione concisa e leggera dell’algoritmo XGBoost (con solamente circa 300 righe di codice), inteso a dimostrare la sua funzionalità principale. Pertanto, non è ottimizzato per la velocità o l’utilizzo della memoria, e non include l’intera gamma di opzioni fornite dalla libreria XGBoost (vedi https://xgboost.readthedocs.io/ per ulteriori dettagli sulle funzionalità della libreria). In particolare:
- Il codice è scritto in puro Python, mentre il nucleo della libreria XGBoost è scritto in C++ (le sue classi Python sono solo sottili wrapper sopra l’implementazione in C++).
- Non include varie ottimizzazioni che consentono a XGBoost di gestire enormi quantità di dati, come l’uso del weighted quantile sketch, l’apprendimento degli alberi out-of-core e l’elaborazione parallela e distribuita dei dati. Queste ottimizzazioni verranno discusse più dettagliatamente nell’articolo successivo della serie.
- L’implementazione attuale supporta solo compiti di regressione e classificazione binaria, mentre la libreria XGBoost supporta anche problemi di classificazione multi-classe e di ranking.
- La nostra implementazione supporta solo un piccolo sottoinsieme degli iperparametri presenti nella libreria XGBoost. In particolare, supporta i seguenti iperparametri:
- n_estimators (default = 100): il numero di alberi di regressione nell’ensemble (che è anche il numero di iterazioni di boosting).
- max_depth (default = 6): la profondità massima (numero di livelli) di ciascun albero.
- learning_rate (default = 0.3): il tasso di riduzione applicato agli alberi.
- reg_lambda (default = 1): termine di regolarizzazione L2 applicato ai pesi delle foglie.
- gamma (default = 0): riduzione minima della perdita richiesta per dividere un determinato nodo.
Per coerenza, ho mantenuto gli stessi nomi e valori predefiniti di questi iperparametri come sono definiti nella libreria XGBoost.
- Crittografia post-quantistica con Python e Linux
- Le complessità dell’implementazione della risoluzione delle entità
- I ricercatori di DeepMind presentano AlphaStar Unplugged un balzo in avanti nell’apprendimento con rinforzo offline su larga scala, padroneggiando il gioco di strategia in tempo reale StarCraft II.