Évaluer une procédure de modélisation au moyen d'une validation croisée en n volets
Dans cet exercice, vous utiliserez splitPlan, le plan de validation croisée à 3 volets de l'exercice précédent, pour produire des prédictions d'un modèle qui prédit mpg$cty à partir de mpg$hwy.
Si dframe est l'ensemble d'entraînement, une façon d'ajouter une colonne de prédictions de validation croisée au tableau est la suivante :
# Initialiser une colonne de la longueur appropriée
dframe$pred.cv <- 0
# k est le nombre de volets
# splitPlan est le plan de validation croisée
for(i in 1:k) {
# Obtenir le iᵉ découpage
split <- splitPlan[[i]]
# Construire un modèle sur les données d'entraînement
# de ce découpage
# (lm, dans ce cas-ci)
model <- lm(fmla, data = dframe[split$train,])
# produire des prédictions sur les
# données d'application de ce découpage
dframe$pred.cv[split$app] <- predict(model, newdata = dframe[split$app,])
}
La validation croisée permet d'anticiper la performance d'un modèle entraîné sur l'ensemble des données lorsqu'il sera appliqué à de nouvelles données. Comme pour la séparation entraînement/test, pour une bonne procédure de modélisation, les performances en validation croisée et à l'entraînement devraient être proches.
Le tableau de données mpg, le plan de validation croisée splitPlan et la fonction rmse() ont été préchargés.
Cette activité fait partie du cours
Apprentissage supervisé en R : régression
Instructions de l’exercice
- Exécutez le plan de validation croisée à 3 volets à partir de
splitPlanet placez les prédictions dans la colonnempg$pred.cv.- Utilisez
lm()et la formulecty ~ hwy.
- Utilisez
- Créez un modèle de régression linéaire sur toutes les données
mpg(formulecty ~ hwy) et assignez les prédictions àmpg$pred. - Utilisez
rmse()pour obtenir la racine de l'erreur quadratique moyenne des prédictions du modèle complet (mpg$pred). Rappel :rmse()prend deux arguments, les valeurs prédites et la variable cible réelle. - Obtenez la racine de l'erreur quadratique moyenne des prédictions de validation croisée. Les deux valeurs se ressemblent-elles?
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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
___(___, ___)