Математические различия между GBM, XGBoost, LightGBM, CatBoost?


33

Существует несколько реализаций модели семейства GBDT, таких как:

  • GBM
  • XGBoost
  • LightGBM
  • Catboost.

Каковы математические различия между этими различными реализациями?

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

Я предполагаю, что catboost не использует dummified переменных, поэтому вес, присваиваемый каждой (категориальной) переменной, является более сбалансированным по сравнению с другими реализациями, поэтому переменные с большим количеством элементов не имеют большего веса, чем другие. Это позволяет слабой категориальной (с низкой кардинальностью) входить в некоторые деревья, следовательно, лучшую производительность. Кроме этого, у меня нет дальнейших объяснений.


Указанный бенчмарк от команды 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

Вы хотите взглянуть на эту англоязычную статью команды Яндекса о математической уникальности CATBoost.

Я прочитал его на короткое время , и среди немногих вещей , которые я мог понять , быстро был тот факт , что они не используют остатки , полученные на ПОЕЗДЕ сделать ПОЕЗД , поскольку эти остатки создают оптимистичный уклон качества обучения. ( Обновление: это новшество обеспечивает способ борьбы с переоснащением, что является одной из причин, по которой алгоритм работал лучше по сравнению с его аналогами, за исключением множества способов предварительной обработки категориальных переменных).

Прошу прощения, что не дал вам конкретного и полного ответа.

Математические различия между GBM, XGBoost

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

Я бы не стал вдаваться в подробности здесь. Это просто хорошее прочтение, охватывающее различные типы потерь (L) и помимо концепции переменной важности. Конечно, это важная статья о реализации метода спуска в пространстве функций (низкоуровневых моделей), а не параметров в целях минимизации потерь.

Если вы посмотрите здесь: https://arxiv.org/pdf/1603.02754.pdf

Вы найдете математическую виньетку для модели XGBoost от Tianqi Chen et al. Теперь это становится интересным. Пара математических отклонений этой модели от классического GBM Фридмана:

  • Регуляризованные (штрафные) параметры (и мы помним, что параметры в усилении - это функции, деревья или линейные модели): доступны 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, вы можете попробовать сравнить реализацию Яндекса с некоторыми пользовательскими функциями потери, написанными для 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
Интересно, почему кто-то отрицает ответ, не дав лучшего ответа? Добро пожаловать на сцену, чтобы внести любой вклад, кроме анонимного голосования, сэр.
Алексей говорит восстановить Монику

это точно отвечает на мой вопрос для catboost. Есть ли у вас дополнительные материалы для LightGBM, XGBoost и GBM?
Метариат

Да, я увлечу свой ответ. Вы хорошо справляетесь с трудной математикой или предпочитаете интуитивные объяснения?
Алексей говорит восстановить Monica

Спасибо, я могу хорошо справиться с обоими, интуитивное объяснение быстрее получить, а математические детали занимают больше времени, но очень полезно для дальнейшего понимания / реализации.
Метариат

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.