EmpezarEmpieza gratis

Ajusta un modelo xgboost de alquiler de bicis y predice

En este ejercicio, ajustarás un modelo de gradient boosting usando xgboost() para predecir el número de bicicletas alquiladas por hora en función del tiempo atmosférico y del tipo y momento del día. Entrenarás el modelo con datos del mes de julio y predecirás con datos del mes de agosto.

Los data frames bikesJuly, bikesJuly.treat, bikesAugust y bikesAugust.treat ya están precargados. Recuerda que los datos procesados con vtreat ya no tienen la columna de salida, así que debes obtenerla de los datos originales (la columna cnt).

Para tu comodidad, el número de árboles a usar, ntrees del ejercicio anterior, está disponible.

Los argumentos de xgboost() (docs) son similares a los de xgb.cv().

Este ejercicio forma parte del curso

Aprendizaje supervisado en R: Regresión

Ver curso

Instrucciones del ejercicio

  • Rellena los huecos para ejecutar xgboost() sobre los datos de julio.
    • Usa as.matrix() para convertir el data frame tratado con vtreat en una matriz.
    • El objective debe ser "reg:squarederror".
    • Usa ntrees rondas.
    • Establece eta en 0.75, max_depth en 5 y verbose en FALSE (silencioso).
  • Ahora llama a predict() sobre bikesAugust.treat para predecir el número de bicicletas alquiladas en agosto.
    • Usa as.matrix() para convertir los datos de prueba tratados con vtreat en una matriz.
    • Añade las predicciones a bikesAugust como la columna pred.
  • Rellena los huecos para trazar los recuentos reales de alquileres frente a las predicciones (predicciones en el eje x).
    • ¿Ves un posible problema con las predicciones?

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

# Run xgboost
bike_model_xgb <- xgboost(data = ___, # training data as matrix
                   label = ___,  # column of outcomes
                   nrounds = ___,       # number of trees to build
                   objective = ___, # objective
                   eta = ___,
                   max_depth = ___,
                   verbose = FALSE  # silent
)

# Make predictions
bikesAugust$pred <- ___(___, ___(___))

# Plot predictions (on x axis) vs actual bike rental count
ggplot(bikesAugust, aes(x = ___, y = ___)) + 
  geom_point() + 
  geom_abline()
Editar y ejecutar código