¿Diferencias matemáticas entre GBM, XGBoost, LightGBM, CatBoost?

33

Existen varias implementaciones de la familia de modelos GBDT, tales como:

  • GBM
  • XGBoost
  • LightGBM
  • Catboost.

¿Cuáles son las diferencias matemáticas entre estas diferentes implementaciones?

Catboost parece superar a las otras implementaciones incluso utilizando solo sus parámetros predeterminados de acuerdo con este punto de referencia , pero sigue siendo muy lento.

Supongo que catboost no usa las variables dummified, por lo que el peso dado a cada variable (categórica) está más equilibrado en comparación con las otras implementaciones, por lo que las variables de alta cardinalidad no tienen más peso que las otras. Permite que los categóricos débiles (con baja cardinalidad) ingresen a algunos árboles, por lo tanto, un mejor rendimiento. Aparte de eso, no tengo más explicaciones.

Metariado
fuente
El punto de referencia recomendado es por el equipo de yandex / catboost, necesitamos uno independiente.
mrgloom

Respuestas:

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

Desea ver este artículo en inglés del equipo de Yandex sobre la singularidad matemática de CATBoost.

Lo leí brevemente, y entre algunas cosas que pude entender rápidamente fue el hecho de que no usan los residuos obtenidos en TRAIN para hacer TRAIN , ya que estos residuos crean un sesgo optimista de la calidad del aprendizaje. ( Actualización: esta novedad ofrece una forma de combatir el sobreajuste, que es una de las razones por las que el algoritmo funcionó mejor en comparación con sus análogos, además de una variedad de formas de preprocesar variables categóricas).

Lamento no darle una respuesta específica y completa.

Diferencias matemáticas entre GBM, XGBoost

Primero, le sugiero que lea un artículo de Friedman sobre Gradient Boosting Machine aplicado a modelos de regresores lineales, clasificadores y árboles de decisión en particular. https://statweb.stanford.edu/~jhf/ftp/trebst.pdf

No entraría en los detalles aquí. Es solo una buena lectura que cubre varios tipos de pérdida (L) y además del concepto de importancia variable. Por supuesto, este es un documento histórico de implementación del método de un descenso en el espacio de funciones (modelos de bajo nivel) en lugar de parámetros para lograr la minimización de pérdidas.

Si miras aquí: https://arxiv.org/pdf/1603.02754.pdf

Encontrará una viñeta matemática para el modelo XGBoost de Tianqi Chen et al. Ahora se vuelve interesante. Un par de desviaciones matemáticas de este modelo del clásico GBM de Friedman son:

  • Parámetros regularizados (penalizados) (y recordamos que los parámetros en el refuerzo son la función, los árboles o los modelos lineales): L1 y L2 están disponibles.

ingrese la descripción de la imagen aquí

  • Uso de segundas derivadas para acelerar el proceso (si se usó antes, corríjame).

En este punto: mire aquí para encontrar una implementación de la pérdida de cuantiles en CATBoost, que es útil y proporciona tanto la primera como la segunda derivada: 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;
    } };

Si bien no puede encontrar esta útil función de pérdida L1 en XGBoost, puede intentar comparar la implementación de Yandex con algunas de las funciones de pérdida personalizadas escritas para XGB.

  • Además, CATBoost funciona excelentemente con características categóricas, mientras que XGBoost solo acepta entradas numéricas.

Considere este enlace: https://tech.yandex.com/catboost/doc/dg/concepts/algorithm-main-stages_cat-to-numberic-docpage/#algorithm-main-stages_cat-to-numberic

Ofrecen una variedad de formas de alimentar características categóricas al entrenamiento del modelo además de usar el antiguo y conocido enfoque único. La disminución de las dimensiones de un espacio de entrada sin perder mucha información es una de las posibles razones por las que el modelo ajustado está menos equipado.

Termine. No uso LightGBM, así que no puedo arrojar ninguna luz sobre él.

Alexey dice reinstalar a Mónica
fuente
55
Me pregunto por qué alguien rechazaría una respuesta sin dar una mejor respuesta. Bienvenido al escenario para hacer cualquier aportación más allá de la votación anónima, señor.
Alexey dice Reinstate a Monica el
responde exactamente a mi pregunta para el catboost. ¿Tiene algún material complementario para LightGBM, XGBoost y GBM?
Metariat
Sí, entierro mi respuesta. ¿Manejas bien las matemáticas difíciles o prefieres explicaciones intuitivas?
Alexey dice Reinstate Monica
Gracias, puedo hacer frente a ambos, la explicación intuitiva es más rápida de obtener, y los detalles matemáticos requieren más tiempo, pero son muy beneficiosos para una mayor comprensión / implementación.
Metariat
1
Respuesta enriquecida.
Alexey dice Reinstate Monica