Machine Learning для маркетингової аналітики в R
Verena Pflieger
Data Scientist at INWT Statistics
1) Розбийте набір даних на тренувальні та тестові
# Генеруємо випадковий індекс для train і test
# set.seed забезпечує відтворюваність випадкових компонентів
set.seed(534381)
churnData$isTrain <- rbinom(nrow(churnData), 1, 0.66)
train <- subset(churnData, churnData$isTrain == 1)
test <- subset(churnData, churnData$isTrain == 0)
2) Побудуйте модель на тренувальних даних
# Моделювання logitTrainNew
logitTrainNew <- glm( returnCustomer ~ title + newsletter +
websiteDesign + paymentMethod + couponDiscount +
purchaseValue + throughAffiliate +
shippingFees + dvd + blueray + vinyl +
videogameDownload + prodOthers + prodRemitted,
family = binomial, data = train)
# Прогноз на відкладеній вибірці для logitTrainNew
test$predNew <- predict(logitTrainNew, type = "response",
newdata = test)
# Обчислюємо матрицю невідповідностей
confMatrixNew <- confusion.matrix(test$returnCustomer, test$predNew,
threshold = 0.3)
confMatrixNew
# Обчислюємо точність
accuracyNew <- sum(diag(confMatrixNew)) / sum(confMatrixNew)
accuracyNew
obs
pred 0 1
0 11939 2449
1 716 350
0.7951987

Обчислення точності з крос‑валідацією
library(boot)
# Функція точності з threshold = 0.3
Acc03 <- function(r, pi = 0) {
cm <- confusion.matrix(r, pi, threshold = 0.3)
acc <- sum(diag(cm)) / sum(cm)
return(acc)}
# Точність
set.seed(534381)
cv.glm(churnData, logitModelNew, cost = Acc03, K = 6)$delta
0.7943894
| Висновки з Logistic Regression | |
|---|---|
| Ви дізналися... | як прогнозувати відтік клієнтів інтернет‑магазину |
| як використовувати бінарну логістичну регресію для обчислення ймовірностей | |
| що вибір порога має вирішальне значення |
| Висновки з моделі | |
|---|---|
| Ви дізналися... | що клієнти, які підписалися на розсилку, частіше повертаються |
| що клієнти, які використовують купон, рідше повертаються | |
| що клієнти без плати за доставку частіше повертаються | |
| тощо... |
Machine Learning для маркетингової аналітики в R