Évaluer l'ajustement du modèle hors échantillon
Vous savez désormais qu'il est plus pertinent d'examiner l'ajustement hors échantillon que l'ajustement en échantillon. Dans cet exercice, vous allez donc définir une mesure de précision hors échantillon.
Avant cela, vous devrez effectuer quelques étapes préparatoires. Reprenez defaultData. logitModelNew est déjà chargé dans votre environnement.
Gardez à l'esprit que, pour une analyse complète, vous devriez toujours comparer plusieurs modèles candidats en utilisant aussi (et surtout) des données hors échantillon.
La précision en échantillon – avec le seuil optimal de 0,3 – est de 0.7922901.
Assurez-vous de comprendre s'il y a du surapprentissage (overfitting).
Cet exercice fait partie du cours
<cours>Machine Learning for Marketing Analytics in R</cours>Instructions de l’exercice
Commencez par diviser aléatoirement l'ensemble de données en un ensemble d'entraînement et un ensemble de test. L'ensemble d'entraînement doit contenir 2/3 des données au total.
Ensuite, ajustez rapidement le modèle et nommez-le
logitTrainNew. Utilisez la formule fournie.Réalisez des prédictions sur l'ensemble de test, puis calculez la précision hors échantillon à l'aide d'une matrice de confusion. Notez que
SDMToolsne peut plus être téléchargé depuis CRAN. Sur votre ordinateur personnel, installez-le plutôt viaremotes::install_version("SDMTools", "1.1-221.2").Comparez la précision hors échantillon à la valeur en échantillon indiquée ci-dessus.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Split data in train and test set
set.seed(534381)
defaultData$isTrain <- rbinom(nrow(defaultData), 1, 0.66)
train <- subset(defaultData, ___ == 1)
test <- subset(defaultData, ___ == 0)
logitTrainNew <- glm(formulaLogit, family = binomial, data = ___) # Modeling
test$predNew <- predict(logitTrainNew, type = "response", newdata = ___) # Predictions
# Out-of-sample confusion matrix and accuracy
confMatrixModelNew <- confusion.matrix(___, ___, threshold = 0.3)
sum(diag(confMatrixModelNew)) / sum(confMatrixModelNew) # Compare this value to the in-sample accuracy