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
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
ntreesrondas. - Establece
etaen0.75,max_depthen5yverboseenFALSE(silencioso).
- Usa
- Ahora llama a
predict()sobrebikesAugust.treatpara predecir el número de bicicletas alquiladas en agosto.- Usa
as.matrix()para convertir los datos de prueba tratados convtreaten una matriz. - Añade las predicciones a
bikesAugustcomo la columnapred.
- Usa
- 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()