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
Instrucciones del ejercicio
- Ejecuta el plan de validación cruzada de 3 particiones de
splitPlany coloca las predicciones en la columnampg$pred.cv.- Usa
lm()y la fórmulacty ~ hwy.
- Usa
- Crea un modelo de regresión lineal con todos los datos de
mpg(fórmulacty ~ hwy) y asigna las predicciones ampg$pred. - Usa
rmse()para obtener la raíz del error cuadrático medio de las predicciones del modelo completo (mpg$pred). Recuerda quermse()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
___(___, ___)