XGBoost
Deweloperzy | Współtwórcy XGBoost |
---|---|
Pierwsze wydanie | 27 marca 2014 |
Wersja stabilna | |
Magazyn | |
Napisane w | C++ |
System operacyjny | Linuks , macOS , Windows |
Typ | Nauczanie maszynowe |
Licencja | Licencja Apache 2.0 |
Strona internetowa |
XGBoost (eXtreme Gradient Boosting) to biblioteka oprogramowania typu open source , która zapewnia regularyzującą platformę wzmacniającą gradient dla C++ , Java , Python , R , Julia , Perl i Scala . Działa na systemach Linux , Windows i macOS . Z opisu projektu wynika, że ma on na celu dostarczenie „Skalowalnej, przenośnej i rozproszonej biblioteki wzmacniania gradientów (GBM, GBRT, GBDT)”. Działa na jednym komputerze, a także na platformach przetwarzania rozproszonego Apache Hadoop , Apache Spark , Apache Flink i Dask .
Ostatnio zyskał dużą popularność i uwagę [ kiedy? ] jako algorytm wybierany przez wiele zwycięskich drużyn w konkursach uczenia maszynowego.
Historia
XGBoost początkowo był projektem badawczym Tianqi Chen w ramach grupy Distributed (Deep) Machine Learning Community (DMLC). Początkowo był aplikacją terminalową, którą można było skonfigurować za pomocą libsvm . Stał się dobrze znany w kręgach konkursowych ML po zastosowaniu go w zwycięskim rozwiązaniu Higgs Machine Learning Challenge . Wkrótce potem zbudowano pakiety Python i R, a XGBoost ma teraz implementacje pakietów dla Javy, Scali , Julii, Perla i innych języków. To przyciągnęło bibliotekę do większej liczby programistów i przyczyniło się do jej popularności wśród Kaggle , gdzie był używany w wielu konkursach.
Wkrótce został zintegrowany z wieloma innymi pakietami, co ułatwiło korzystanie z niego w odpowiednich społecznościach. Został on teraz zintegrowany z scikit-learn dla użytkowników Pythona oraz z pakietem caret dla użytkowników R. Można go również zintegrować z frameworkami Data Flow, takimi jak Apache Spark , Apache Hadoop i Apache Flink , używając abstrakcyjnych Rabit i XGBoost4J. XGBoost jest również dostępny w OpenCL dla układów FPGA . Wydajna, skalowalna implementacja XGBoost została opublikowana przez Tianqi Chen i Carlosa Guestrina.
Chociaż model XGBoost często osiąga wyższą dokładność niż pojedyncze drzewo decyzyjne, poświęca wewnętrzną interpretowalność drzew decyzyjnych. Na przykład podążanie ścieżką, którą podąża drzewo decyzyjne, aby podjąć decyzję, jest trywialne i oczywiste, ale podążanie ścieżkami setek lub tysięcy drzew jest znacznie trudniejsze. Aby osiągnąć zarówno wydajność, jak i interpretowalność, niektóre techniki kompresji modelu umożliwiają przekształcenie XGBoost w pojedyncze drzewo decyzyjne „narodzone na nowo”, które przybliża tę samą funkcję decyzyjną.
Cechy
Istotne cechy XGBoost, które odróżniają go od innych algorytmów wzmacniania gradientu, obejmują:
- Sprytna penalizacja drzew
- Proporcjonalne kurczenie się węzłów liściowych
- Wzmocnienie Newtona
- Dodatkowy parametr randomizacji
- Implementacja na pojedynczych, rozproszonych systemach i obliczeniach poza rdzeniem
- Automatyczny wybór funkcji
Algorytm
XGBoost działa jak Newton-Raphson w przestrzeni funkcyjnej, w przeciwieństwie do wzmacniania gradientu , które działa jako spadek gradientu w przestrzeni funkcyjnej, aproksymacja Taylora drugiego rzędu jest używana w funkcji strat, aby nawiązać połączenie z metodą Newtona Raphsona.
Ogólny nieuregulowany algorytm XGBoost to:
Wejście: zbiór treningowy , różniczkowalna strata funkcja liczba słabych uczniów i wskaźnik uczenia się .
Algorytm:
- Zainicjuj model stałą wartością:
- Dla m = 1 do M :
- Oblicz 'gradienty' i 'hesjan':
- Dopasuj podstawowego ucznia (lub słabego ucznia, np. Drzewo) za pomocą zestawu szkoleniowego rozwiązując poniższy problem optymalizacyjny:
- Zaktualizuj model:
- Oblicz 'gradienty' i 'hesjan':
- Wyjście
Nagrody
- Nagroda Johna Chambersa (2016)
- Nagroda za fizykę wysokich energii i uczenie maszynowe (HEP i ML) (2016)