Валидация на отложенной выборке и кросс-валидация

Машинное обучение для маркетинговой аналитики на R

Verena Pflieger

Data Scientist at INWT Statistics

Качество на отложенной выборке: обучающая и тестовая выборки

1) Разделите набор данных на обучающую и тестовую выборки

# 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)
Машинное обучение для маркетинговой аналитики на R

Качество на отложенной выборке: построение модели

2) Постройте модель на обучающих данных

# 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)
Машинное обучение для маркетинговой аналитики на R

Точность на отложенной выборке

# 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
Машинное обучение для маркетинговой аналитики на R

Кросс-валидация: настройка

Машинное обучение для маркетинговой аналитики на R

Кросс-валидация: точность

Вычисление точности с помощью кросс-валидации

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
Машинное обучение для маркетинговой аналитики на R
Выводы: логистическая регрессия
Вы узнали... как выявлять клиентов интернет-магазина, склонных к оттоку
как использовать бинарную логистическую регрессию для расчёта вероятностей
что выбор порогового значения имеет ключевое значение
Выводы из модели
Вы узнали... что клиенты, подписавшиеся на рассылку, чаще возвращаются
что клиенты, использующие купон, реже возвращаются
что клиенты без платной доставки чаще возвращаются
и т.д.
Машинное обучение для маркетинговой аналитики на R

Последнее упражнение!

Машинное обучение для маркетинговой аналитики на R

Preparing Video For Download...