XGBoost… Co to jest?
XGBoost jest zbiorowym, bazującym na drzewach, algorytmem uczenia maszynowego, wykorzystującym strukturę wzmacniającą gradient. Sztuczne sieci neuronowe w większości przypadków przewyższają inne ramy lub algorytmy podczas przewidywania problemów z tekstem, obrazami i innymi nieuporządkowanymi danymi. W przypadku średnich i małych danych tabelarycznych/strukturalnych sytuacja jest zupełnie inna. Dlaczego? Ponieważ algorytmy oparte na drzewach decyzyjnych są prawdopodobnie najlepszym rozwiązaniem.
Algorytm XGBoost był wynikiem projektu badawczego zorganizowanego na Uniwersytecie w Waszyngtonie. Carlos Guestrin i Tianqi Chen przedstawili swój referat na konferencji SIGKDD w latach 2016. Od tego czasu XGBoost stał się znanym algorytmem, który zrewolucjonizował środowisko nauki maszynowej.
Od czasu jego wprowadzenia algorytm ten otrzymał tony kredytów, w tym kilka konkursów Kaggle. Otrzymał również uznanie za wpływy dla różnych nowoczesnych zastosowań przemysłowych. W konsekwencji, ogromna grupa naukowców zajmujących się danymi przyczynia się do różnych projektów open source związanych z XGBoost. GitHub ma ponad trzystu współpracowników i jak dotąd trzydzieści sześćset angażuje się w projekty. Dowiedz się, jak ten algorytm wyróżnia się na tle innych.
Jak XGBoost wyróżnia się na tle innych
Szeroki zakres zastosowań
XGBoost pozwala na wykorzystanie szerokiej gamy aplikacji do rozwiązywania definiowanych przez użytkownika problemów predykcji, rankingu, klasyfikacji i regresji.
Łatwo przenośny
Działa płynnie w systemach OSX, Linux i Windows.
Różnorodność języków
XGBoost obsługuje większość języków programowania, w tym Julia, Scala, Java, R, Python, C++.
Integracja z Cloudem
Algorytm uczenia maszynowego XGBoost obsługuje klastry Yarn, azure i AWS. Działa on również niewiarygodnie dobrze z innymi systemami Spark, Flink i różnymi ekosystemami.
Budowanie Intuicji XG Boost
Jednym z powodów, dla których drzewa decyzyjne są tak popularne jest to, że ich wizualizacja jest dość prosta w najbardziej podstawowej formie. Ich algorytmy są również łatwe w interpretacji, ale tworzenie intuicji dla nadchodzącej generacji algorytmów (opartych na drzewach) może być nieco skomplikowane. Oto analogia, która pozwala zrozumieć algorytmy oparte na drzewach i ich ewolucję.
Pomyśl o sobie jako o menedżerze ds. rekrutacji, rozmawiającym z kilkoma wysoko wykwalifikowanymi kandydatami. Każdy etap ewolucji algorytmu opierającego się na drzewach jest jak część procesu rozmowy kwalifikacyjnej.
Drzewo decyzyjne
Każdy kierownik ds. rekrutacji kieruje się zestawem kryteriów, w tym doświadczeniem, wykształceniem i wynikami rozmów kwalifikacyjnych. Sprawiedliwe byłoby porównanie drzewa decyzyjnego z drzewem decyzyjnym kierownika ds. rekrutacji, który przesłuchuje kandydatów na podstawie swoich kryteriów.
Bagowanie
Teraz wywiadami zajmuje się kilka osób, a każdy w panelu ma swój głos. Agregacja lub bagging Bootstrap polega na łączeniu informacji od każdego ankietera w celu podjęcia ostatecznej decyzji przy pomocy bezstronnego procesu głosowania.
Las losowy
Random Forest jest algorytmem workującym, który losowo wybiera podkomponent cech. Innymi słowy, każdy ankieter będzie testował kandydata na podstawie losowo wybranych kwalifikacji (np. rozmowy techniczne w celu sprawdzenia umiejętności programowania).
Boosting
Boosting jest alternatywną procedurą, w której każdy ankieter zmienia kryteria oceny w zależności od informacji zwrotnych otrzymanych od poprzednich ankieterów. Sprawia to, że proces rozmowy jest bardzo efektywny, ponieważ pomaga wdrożyć bardziej wydajne procedury oceny.
Podnoszenie gradientu (Gradient Boosting)
Proces zwiększania gradientu minimalizuje błędy dzięki algorytmowi zmniejszania gradientu. Na przykład, firmy doradztwa strategicznego wykorzystują rozmowy kwalifikacyjne w celu wyeliminowania kandydatów, którzy nie są tak wykwalifikowani jak inni kandydaci.
XGBoost
XGBoosting to znacznie bardziej wydajna wersja wspomagania gradientu, stąd jej nazwa: Extreme Gradient Boosting. Jest to idealne połączenie technik optymalizacji sprzętu i oprogramowania w celu osiągnięcia doskonałych wyników poprzez wykorzystanie minimalnych zasobów obliczeniowych w krótkim czasie.
Jaka jest tajemnica doskonałej wydajności XGBoost?
Maszyny do zwiększania gradientu i XGBoost to metody drzewa zespołów. Wykorzystują one architekturę zstępowania gradientu w celu zastosowania zasady boost poor learners (CARTs). Extreme Gradient Boost znacząco poprawia szkielet GBM poprzez wdrożenie ulepszeń algorytmicznych i optymalizację systemów.
Optymalizacja systemu
Paralelizacja
XGBoost używa równoległej implementacji do uruchamiania procesu sekwencyjnego budowania drzewa. Jest to możliwe ze względu na wymienną charakterystykę pętli wykorzystywanych do tworzenia bazowych uczących się. Pętla wewnętrzna zlicza cechy, podczas gdy pętla zewnętrzna pozyskuje węzły liściowe drzewa. Zagnieżdżanie pętli ogranicza paralelizację, ponieważ nie jest możliwe uruchomienie pętli zewnętrznej bez zakończenia pętli wewnętrznej.
Tak więc, aby osiągnąć lepszy czas działania, kolejność pętli zmienia się przy pomocy inicjalizacji z globalnym skanowaniem sortowania i instancji wykorzystujących równoległe wątki. Przełącznik znacząco poprawi wydajność algorytmów poprzez kompensację kosztów paralelizacji.
Przycinanie drzew
XGBoost wykorzystuje ‘max_depth’ i ignoruje kryterium, aby śliwki przycinać do tyłu. Podejście to jest doskonałe dla zwiększenia wydajności obliczeniowej.
Optymalizacja sprzętowa
Algorytm optymalizacji sprzętowej efektywnie wykorzystuje zasoby sprzętowe. Jest to możliwe poprzez przydzielenie wewnętrznych buforów w każdym wątku do przechowywania statystyk gradientu. Inne usprawnienia, takie jak obliczenia “out of core”, wykorzystują przestrzeń dyskową i obsługują ramki danych, które nie mieszczą się w pamięci.
Usprawnienia algorytmiczne
Regularizacja
Pomaga w karaniu skomplikowanych modeli z pomocą Ridge i LASSO, aby uniknąć przebudowy.
Walidacja krzyżowa
Algorytm uczenia maszynowego XGBoost posiada metodę walidacji krzyżowej zaimplementowaną w każdej iteracji. Eliminuje ona potrzebę rozbudowanego programowania tego wyszukiwania i określenia dokładnej ilości iteracji pobudzających potrzebnych do wykonania jednego przebiegu.
Sparsity Awareness
XGBoost dodaje skąpe funkcje poprzez automatyczne zrozumienie istotnych wartości i obsługuje różne wzory skąpe z niezwykłą wydajnością.
Ważony szkic kwantylowy
Extreme Gradient boost implementuje algorytm rozproszonego szkicowania w celu znalezienia idealnego podziału punktów w ważonych zestawach danych.
XGBoost może być przyszłością nauki maszynowej
Naukowcy zajmujący się danymi muszą przetestować każdy algorytm, aby określić najlepszą opcję. Poza tym, wybór właściwego algorytmu, choć doskonały, nie jest wystarczający. Wybór właściwej konfiguracji dla danego zbioru danych jest również kluczowy. Co więcej, trzeba wziąć pod uwagę kilka elementów, aby wybrać najlepszy algorytm. Zwróć uwagę na takie rzeczy jak implementacja, możliwość wyjaśnienia i złożoność obliczeniową, aby określić algorytm, który będzie najbardziej odpowiedni dla Ciebie.
Wreszcie, uczenie maszynowe to ogromny zasób, a Ty znajdziesz mnóstwo alternatyw dla Extreme Gradient Boost. Cat Boost i Light GBM to kilka najnowszych alternatyw, które zapewniają imponujące wyniki. Jednak XGBoost króluje pod względem łatwości tłumaczenia, pragmatyzmu, elastyczności, wydajności i wielu innych rzeczy. Spodziewaj się, że ten algorytm uczenia się maszynowego pozostanie na szczycie, dopóki nie pojawi się godny przeciwnik i nie zmieni się sytuacja.