LightGBM vs XGBoost

25

Próbuję zrozumieć, co jest lepsze (dokładniejsze, szczególnie w przypadku problemów z klasyfikacją)

Szukałem artykułów porównujących LightGBM i XGBoost, ale znalazłem tylko dwa:

  1. https://medium.com/implodinggradients/benchmarking-lightgbm-how-fast-is-lightgbm-vs-xgboost-15d224568031 - co dotyczy tylko szybkości, ale nie dokładności.
  2. https://github.com/Microsoft/LightGBM/wiki/Experiments - który pochodzi od autorów LightGBM i nic dziwnego, że LightGBM tam wygrywa.

W moich testach mam prawie taki sam AUC dla obu algorytmów, ale LightGBM działa od 2 do 5 razy szybciej.

Jeśli LGBM jest tak fajny, dlaczego nie słyszę o nim tyle tutaj i na Kaggle :)

Sergey Nizhevyasov
źródło
Dzięki, ale LightGBM ma również pakiety dla R i Pythona używane przez większość kagglerów. Używam go z Pythonem. Według moich badań danych i Internetu LGBM wydaje się zbyt doskonały: bardzo szybki i nie mniej dokładny. Ale może coś mi brakuje, jeśli nie jest jeszcze tak szeroko stosowane :)
Sergey Nizhevyasov

Odpowiedzi:

21

LightGBM jest świetną implementacją podobną do XGBoost, ale różni się na kilka konkretnych sposobów, szczególnie w sposobie tworzenia drzew.

Oferuje kilka różnych parametrów, ale większość z nich jest bardzo podobna do ich odpowiedników XGBoost.

Jeśli użyjesz tych samych parametrów, prawie zawsze uzyskasz bardzo bliski wynik. W większości przypadków trening będzie jednak 2-10 razy szybszy.


Dlaczego więc nie korzysta z niego więcej osób?

XGBoost działa już dłużej i jest już zainstalowany na wielu komputerach. LightGBM jest raczej nowy i początkowo nie miał otoki Pythona. Obecna wersja jest łatwiejsza do zainstalowania i używania, więc nie ma tu żadnych przeszkód.

Wielu bardziej zaawansowanych użytkowników Kaggle i podobnych stron korzysta już z LightGBM i dla każdej nowej konkurencji zyskuje coraz większy zasięg. Mimo to skrypty startowe są często oparte na XGBoost, ponieważ ludzie po prostu ponownie używają swojego starego kodu i dostosowują kilka parametrów. Jestem pewien, że wzrośnie, gdy pojawi się jeszcze kilka samouczków i przewodników na temat korzystania z niego (większość przewodników innych niż ScikitLearn koncentruje się obecnie na XGBoost lub sieciach neuronowych).

Frank Herfert
źródło
Dzięki, to ma sens. Może dla najlepszych kagglerów moc obliczeniowa nie jest dużym problemem i łatwiej jest zachować skrypty.
Sergey Nizhevyasov,
10

XGBoost ma teraz opcję grupowania histogramów dla wzrostu drzewa podobną do tej, której używa LightGBM. Zapewnia ten sam poziom przyspieszenia i podobną dokładność, chociaż algorytmy wciąż nie są dokładnie takie same.

Jest tu kilka wykresów i tabel pokazujących, jak są teraz na sobie. https://github.com/dmlc/xgboost/issues/1950

Aby być uczciwym, LightGBM powołuje się na własne testy wydajności, które pokazują, że wciąż przekraczają XGBoost (hist), choć już nie o rząd wielkości. https://github.com/Microsoft/LightGBM/blob/master/docs/Experiments.rst#comparison-experiment

James D.
źródło