34 votos

XGBoost vs. Python Sklearn árboles potenciados por gradiente

Estoy tratando de entender cómo funciona el XGBoost. Ya entiendo cómo funcionan los árboles potenciados por gradiente en Python sklearn. Lo que no me queda claro es si XGBoost funciona igual, pero más rápido, o si hay diferencias fundamentales entre éste y la implementación de python.

Cuando leí este documento

http://learningsys.org/papers/LearningSys_2015_paper_32.pdf

Me parece que el resultado final que sale de XGboost es el mismo que en la implementación de Python, sin embargo la principal diferencia es cómo XGboost encuentra la mejor división para hacer en cada árbol de regresión.

Básicamente, XGBoost da el mismo resultado, pero es más rápido.

¿Es esto correcto, o hay algo más que se me escapa?

30voto

Thomas Puntos 122

Tienes razón, XGBoost ('eXtreme Gradient Boosting') y GradientBoost de sklearn son fundamentalmente lo mismo ya que ambos son implementaciones de gradient boosting.

Sin embargo, hay diferencias muy significativas bajo el capó en un sentido práctico. XGBoost es mucho más rápido (ver http://machinelearningmastery.com/gentle-introduction-xgboost-applied-machine-learning/ ) que el de sklearn. XGBoost es bastante eficiente en memoria y se puede paralelizar (creo que sklearn no puede hacerlo por defecto, no sé exactamente sobre la eficiencia de memoria de sklearn pero estoy bastante seguro de que está por debajo de XGBoost).

Habiendo utilizado ambos, la velocidad de XGBoost es bastante impresionante y su rendimiento es superior al GradientBoosting de sklearn.

8voto

sha Puntos 579

A diferencia del refuerzo de gradiente de Sklearn, Xgboost también regulariza el árbol para evitar el sobreajuste y también trata los valores perdidos de forma eficiente. El siguiente enlace puede ser útil para aprender xgboost con precisión https://www.youtube.com/watch?v=Vly8xGnNiWs

3voto

Peter Puntos 13

XGboost es una implementación de GBDT con randmización (utiliza el muestreo de colores y el muestreo de filas). El muestreo de filas es posible al no utilizar todos los datos de entrenamiento para cada modelo base de GBDT. En lugar de utilizar todos los datos de entrenamiento para cada modelo base, muestreamos un subconjunto de filas y utilizamos sólo esas filas de datos para construir cada uno de los modelos base. Esto garantiza una menor probabilidad de sobreajuste, que es un problema importante en los GBDT simples y que XGBoost intenta resolver mediante esta aleatorización.

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