Математические различия между 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.