Validation hors échantillon et validation croisée

Machine Learning for Marketing Analytics in R

Verena Pflieger

Data Scientist at INWT Statistics

Ajustement hors échantillon : données d'entraînement et de test

1) Diviser l'ensemble de données en entraînement et test

# Générer un index aléatoire pour les ensembles d'entraînement et de test
# set.seed assure la reproductibilité des composantes aléatoires
set.seed(534381)

churnData$isTrain <- rbinom(nrow(churnData), 1, 0.66)
train <- subset(churnData, churnData$isTrain == 1)
test <- subset(churnData, churnData$isTrain == 0)
Machine Learning for Marketing Analytics in R

Ajustement hors échantillon : construire le modèle

2) Construire un modèle à partir des données d'entraînement

# Modéliser logitTrainNew
logitTrainNew <- glm( returnCustomer ~ title + newsletter + 
                     websiteDesign + paymentMethod + couponDiscount +
                     purchaseValue + throughAffiliate + 
                     shippingFees + dvd + blueray + vinyl + 
                     videogameDownload + prodOthers + prodRemitted,
                     family = binomial, data = train)

# Prédiction hors échantillon pour logitTrainNew
test$predNew <- predict(logitTrainNew, type = "response",
                        newdata = test)
Machine Learning for Marketing Analytics in R

Justesse hors échantillon

# Calculer la matrice de confusion
confMatrixNew <- confusion.matrix(test$returnCustomer, test$predNew, 
                 threshold = 0.3)
confMatrixNew

# Calculer la justesse (accuracy)
accuracyNew <- sum(diag(confMatrixNew)) / sum(confMatrixNew)
accuracyNew
    obs
pred     0    1
   0 11939 2449
   1   716  350

0.7951987
Machine Learning for Marketing Analytics in R

Validation croisée : configuration

Machine Learning for Marketing Analytics in R

Validation croisée : justesse

Calcul de la justesse avec validation croisée

library(boot)
# Fonction de justesse avec threshold = 0.3
Acc03 <- function(r, pi = 0) {
  cm <- confusion.matrix(r, pi, threshold = 0.3)
  acc <- sum(diag(cm)) / sum(cm)
  return(acc)}
# Justesse
set.seed(534381)
cv.glm(churnData, logitModelNew, cost = Acc03, K = 6)$delta
0.7943894
Machine Learning for Marketing Analytics in R
À retenir : régression logistique
Vous avez appris… à prédire les clients d'une boutique en ligne susceptibles d'abandonner
à utiliser une régression logistique binaire pour calculer des probabilités
que le choix du seuil est crucial
À retenir : le modèle
Vous avez appris… que les clients abonnés à l'infolettre reviennent plus souvent
que les clients utilisant un coupon reviennent moins souvent
que les clients sans frais d'expédition reviennent plus souvent
etc.
Machine Learning for Marketing Analytics in R

Dernier exercice !

Machine Learning for Marketing Analytics in R

Preparing Video For Download...