GBM vs XGBOOST? Differenze chiave?


41

Sto cercando di capire le differenze chiave tra GBM e XGBOOST. Ho provato a cercarlo su Google, ma non sono riuscito a trovare buone risposte che spiegassero le differenze tra i due algoritmi e perché xgboost abbia quasi sempre prestazioni migliori di GBM. Cosa rende XGBOOST così veloce?


XGBoost non è così veloce. Fai riferimento a questo esperimento
agcala

Risposte:


36

Citazione dell'autore di xgboost:

Sia xgboost che gbm seguono il principio dell'aumento del gradiente. Esistono tuttavia differenze nei dettagli di modellazione. In particolare, xgboost ha utilizzato una formalizzazione del modello più regolarizzata per controllare l'eccessivo adattamento, che offre prestazioni migliori.

Abbiamo aggiornato un tutorial completo sull'introduzione al modello, che potresti voler dare un'occhiata. Introduzione agli alberi potenziati

Il nome xgboost, tuttavia, in realtà si riferisce all'obiettivo di ingegneria di spingere il limite delle risorse di calcolo per algoritmi ad albero potenziato. Questo è il motivo per cui molte persone usano xgboost. Per il modello, potrebbe essere più adatto essere chiamato come aumento gradiente regolarizzato.

Modifica: c'è una guida dettagliata di xgboost che mostra più differenze.

Riferimenti

https://www.quora.com/What-is-the-difference-between-the-R-gbm-gradient-boosting-machine-and-xgboost-extreme-gradient-boosting

https://xgboost.readthedocs.io/en/latest/tutorials/model.html


2
Buona risposta. L'OP ha anche chiesto perché xgboost è così veloce. Il motivo è che sebbene non sia possibile paralizzare l'ensemble stesso perché ogni albero dipende dal precedente, è possibile paralizzare l'edificio dei vari nodi entro ciascuna profondità di ciascun albero. Questi tipi di dettagli sono ciò che rende xgboost così veloce.
Ricardo Cruz,

13

Oltre alla risposta data da Icyblade, gli sviluppatori di xgboost hanno apportato una serie di importanti miglioramenti delle prestazioni a diverse parti dell'implementazione che fanno una grande differenza in termini di velocità e utilizzo della memoria:

  1. Uso di matrici sparse con algoritmi sensibili alla sparsità
  2. Strutture dati migliorate per un migliore utilizzo della cache del processore che lo rende più veloce.
  3. Migliore supporto per l'elaborazione multicore che riduce i tempi complessivi di allenamento.

Nella mia esperienza durante l'utilizzo di GBM e xgboost durante l'allenamento di set di dati di grandi dimensioni (oltre 5 milioni di record), ho riscontrato un utilizzo della memoria significativamente ridotto (in R) per lo stesso set di dati e ho trovato più facile utilizzare più core per ridurre i tempi di addestramento.



0

Penso che la differenza tra l'amplificazione del gradiente e Xgboost sia in xgboost che l'algoritmo si concentra sulla potenza computazionale, parallelizzando la formazione dell'albero che si può vedere in questo blog .

L'aumento del gradiente si concentra solo sulla varianza, ma non sul compromesso tra distorsione, in quanto poiché l'aumento di xg può anche concentrarsi sul fattore di regolarizzazione.


-1

L'implementazione di XGBoost è errata. Si è schiantato in silenzio durante l'allenamento su GPU sulla v 082 . È successo anche a me sulla v 0.90 , quindi il problema non è stato risolto finora e la "correzione" fornita in GitHub non ha funzionato per me.

LGBM 2.3.1 funziona come un incantesimo pronto all'uso , anche se l'installazione richiede un po 'più di sforzo. Finora nessun problema di formazione sulla GPU.

A proposito del fatto che XGBoost sia " così veloce ", dovresti dare un'occhiata a questi benchmark .


L'OP non ha chiesto informazioni su xgboost vs lightgbm.
oW_
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.