Processing math: 100%

37 votos

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

Existen varias implementaciones de la familia de modelos GBDT como:

  • GBM
  • XGBoost
  • LightGBM
  • Catboost.

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

Catboost parece superar a las otras implementaciones incluso utilizando sólo sus parámetros por defecto según esta marca de referencia pero sigue siendo muy lento.

Mi conjetura es que catboost no utiliza las variables dummificadas, 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 las categóricas débiles (con baja cardinalidad) entren en algunos árboles, por lo que el rendimiento es mejor. Aparte de eso, no tengo más explicaciones.

31voto

Joseph Paterson Puntos 306
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

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

Lo leí brevemente, y entre las pocas cosas que pude entender rápidamente fue el hecho de que no utilizan los residuos obtenidos en TREN para hacer TREN ya que estos residuos crean un sesgo optimista de la calidad del aprendizaje. ( Actualización: esta novedad aporta 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 las variables categóricas).

Siento no haberle dado una respuesta concreta y completa.

Diferencias matemáticas entre GBM y XGBoost

En primer lugar te sugiero que leas 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

Yo no entraría en detalles aquí. Es sólo una buena lectura que cubre varios tipos de pérdida (L) y además el concepto de importancia variable. Por supuesto, se trata de un documento que marca un hito en la aplicación del método de descenso en el espacio de las funciones (modelos de bajo nivel) en lugar de los parámetros en la búsqueda de la minimización de las pérdidas.

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

Se encuentra 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 forman el clásico GBM de Friedman:

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

enter image description here

  • Utilizar las segundas derivadas para acelerar el proceso (si se utilizó antes por favor corrígeme).

A este respecto: mire aquí para encontrar una implementación de la pérdida cuantílica en CATBoost, que viene muy bien 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;
    } };

Aunque 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 sólo acepta entradas numéricas.

Tenga en cuenta 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 las características categóricas para el entrenamiento del modelo, además de utilizar el viejo y conocido enfoque de una sola vez. 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 sobreajustado.

He terminado. No utilizo LightGBM, así que no puedo arrojar ninguna luz al respecto.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X