GBM vs XGBOOST? Différences clés?


41

J'essaie de comprendre les principales différences entre GBM et XGBOOST. J'ai essayé de le rechercher sur Google, mais je n'ai trouvé aucune bonne réponse expliquant les différences entre les deux algorithmes et expliquant pourquoi xgboost fonctionne presque toujours mieux que GBM. Qu'est-ce qui rend XGBOOST si rapide?


XGBoost n’est pas si rapide. Reportez-vous à cette expérience
agcala

Réponses:


36

Citation de l'auteur de xgboost:

Xgboost et gbm suivent tous deux le principe du boosting de gradient. Il y a cependant la différence dans les détails de la modélisation. Plus précisément, xgboost a utilisé une formalisation de modèle plus régularisée pour contrôler le sur-ajustement, ce qui lui confère de meilleures performances.

Nous avons mis à jour un didacticiel complet sur l’introduction au modèle, que vous voudrez peut-être consulter. Introduction aux arbres boostés

Cependant, le nom xgboost fait référence à l'objectif technique consistant à repousser les limites des ressources de calcul pour les algorithmes d'arborescence optimisés. C'est pourquoi beaucoup de gens utilisent xgboost. Pour le modèle, il pourrait être plus approprié de s’appeler boosting de gradient régularisé.

Edit: Il existe un guide détaillé de xgboost qui montre plus de différences.

Les références

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
Bonne réponse. Le PO a également demandé pourquoi xgboost est si rapide. La raison en est qu’il n’est pas possible de paraléliser l’ensemble lui-même car chaque arbre est dépendant du précédent, vous pouvez paralléliser la construction de plusieurs nœuds dans chaque profondeur de chaque arbre. C'est ce genre de détails qui fait que xgboost est si rapide.
Ricardo Cruz

13

En plus de la réponse donnée par Icyblade, les développeurs de xgboost ont apporté un certain nombre d’améliorations importantes des performances de différentes parties de l’implémentation, qui améliorent considérablement la vitesse et l’utilisation de la mémoire:

  1. Utilisation de matrices creuses avec des algorithmes prenant en compte la parcimonie
  2. Structures de données améliorées pour une meilleure utilisation du cache du processeur, ce qui le rend plus rapide.
  3. Meilleure prise en charge du traitement multicœur, ce qui réduit le temps d’entraînement.

D'après mon expérience dans l'utilisation de GBM et de xgboost lors de la formation de grands ensembles de données (plus de 5 millions d'enregistrements), l'utilisation de la mémoire (en R) a été considérablement réduite pour le même ensemble de données et il est plus facile d'utiliser plusieurs cœurs pour réduire le temps de formation.



0

Je pense que la différence entre l'amplification progressive et le Xgboost réside dans xgboost. L'algorithme se concentre sur la puissance de calcul, en parallélisant la formation d'arborescence que l'on peut voir dans ce blog .

L'amélioration progressive ne met l'accent que sur la variance, mais pas sur le compromis entre les biais, lorsque l'augmentation xg peut également se concentrer sur le facteur de régularisation.


-1

L'implémentation de XGBoost est boguée. Crashed silencieusement lors de l’entraînement sur GPU sous la v 082 . Cela m'est arrivé également sur la version 0.90 , le problème n'a donc pas été résolu jusqu'à présent et le "correctif" fourni dans GitHub ne fonctionnait pas pour moi.

LGBM 2.3.1 fonctionne à merveille, bien que son installation demande un peu plus d'effort. Jusqu'à présent, aucun problème de formation sur GPU.

À propos de XGBoost étant " si rapide ", vous devriez jeter un oeil à ces points de repère .


Le PO n'a pas posé de question sur xgboost vs lightgbm.
oW_
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.