Validering utanför träningsdata och korsvalidering

Maskininlärning för marknadsanalys i R

Verena Pflieger

Data Scientist at INWT Statistics

Anpassning utanför träningsdata: tränings- och testdata

1) Dela upp datamängden i tränings- och testdata

# Generating random index for training and test set
# set.seed ensures reproducibility of random components
set.seed(534381)

churnData$isTrain <- rbinom(nrow(churnData), 1, 0.66)
train <- subset(churnData, churnData$isTrain == 1)
test <- subset(churnData, churnData$isTrain == 0)
Maskininlärning för marknadsanalys i R

Anpassning utanför träningsdata: modellbygge

2) Bygg en modell baserad på träningsdata

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

# Out-of-sample prediction for logitTrainNew
test$predNew <- predict(logitTrainNew, type = "response",
                        newdata = test)
Maskininlärning för marknadsanalys i R

Noggrannhet utanför träningsdata

# Calculating the confusion matrix
confMatrixNew <- confusion.matrix(test$returnCustomer, test$predNew, 
                 threshold = 0.3)
confMatrixNew

# Calculating the accuracy 
accuracyNew <- sum(diag(confMatrixNew)) / sum(confMatrixNew)
accuracyNew
    obs
pred     0    1
   0 11939 2449
   1   716  350

0.7951987
Maskininlärning för marknadsanalys i R

Korsvalidering: upplägg

Maskininlärning för marknadsanalys i R

Korsvalidering: noggrannhet

Beräkning av korsvaliderad noggrannhet

library(boot)
# Accuracy function with threshold = 0.3
Acc03 <- function(r, pi = 0) {
  cm <- confusion.matrix(r, pi, threshold = 0.3)
  acc <- sum(diag(cm)) / sum(cm)
  return(acc)}
# Accuracy
set.seed(534381)
cv.glm(churnData, logitModelNew, cost = Acc03, K = 6)$delta
0.7943894
Maskininlärning för marknadsanalys i R
Lärdomar från logistisk regression
Du har lärt dig... hur man förutsäger vilka kunder i en nätbutik som sannolikt lämnar
att använda binär logistisk regression för att beräkna sannolikheter
att valet av tröskel är avgörande
Lärdomar från modellen
Du har lärt dig... att kunder som prenumererar på ett nyhetsbrev oftare återvänder
att kunder som använder en rabattkupong mer sällan återvänder
att kunder utan fraktavgifter oftare återvänder
osv...
Maskininlärning för marknadsanalys i R

Sista övningen!

Maskininlärning för marknadsanalys i R

Preparing Video For Download...