GBM czy XGBOOST? Kluczowe różnice?


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


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.



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.


-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 .


OP nie pytał o xgboost vs. lightgbm.
oW_
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.