GBM czy XGBOOST? Kluczowe różnice?

40

Próbuję zrozumieć kluczowe różnice między GBM a XGBOOST. Próbowałem google go, ale nie znalazłem dobrych odpowiedzi wyjaśniających różnice między dwoma algorytmami i dlaczego xgboost prawie zawsze działa lepiej niż GBM. Co sprawia, że ​​XGBOOST jest tak szybki?

Mężczyzna
źródło
XGBoost nie jest tak szybki. Zobacz ten eksperyment
agcala,

Odpowiedzi:

36

Cytat autora xgboost:

Zarówno xgboost, jak i gbm są zgodne z zasadą zwiększania gradientu. Istnieją jednak różnice w szczegółach modelowania. W szczególności xgboost zastosował bardziej uregulowaną formalizację modelu, aby kontrolować nadmierne dopasowanie, co daje mu lepszą wydajność.

Zaktualizowaliśmy obszerny samouczek dotyczący wprowadzenia do modelu, który możesz chcieć obejrzeć. Wprowadzenie do drzew wspomaganych

Jednak nazwa xgboost faktycznie odnosi się do celu inżynieryjnego, jakim jest przekroczenie limitu zasobów obliczeniowych dla algorytmów wzmocnionego drzewa. Z tego powodu wiele osób korzysta z xgboost. W przypadku modelu bardziej odpowiednie może być nazywanie go jako regularne zwiększanie gradientu.

Edycja: Istnieje szczegółowy przewodnik po xgboost, który pokazuje więcej różnic.

Referencje

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

Lodowate Ostrze
źródło
2
Dobra odpowiedź. OP zapytał również, dlaczego xgboost jest tak szybki. Powodem jest to, że chociaż nie można sparaliżować samego zestawu, ponieważ każde drzewo jest zależne od poprzedniego, można sparaliżować budowę kilku węzłów w obrębie każdej głębokości każdego drzewa. Tego rodzaju szczegóły sprawiają, że xgboost jest tak szybki.
Ricardo Cruz
13

Oprócz odpowiedzi udzielonej przez Icyblade, programiści xgboost wprowadzili szereg ważnych ulepszeń wydajności w różnych częściach implementacji, które mają duży wpływ na szybkość i wykorzystanie pamięci:

  1. Zastosowanie rzadkich matryc z algorytmami uwzględniającymi rzadkość
  2. Ulepszone struktury danych dla lepszego wykorzystania pamięci podręcznej procesora, dzięki czemu jest szybszy.
  3. Lepsza obsługa przetwarzania wielordzeniowego, co skraca ogólny czas szkolenia.

Z mojego doświadczenia podczas używania GBM i xgboost podczas szkolenia dużych zestawów danych (5 milionów + rekordów), doświadczyłem znacznie zmniejszonego wykorzystania pamięci (w R) dla tego samego zestawu danych i odkryłem, że łatwiej jest używać wielu rdzeni, aby skrócić czas szkolenia.

Sandeep S. Sandhu
źródło
10

Jedną bardzo ważną różnicą jest xgboostimplementacja DART, regularyzacji porzucania drzew regresji .

Referencje

Rashmi, KV i Gilad-Bachrach, R. (2015). Dart: Haki spotykają wiele drzew regresji addytywnej. nadruk arXiv arXiv: 1505.01866.

horaceT
źródło
1
Dart jest również zaimplementowany w LGBM w zestawie xgboost_dart_mode .
agcala
0

Myślę, że różnica między zwiększaniem gradientu a Xgboost polega na tym, że algorytm skupia się na mocy obliczeniowej, równolegle do tworzenia drzewa, które można zobaczyć na tym blogu .

Zwiększanie gradientu koncentruje się tylko na wariancji, ale nie na wymianie między stronniczością, gdzie jako zwiększenie xg może również koncentrować się na współczynniku regularyzacji.

purna15111
źródło
-1

Implementacja XGBoost jest błędna. Awaria po cichu podczas treningu na GPU w wersji 082 . Zdarzyło mi się to również w wersji 0.90 , więc problem nie został do tej pory rozwiązany, a „poprawka” podana w GitHub nie działała dla mnie.

LGBM 2.3.1 działa jak amulet po wyjęciu z pudełka, choć jego instalacja wymaga nieco więcej wysiłku. Jak dotąd nie ma problemów ze szkoleniem na GPU.

O XGBoost bycia „ tak szybko ”, należy zapoznać się z tych wskaźników .

agcala
źródło
OP nie pytał o xgboost vs. lightgbm.
oW_