En el artículo de hoy podrás aprender qué es un algoritmo XGBoost o Extreme Gradient Boosting, y entenderás por qué es uno de los algoritmos de machine learning más utilizado en la actualidad por los Data Scientist. Además, veremos un caso práctico con el que aprenderás a utilizar uno de estos modelos XGBoost en R.
¿Qué es un modelo XGBoost o Extreme Gradient Boosting?
Extreme Gradient Boosting o XGBoost, es un algoritmo de machine learning supervisado que actualmente es de los más actualizados en el entorno de los modelos de aprendizaje automáticos.
XGBoost obtiene predicciones realmente buenas sin necesidad de grandes esfuerzos computacionales, llegando a obtener en muchas ocasiones resultados incluso mejores que los devueltos por modelos que son todavía más complejos computacionalmente hablando.
La base de los modelos XGBoost es generar múltiples modelos secuenciales de predicción “sencilla”, y cada nuevo modelo toma el resultado del modelo anterior, haciendo que los resultados obtenidos en cada secuencia sean cada vez más “robustos”, y por tanto, obteniendo en cada iteración resultados más exactos.
Para la construcción de cada uno de estos modelos “simples” o “sencillos”, XGBoost utiliza árboles de decisión, que generalmente se utilizan para solucionar problemas de clasificación y de regresión.
¿Cómo hacer XGBoost en R?
Como os decía antes, vamos a ver un caso práctico con el que aprenderemos a utilizar Extreme Gradient Boosting en R.
Instalar y cargar paquete XGBoost en R
install.packages("xgboost")
library(xgboost)
Cargar datos en muestra Train y Test
data(agaricus.train, package='xgboost')
data(agaricus.test, package='xgboost')
train <- agaricus.train
test <- agaricus.test
Cómo hacer un entrenamiento básico con XGBoost en R
Para el ejemplo vamos a utilizar los siguientes parámetros:objective = "binary:logistic"
(objetivo binario / logístico)max.depth = 2
(profundidad de los árboles)nthread = 2
(número de cpu que puede utilizar)nrounds = 2
(número de veces que repite el modelo, secuencias)
bstSparse <- xgboost(data = train$data, label = train$label, max.depth = 2, eta = 1, nthread = 2, nrounds = 2, objective = "binary:logistic")
[0] train-error:0.046522
[1] train-error:0.022263
Podemos utilizar el modelo entrenado para obtener una predicción
pred <- predict(bst, test$data)
print(head(pred))
[1] 0.28583017 0.92392391 0.28583017 0.28583017 0.05169873 0.92392391
Y para terminar, tendremos que transformar el resultado obtenido (regresión) en un resultado binario / logístico
prediction <- as.numeric(pred > 0.5)
print(head(prediction))
[1] 0 1 0 0 0 1
Oreste Bruno dice
Muchas gracias por el artículo.
Oreste Bruno
Javier dice
Siempre es un placer leerte Oreste! :)