Validation croisée Leave-One-Out dans R (avec exemples)
Pour évaluer les performances d’un modèle sur un ensemble de données, nous devons mesurer dans quelle mesure les prédictions faites par le modèle correspondent aux données observées.
Une méthode couramment utilisée pour ce faire est connue sous le nom de validation croisée Leave-One-Out (LOOCV) , qui utilise l’approche suivante :
1. Divisez un ensemble de données en un ensemble de formation et un ensemble de test, en utilisant toutes les observations sauf une dans le cadre de l’ensemble de formation.
2. Créez un modèle en utilisant uniquement les données de l’ensemble de formation.
3. Utilisez le modèle pour prédire la valeur de réponse de l’observation exclue du modèle et calculez l’erreur quadratique moyenne (MSE).
4. Répétez ce processus n fois. Calculez le MSE du test comme étant la moyenne de tous les MSE du test.
Le moyen le plus simple d’exécuter LOOCV dans R consiste à utiliser la fonction trainControl() de la bibliothèque caret dans R.
Ce didacticiel fournit un exemple rapide de la façon d’utiliser cette fonction pour effectuer LOOCV pour un modèle donné dans R.
Exemple : validation croisée Leave-One-Out dans R
Supposons que nous ayons l’ensemble de données suivant dans R :
#create data frame df <- data.frame(y=c(6, 8, 12, 14, 14, 15, 17, 22, 24, 23), x1=c(2, 5, 4, 3, 4, 6, 7, 5, 8, 9), x2=c(14, 12, 12, 13, 7, 8, 7, 4, 6, 5)) #view data frame df y x1 x2 6 2 14 8 5 12 12 4 12 14 3 13 14 4 7 15 6 8 17 7 7 22 5 4 24 8 6 23 9 5
Le code suivant montre comment ajuster un modèle de régression linéaire multiple à cet ensemble de données dans R et effectuer LOOCV pour évaluer les performances du modèle :
library(caret) #specify the cross-validation method ctrl <- trainControl(method = "LOOCV") #fit a regression model and use LOOCV to evaluate performance model <- train(y ~ x1 + x2, data = df, method = "lm", trControl = ctrl) #view summary of LOOCV print(model) Linear Regression 10 samples 2 predictor No pre-processing Resampling: Leave-One-Out Cross-Validation Summary of sample sizes: 9, 9, 9, 9, 9, 9, ... Resampling results: RMSE Rsquared MAE 3.619456 0.6186766 3.146155 Tuning parameter 'intercept' was held constant at a value of TRUE
Voici comment interpréter le résultat :
- 10 échantillons différents ont été utilisés pour construire 10 modèles. Chaque modèle utilisait 2 variables prédictives.
- Aucun prétraitement n’a eu lieu. Autrement dit, nous n’avons en aucun cas mis à l’échelle les données avant d’ajuster les modèles.
- La méthode de rééchantillonnage que nous avons utilisée pour générer les 10 échantillons était la validation croisée Leave-One-Out.
- La taille de l’échantillon pour chaque ensemble de formation était de 9.
- RMSE : erreur quadratique moyenne. Celui-ci mesure la différence moyenne entre les prédictions faites par le modèle et les observations réelles. Plus le RMSE est bas, plus un modèle peut prédire avec précision les observations réelles.
- Rsquared : Il s’agit d’une mesure de la corrélation entre les prédictions faites par le modèle et les observations réelles. Plus le R au carré est élevé, plus un modèle peut prédire avec précision les observations réelles.
- MAE : L’erreur absolue moyenne. Il s’agit de la différence absolue moyenne entre les prédictions faites par le modèle et les observations réelles. Plus le MAE est bas, plus un modèle peut prédire avec précision les observations réelles.
Chacune des trois mesures fournies dans le résultat (RMSE, R-carré et MAE) nous donne une idée des performances du modèle sur des données inédites.
En pratique, nous ajustons généralement plusieurs modèles différents et comparons les trois métriques fournies par les résultats présentés ici pour décider quel modèle produit les taux d’erreur de test les plus faibles et constitue donc le meilleur modèle à utiliser.