XGBoost La Guía Definitiva (Parte 2)

XGBoost Guía Definitiva (Parte 2)

Implementación del algoritmo XGBoost en Python desde cero

Imagen de StockSnap en Pixabay

En el artículo anterior discutimos el algoritmo XGBoost y mostramos su implementación en seudocódigo. En este artículo vamos a implementar el algoritmo en Python desde cero.

El código proporcionado es una implementación concisa y liviana del algoritmo XGBoost (con solo alrededor de 300 líneas de código), destinado a demostrar su funcionalidad principal. Como tal, no está optimizado para velocidad o uso de memoria, y no incluye el espectro completo de opciones proporcionadas por la biblioteca XGBoost (consultar https://xgboost.readthedocs.io/ para obtener más detalles sobre las características de la biblioteca). Más específicamente:

  1. El código está escrito en Python puro, mientras que el núcleo de la biblioteca XGBoost está escrito en C++ (sus clases de Python son solo envoltorios delgados sobre la implementación de C++).
  2. No incluye varias optimizaciones que permiten a XGBoost manejar grandes cantidades de datos, como el esbozo ponderado de cuantiles, el aprendizaje de árboles fuera de memoria y el procesamiento paralelo y distribuido de los datos. Estas optimizaciones se discutirán con más detalle en el próximo artículo de la serie.
  3. La implementación actual solo admite tareas de regresión y clasificación binaria, mientras que la biblioteca XGBoost también admite clasificación multiclase y problemas de clasificación por ranking.
  4. Nuestra implementación solo admite un pequeño subconjunto de los hiperparámetros que existen en la biblioteca XGBoost. Específicamente, admite los siguientes hiperparámetros:
  • n_estimators (valor predeterminado = 100): el número de árboles de regresión en el conjunto (que también es el número de iteraciones de refuerzo).
  • max_depth (valor predeterminado = 6): la profundidad máxima (número de niveles) de cada árbol.
  • learning_rate (valor predeterminado = 0.3): el tamaño del paso de reducción aplicado a los árboles.
  • reg_lambda (valor predeterminado = 1): término de regularización L2 aplicado a los pesos de las hojas.
  • gamma (valor predeterminado = 0): reducción mínima de pérdida requerida para dividir un nodo dado.

Para mantener la consistencia, he mantenido los mismos nombres y valores predeterminados de estos hiperparámetros tal como se definen en la biblioteca XGBoost.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Bloqueo de Apple de Beeper Mini en iMessage solo es parte de la gran saga de la burbuja azul/verde

Apple toma medidas preventivas para proteger a sus clientes. Beeper afirma que el último movimiento de Apple hace exa...

Inteligencia Artificial

Papel de los Contratos de Datos en la Canalización de Datos

¿Qué son los Contratos de Datos? Un contrato de datos es un acuerdo o conjunto de reglas que define cómo debe estruct...

Inteligencia Artificial

Rishi Sunak presenta la visión de nuevos organismos internacionales de seguridad de la IA

El Primer Ministro británico defendió la búsqueda de respaldo chino para una serie de nuevas iniciativas de gobernanz...

Inteligencia Artificial

Los mejores mejoradores de audio de IA (2023)

Los profesionales y audiófilos pueden beneficiarse de la mejor calidad de sonido posible gracias al software de mejor...