GBM gegen XGBOOST? Hauptunterschiede?


40

Ich versuche, die Hauptunterschiede zwischen GBM und XGBOOST zu verstehen. Ich habe versucht, es zu googeln, konnte aber keine guten Antworten finden, die die Unterschiede zwischen den beiden Algorithmen erklären und erklären, warum xgboost fast immer eine bessere Leistung als GBM erbringt. Was macht XGBOOST so schnell?


XGBoost ist nicht so schnell. Lesen Sie dieses Experiment
agcala

Antworten:


36

Zitat des Autors von xgboost:

Sowohl xgboost als auch gbm folgen dem Prinzip der Gradientenverstärkung. Es gibt jedoch Unterschiede bei den Modellierungsdetails. Insbesondere verwendete xgboost eine stärker regulierte Modellformalisierung, um die Überanpassung zu steuern und so die Leistung zu verbessern.

Wir haben ein umfassendes Tutorial zur Einführung in das Modell aktualisiert, das Sie sich ansehen sollten. Einführung in Boosted Trees

Der Name xgboost bezieht sich jedoch tatsächlich auf das Konstruktionsziel, die Grenze der Berechnungsressourcen für Algorithmen mit verstärktem Baum zu erweitern. Welches ist der Grund, warum viele Menschen xgboost verwenden. Für das Modell ist es möglicherweise geeigneter, als regularisierte Gradientenverstärkung bezeichnet zu werden.

Bearbeiten: Es gibt eine detaillierte Anleitung zu xgboost, die weitere Unterschiede zeigt.

Verweise

https://www.quora.com/Was-ist-der- Unterschied- zwischen-der-R-gbm-gradienten-boosting-maschine-und-xgboost-extreme-gradienten-boosting

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


2
Gute Antwort. Das OP fragte auch, warum xgboost so schnell ist. Der Grund dafür ist, dass das Ensemble selbst nicht paralellisiert werden kann, da jeder Baum vom vorherigen abhängt. Sie können jedoch den Aufbau der verschiedenen Knoten in jeder Tiefe jedes Baums paralellisieren. Diese Art von Details macht xgboost so schnell.
Ricardo Cruz

13

Zusätzlich zu der Antwort von Icyblade haben die Entwickler von xgboost eine Reihe wichtiger Leistungsverbesserungen an verschiedenen Teilen der Implementierung vorgenommen, die einen großen Unterschied in Bezug auf Geschwindigkeit und Speichernutzung bewirken:

  1. Verwendung von Sparse-Matrizen mit sparsity-fähigen Algorithmen
  2. Verbesserte Datenstrukturen für eine bessere Prozessor-Cache-Auslastung, wodurch diese schneller wird.
  3. Bessere Unterstützung für die Multicore-Verarbeitung, wodurch die gesamte Trainingszeit verkürzt wird.

Nach meiner Erfahrung mit GBM und xgboost beim Trainieren großer Datensätze (über 5 Millionen Datensätze) konnte ich die Speichernutzung (in R) für denselben Datensatz erheblich reduzieren und fand es einfacher, mehrere Kerne zu verwenden, um die Trainingszeit zu verkürzen.



0

Ich denke, der Unterschied zwischen der Gradientenverstärkung und dem Xgboost liegt in xgboost. Der Algorithmus konzentriert sich auf die Rechenleistung, indem er die Baumbildung parallelisiert, die man in diesem Blog sehen kann .

Gradient Boosting konzentriert sich nur auf die Varianz, nicht aber auf den Kompromiss zwischen Bias, wobei sich der xg-Boost auch auf den Regularisierungsfaktor konzentrieren kann.


-1

Die Implementierung von XGBoost ist fehlerhaft. Lautlos abgestürzt beim Training auf der GPU in Version 082 . Es ist mir auch in Version 0.90 passiert , daher wurde das Problem bisher nicht behoben, und das in GitHub bereitgestellte "Update" hat bei mir nicht funktioniert.

LGBM 2.3.1 funktioniert wie ein Zauber von der Stange , obwohl die Installation etwas mehr Aufwand erfordert. Bisher keine Probleme beim GPU-Training.

Über XGBoost „ zu sein , so schnell “, sollten Sie einen Blick auf, diese Benchmarks .


Das OP fragte nicht nach xgboost vs lightgbm.
oW_
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.