LightGBM vs XGBoost

25

J'essaie de comprendre ce qui est le mieux (plus précis, surtout dans les problèmes de classification)

J'ai cherché des articles comparant LightGBM et XGBoost mais n'en ai trouvé que deux:

  1. https://medium.com/implodinggradients/benchmarking-lightgbm-how-fast-is-lightgbm-vs-xgboost-15d224568031 - qui ne concerne que la vitesse mais pas la précision.
  2. https://github.com/Microsoft/LightGBM/wiki/Experiments - qui est des auteurs de LightGBM et sans surprise LightGBM y gagne.

Dans mes tests, j'obtiens à peu près la même AUC pour les deux algorithmes, mais LightGBM s'exécute de 2 à 5 fois plus rapidement.

Si le LGBM est si cool, pourquoi n'en entends-je pas tant parler ici et sur Kaggle :)

Sergey Nizhevyasov
la source
Merci, mais LightGBM propose également des packages pour R et Python utilisés par la majorité des kagglers. Je l'utilise avec Python. Sur mes données et recherches sur Internet, le LGBM semble trop parfait: très rapide et pas moins précis. Mais peut-être que je manque quelque chose ici s'il n'est pas encore si largement utilisé :)
Sergey Nizhevyasov

Réponses:

21

LightGBM est une excellente implémentation qui est similaire à XGBoost mais varie de quelques manières spécifiques, en particulier dans la façon dont il crée les arbres.

Il offre différents paramètres mais la plupart d'entre eux sont très similaires à leurs homologues XGBoost.

Si vous utilisez les mêmes paramètres, vous obtenez presque toujours un score très proche. Dans la plupart des cas, la formation sera cependant 2 à 10 fois plus rapide.


Pourquoi plus de gens ne l'utilisent-ils pas alors?

XGBoost existe depuis plus longtemps et est déjà installé sur de nombreuses machines. LightGBM est plutôt nouveau et n'avait pas de wrapper Python au début. La version actuelle est plus facile à installer et à utiliser, donc pas d'obstacles ici.

De nombreux utilisateurs plus avancés sur Kaggle et des sites similaires utilisent déjà LightGBM et pour chaque nouvelle compétition, il bénéficie d'une couverture de plus en plus large. Pourtant, les scripts de démarrage sont souvent basés sur XGBoost car les gens réutilisent simplement leur ancien code et ajustent quelques paramètres. Je suis sûr que cela augmentera une fois qu'il y aura quelques autres tutoriels et guides sur la façon de l'utiliser (la plupart des guides non ScikitLearn se concentrent actuellement sur XGBoost ou les réseaux de neurones).

Frank Herfert
la source
Merci, c'est logique. Peut-être que pour les meilleurs kagglers, la puissance de calcul n'est pas un gros problème et il est plus facile de conserver les scripts.
Sergey Nizhevyasov
10

XGBoost dispose désormais d'une option de regroupement d'histogrammes pour la croissance des arbres similaire à celle utilisée par LightGBM. Il fournit à peu près le même niveau d'accélération et des caractéristiques de précision similaires, bien que les algorithmes ne soient toujours pas exactement les mêmes.

Il y a des graphiques et des tableaux ici montrant comment ils se superposent maintenant. https://github.com/dmlc/xgboost/issues/1950

Pour être juste, LightGBM cite leurs propres tests de performances les montrant toujours en train de dépasser XGBoost (hist), mais pas d'un ordre de grandeur plus. https://github.com/Microsoft/LightGBM/blob/master/docs/Experiments.rst#comparison-experiment

James D
la source