Математичні відмінності між GBM, XGBoost, LightGBM, CatBoost?


33

Існує кілька реалізацій моделі GBDT, таких як:

  • ГБМ
  • XGBoost
  • LightGBM
  • Catboost.

Які математичні відмінності між цими різними реалізаціями?

Catboost, здається, перевершує інші реалізації навіть використовуючи лише його параметри за замовчуванням відповідно до цієї тестової позначки , але це все ще дуже повільно.

Я думаю, що catboost не використовує думіфіковані змінні, тому вага, що надається кожній (категоричній) змінній, є більш врівноваженим порівняно з іншими реалізаціями, тому змінні з високою кардинальністю не мають більшої ваги, ніж інші. Це дозволяє слабким категоричним (із низькою кардинальністю) заходити на деякі дерева, отже, кращі показники. Крім цього, я не маю більше пояснень.


Згаданий орієнтир - команда yandex / catboost, нам потрібен незалежний.
mrgloom

Відповіді:


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

Ви хочете подивитися на цьому англомовному документі команди Yandex про математичну унікальність CATBoost.

Я прочитав це коротко, і серед кількох речей, які я міг швидко зрозуміти, це той факт, що вони не використовують залишки, отримані в TRAIN, щоб робити тренінги , оскільки ці залишки створюють оптимістичну упередженість якості навчання. ( Оновлення: ця новинка створює спосіб боротьби з надмірним приладом, що є однією з причин алгоритму працювати краще порівняно зі своїми аналогами, за винятком різноманітних способів попередньої обробки категоричних змінних).

Мені шкода, що не дав тобі конкретної і повної відповіді.

Математичні відмінності між GBM, XGBoost

Спочатку я пропоную вам прочитати документ Фрідмана про машину підсилення градієнтів, застосовану до лінійних регресорних моделей, класифікаторів та дерев рішень. https://statweb.stanford.edu/~jhf/ftp/trebst.pdf

Я б не пішов у деталі тут. Це просто хороше прочитання, що охоплює різні типи втрат (L) та, крім того, концепцію змінної важливості. Звичайно, це важливий документ про застосування методу спуску в просторі функцій (моделі низького рівня), а не параметрів для досягнення мінімізації втрат.

Якщо ви подивитесь тут: https://arxiv.org/pdf/1603.02754.pdf

Ви знайдете математичну віньєтку для моделі XGBoost від Tianqi Chen et al. Зараз це стає цікаво. Кілька математичних відхилень цієї моделі утворюють класичний Фрідман у ГБМ:

  • Регламентовані (пенізовані) параметри (і ми пам’ятаємо, що параметри при збільшенні - це функція, дерева або лінійні моделі): L1 і L2 доступні.

введіть тут опис зображення

  • Використання других похідних для прискорення процесу (якщо він використовувався раніше, будь ласка, виправте мене).

До цього моменту: перегляньте тут, щоб знайти реалізацію кількісних втрат у CATBoost, яка стане в нагоді і надає як перший, так і другий похідні: 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;
    } };

Хоча ви не можете знайти цю корисну функцію втрати L1 в XGBoost, ви можете спробувати порівняти реалізацію Yandex з деякими спеціальними функціями втрат, написаними для XGB.

  • Крім того, CATBoost чудово працює з категоричними характеристиками, тоді як XGBoost приймає лише числові введення.

Розгляньте це посилання: https://tech.yandex.com/catboost/doc/dg/concepts/algorithm-main-stages_cat-to-numberic-docpage/#algorithm-main-stages_cat-to-numberic

Вони пропонують найрізноманітніші способи подати категоричні особливості до модельного навчання, окрім використання старого і добре відомого підходу, що працює на гарячій основі. Зменшення розмірів вхідного простору, не втрачаючи багато інформації, є однією з можливих причин, що вбудована модель є менш переобладнаною.

Я закінчив. Я не використовую LightGBM, тому не можу пролити світло на нього.


5
Цікаво, чому хтось спростує відповідь, не даючи кращої відповіді? Ласкаво просимо на сцену, щоб дати будь-який внесок, крім того, щоб зробити анонімний поклик, сер.
Олексій каже, що поверніть Моніку

він відповідає саме на моє запитання про катбост. Чи є у вас додаткові матеріали для LightGBM, XGBoost та GBM?
Менаріат

Так, я приверну свою відповідь. Ви добре справляєтеся з важкою математикою чи, скоріше, віддаєте перевагу інтуїтивним поясненням?
Олексій каже, що поверніть Моніку

Дякую, я можу добре впоратися з обома, інтуїтивне пояснення швидше отримати, а математичні деталі потребують більше часу, але дуже доброякісні для подальшого розуміння / реалізації.
Менаріат

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.