Różnice matematyczne między GBM, XGBoost, LightGBM, CatBoost?

33

Istnieje kilka implementacji rodziny modeli GBDT, takich jak:

  • GBM
  • XGBoost
  • LightGBM
  • Catboost.

Jakie są matematyczne różnice między tymi różnymi implementacjami?

Catboost wydaje się przewyższać inne implementacje, nawet używając tylko domyślnych parametrów zgodnie z tym testem , ale wciąż jest bardzo powolny.

Domyślam się, że catboost nie używa zmumifikowanych zmiennych, więc waga przypisana każdej (kategorialnej) zmiennej jest bardziej zrównoważona w porównaniu do innych implementacji, więc zmienne o wysokiej liczności nie mają większej wagi niż inne. Pozwala słabym kategorialnym (o niskiej liczności) wejść do niektórych drzew, stąd lepsza wydajność. Poza tym nie mam dalszych wyjaśnień.

Metariat
źródło
Referencyjny test referencyjny jest opracowany przez zespół yandex / catboost, potrzebujemy niezależnego.
mrgloom

Odpowiedzi:

27
My guess is that catboost doesn't use the dummified variables, so the weight given to each (categorical) variable is more balanced compared to the other implementations, so the high-cardinality variables don't have more weight than the others.

https://arxiv.org/abs/1706.09516

Chcesz spojrzeć na ten artykuł w języku angielskim z zespołu Yandex na temat matematycznej wyjątkowości CATBoost.

Przeczytałem to krótko i wśród kilku rzeczy, które mogłem szybko zrozumieć, był fakt, że nie wykorzystują one resztek uzyskanych w TRAIN do zrobienia TRAIN , ponieważ te resztki tworzą optymistyczne nastawienie do jakości uczenia się. ( Aktualizacja: ta nowość umożliwia walkę z nadmiernym dopasowaniem, co jest jednym z powodów, dla których algorytm działał lepiej w porównaniu z analogami, oprócz różnych sposobów wstępnego przetwarzania zmiennych kategorialnych).

Przykro mi, że nie podałem konkretnej i pełnej odpowiedzi.

Różnice matematyczne między GBM, XGBoost

Najpierw proponuję przeczytać artykuł Friedmana na temat maszyny do zwiększania gradientu zastosowanej w szczególności do modeli regresora liniowego, klasyfikatorów i drzew decyzyjnych. https://statweb.stanford.edu/~jhf/ftp/trebst.pdf

Nie wchodziłbym w szczegóły tutaj. To tylko dobra lektura obejmująca różne rodzaje strat (L) i oprócz koncepcji o zmiennym znaczeniu. Oczywiście jest to kamień milowy wdrożenia metody zejścia w przestrzeni funkcji (modele niskiego poziomu), a nie parametrów w dążeniu do minimalizacji strat.

Jeśli zajrzysz tutaj: https://arxiv.org/pdf/1603.02754.pdf

Znajdziesz matematyczną winietę dla modelu XGBoost autorstwa Tianqi Chen i in. Teraz robi się ciekawie. Kilka matematycznych odchyleń tego modelu od klasycznego GBM Friedmana to:

  • Parametry regulowane (karane) (i pamiętamy, że parametry w boosstingu to funkcja, drzewa lub modele liniowe): L1 i L2 są dostępne.

wprowadź opis zdjęcia tutaj

  • Używanie drugich pochodnych w celu przyspieszenia procesu (jeśli był używany wcześniej, proszę mnie poprawić).

Do tego momentu: spójrz tutaj, aby znaleźć implementację utraty kwantyli w CATBoost, która jest przydatna i zapewnia zarówno pierwszą, jak i drugą pochodną: https://github.com/catboost/catboost/blob/master/catboost/libs/algo/ error_functions.h

class TQuantileError : public IDerCalcer<TQuantileError, /*StoreExpApproxParam*/ false> { public:
    const double QUANTILE_DER2 = 0.0;

    double Alpha;
    SAVELOAD(Alpha);

    explicit TQuantileError(bool storeExpApprox)
        : Alpha(0.5)
    {
        CB_ENSURE(storeExpApprox == StoreExpApprox, "Approx format does not match");
    }

    TQuantileError(double alpha, bool storeExpApprox)
        : Alpha(alpha)
    {
        Y_ASSERT(Alpha > -1e-6 && Alpha < 1.0 + 1e-6);
        CB_ENSURE(storeExpApprox == StoreExpApprox, "Approx format does not match");
    }

    double CalcDer(double approx, float target) const {
        return (target - approx > 0) ? Alpha : -(1 - Alpha);
    }

    double CalcDer2(double = 0, float = 0) const {
        return QUANTILE_DER2;
    } };

Chociaż nie możesz znaleźć tej użytecznej funkcji utraty L1 w XGBoost, możesz spróbować porównać implementację Yandex z niektórymi niestandardowymi funkcjami utraty napisanymi dla XGB.

  • Poza tym CATBoost działa doskonale z funkcjami jakościowymi, podczas gdy XGBoost akceptuje tylko dane liczbowe.

Rozważ ten link: https://tech.yandex.com/catboost/doc/dg/concepts/algorithm-main-stages_cat-to-numberic-docpage/#algorithm-main-stages_cat-to-numberic

Oferują one różne sposoby dodawania jakościowych funkcji do treningu modelowego, a także stosowania starego i dobrze znanego podejścia typu „one-hot”. Zmniejszenie wymiarów przestrzeni wejściowej bez utraty dużej ilości informacji jest jednym z możliwych powodów, dla których dopasowany model jest mniej przebudowany.

Skończyłem. Nie używam LightGBM, więc nie mogę rzucić na to światła.

Alexey mówi Przywróć Monikę
źródło
5
Zastanawiam się, dlaczego ktoś głosowałby za odpowiedzią bez udzielania lepszej odpowiedzi? Witamy na scenie, aby przekazać wszelkie informacje poza anonimowym głosowaniem z dołu.
Alexey mówi Przywróć Monikę
odpowiada dokładnie na moje pytanie dotyczące catboost. Czy masz jakieś dodatkowe materiały do ​​LightGBM, XGBoost i GBM?
Metariat
Tak, proszę o odpowiedź. Czy dobrze radzisz sobie z trudną matematyką, czy raczej wolisz intuicyjne wyjaśnienia?
Alexey mówi Reinstate Monica
Dziękuję, dobrze sobie z tym radzę, intuicyjne objaśnienie jest szybsze, a szczegóły matematyczne zajmują więcej czasu, ale są bardzo korzystne dla dalszego zrozumienia / implementacji.
Metariat
1
Odpowiedź wzbogacona.
Alexey mówi Reinstate Monica