GBM vs XGBOOST? Diferencias clave?

41

Estoy tratando de entender las diferencias clave entre GBM y XGBOOST. Intenté buscarlo en Google, pero no pude encontrar buenas respuestas que explicaran las diferencias entre los dos algoritmos y por qué xgboost casi siempre funciona mejor que GBM. ¿Qué hace que XGBOOST sea tan rápido?

Un hombre
fuente
XGBoost no es que fast.Refer a este experimento
agcala

Respuestas:

36

Cita del autor de xgboost:

Tanto xgboost como gbm siguen el principio del aumento de gradiente. Sin embargo, existen diferencias en los detalles de modelado. Específicamente, xgboost utilizó una formalización de modelo más regularizada para controlar el sobreajuste, lo que le brinda un mejor rendimiento.

Hemos actualizado un tutorial completo sobre la introducción al modelo, que quizás desee ver. Introducción a los árboles potenciados

Sin embargo, el nombre xgboost en realidad se refiere al objetivo de ingeniería para impulsar el límite de los recursos de cómputo para algoritmos de árbol potenciados. Cuál es la razón por la cual muchas personas usan xgboost. Para el modelo, podría ser más adecuado llamarlo como refuerzo de gradiente regularizado.

Editar: hay una guía detallada de xgboost que muestra más diferencias.

Referencias

https://www.quora.com/What-is-the-difference-between-the-R-gbm-gradient-boosting-machine-and-xgboost-extreme-gradient-boosting

https://xgboost.readthedocs.io/en/latest/tutorials/model.html

Icyblade
fuente
2
Buena respuesta. El OP también preguntó por qué xgboost es tan rápido. La razón es que, si bien no es posible paralelizar el conjunto en sí porque cada árbol depende del anterior, puede paralelizar la construcción de varios nodos dentro de cada profundidad de cada árbol. Este tipo de detalles es lo que hace que xgboost sea tan rápido.
Ricardo Cruz
13

Además de la respuesta dada por Icyblade, los desarrolladores de xgboost han realizado una serie de importantes mejoras de rendimiento en diferentes partes de la implementación que hacen una gran diferencia en la velocidad y la utilización de la memoria:

  1. Uso de matrices dispersas con algoritmos de dispersión
  2. Estructuras de datos mejoradas para una mejor utilización de la memoria caché del procesador que lo hace más rápido.
  3. Mejor soporte para el procesamiento multinúcleo que reduce el tiempo total de entrenamiento.

En mi experiencia cuando uso GBM y xgboost mientras entreno grandes conjuntos de datos (más de 5 millones de registros), he experimentado una utilización de memoria significativamente reducida (en R) para el mismo conjunto de datos y me resultó más fácil usar múltiples núcleos para reducir el tiempo de entrenamiento.

Sandeep S. Sandhu
fuente
10

Una diferencia muy importante es la xgboostimplementación de DART, la regularización del abandono de los árboles de regresión .

Referencias

Rashmi, KV y Gilad-Bachrach, R. (2015). Dart: los abandonos se encuentran con múltiples árboles de regresión aditiva. preimpresión arXiv arXiv: 1505.01866.

horaceT
fuente
1
Dart también se implementa en LGBM incluido xgboost_dart_mode .
agcala
0

Creo que la diferencia entre el aumento de gradiente y el Xgboost está en xgboost, el algoritmo se enfoca en el poder computacional, paralelizando la formación de árboles que se puede ver en este blog .

El aumento de gradiente solo se centra en la varianza, pero no en la compensación entre el sesgo, ya que el aumento de xg también puede centrarse en el factor de regularización.

purna15111
fuente
-1

La implementación de XGBoost tiene errores. Se bloqueó en silencio al entrenar en GPU en v 082 . También me sucedió en v 0.90 , por lo que el problema no se ha abordado hasta ahora, y la "solución" proporcionada en GitHub no funcionó para mí.

LGBM 2.3.1 funciona como un encanto fuera de la caja, aunque instalarlo requiere un poco más de esfuerzo. Hasta ahora no hay problemas de entrenamiento en GPU.

Sobre XGBoost ser " tan rápido ", usted debe echar un vistazo a estos puntos de referencia .

agcala
fuente
El OP no preguntó sobre xgboost vs lightgbm.
oW_