EmpezarEmpieza gratis

Evalúa un procedimiento de modelado usando validación cruzada con n particiones

En este ejercicio, usarás splitPlan, el plan de validación cruzada de 3 particiones del ejercicio anterior, para hacer predicciones con un modelo que predice mpg$cty a partir de mpg$hwy.

Si dframe es el conjunto de entrenamiento, una forma de añadir una columna con las predicciones de validación cruzada al data frame es la siguiente:

# Inicializa una columna con la longitud adecuada
dframe$pred.cv <- 0 

# k es el número de particiones
# splitPlan es el plan de validación cruzada

for(i in 1:k) {
  # Obtén la partición i-ésima
  split <- splitPlan[[i]]

  # Ajusta un modelo con los datos de entrenamiento 
  # de esta partición 
  # (lm, en este caso)
  model <- lm(fmla, data = dframe[split$train,])

  # haz predicciones sobre los 
  # datos de aplicación de esta partición
  dframe$pred.cv[split$app] <- predict(model, newdata = dframe[split$app,])
}

La validación cruzada estima qué tal se comportará en datos nuevos un modelo entrenado con todos los datos. Como en la división entrenamiento/prueba, para un buen procedimiento de modelado, el rendimiento en validación cruzada y el de entrenamiento deberían ser similares.

El data frame mpg, el plan de validación cruzada splitPlan y la función rmse() ya están cargados.

Este ejercicio forma parte del curso

Aprendizaje supervisado en R: Regresión

Ver curso

Instrucciones del ejercicio

  • Ejecuta el plan de validación cruzada de 3 particiones de splitPlan y coloca las predicciones en la columna mpg$pred.cv.
    • Usa lm() y la fórmula cty ~ hwy.
  • Crea un modelo de regresión lineal con todos los datos de mpg (fórmula cty ~ hwy) y asigna las predicciones a mpg$pred.
  • Usa rmse() para obtener la raíz del error cuadrático medio de las predicciones del modelo completo (mpg$pred). Recuerda que rmse() recibe dos argumentos: los valores predichos y el resultado real.
  • Obtén la raíz del error cuadrático medio de las predicciones de validación cruzada. ¿Son los dos valores aproximadamente iguales?

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

# mpg is available
summary(mpg)

# splitPlan is available
str(splitPlan)

# Run the 3-fold cross validation plan from splitPlan
k <- ___ # Number of folds
mpg$pred.cv <- 0 
for(i in ___) {
  split <- ___
  model <- lm(___, data = ___)
  mpg$pred.cv[___] <- predict(___, newdata = ___)
}

# Predict from a full model
mpg$pred <- ___(___(cty ~ hwy, data = mpg))

# Get the rmse of the full model's predictions
___(___, ___)

# Get the rmse of the cross-validation predictions
___(___, ___)
Editar y ejecutar código