The telecommunications industry is fiercely competitive, with customer retention being a pivotal aspect of maintaining a sustainable business model. For Regork, the advent into this arena comes with its unique challenges and opportunities. Retaining existing customers is notably cost-effective compared to attracting new ones, highlighting the significance of understanding and predicting customer churn. This report aims to unravel the patterns that contribute to customer retention and predict future behaviors that may affect Regork’s customer base stability.
Regor’s strategic expansion into telecommunications requires an effective customer retention strategy. The high costs associated with acquiring new customers necessitate a shift in focus towards retaining the existing clientele. The business problem centers on identifying key factors that influence a customer’s decision to stay with or leave Regork Telecom. Recognizing these factors can empower Regork to implement targeted retention strategies that can lead to increased customer loyalty and reduced churn rates.
To tackle this problem, we delved into the
customer_retention.csv dataset, aiming to discern critical
factors influencing customer retention. Our approach was twofold:
Throughout this analysis, we adhered to a robust machine learning protocol, ensuring that our results are both reproducible and reliable.
The culmination of this analysis is anticipated to provide Regork Telecom with actionable insights into customer behavior. By understanding the attributes that contribute to customer churn, Regork can refine its retention strategies, leading to enhanced customer satisfaction and loyalty. Furthermore, our findings can serve as a cornerstone for various departments within Regork, from marketing to finance, aiding in the development of targeted campaigns, risk assessment, and revenue forecasting.
In the ensuing sections, we will outline the technical prerequisites of our analysis, delve into our exploratory data analysis, detail our machine learning methodology, and conclude with strategic recommendations based on our predictive modeling outcomes.
In order to reproduce the results contained within this report you will need to install and load the following packages:
library(tidymodels)
library(tidyverse)
library(baguette)
library(vip)
library(pdp)
library(here)
library(kernlab)
library(ggplot2)
library(ranger)
library(earth)
library(yardstick)
The following data will also need to be stored into the global environment:
df <- read.csv("customer_retention.csv")
df <- mutate(df, Status = factor(Status))
df <- na.omit(df)
Understanding the behavior of Regork Telecom’s customer base and the factors influencing their loyalty is paramount. The following visual analyses shed light on the interplay between demographic characteristics, service usage, and contract preferences, potentially hinting at underlying causes of customer churn.
Investigating the choice of internet service in relation to contract length can offer insights into customer preferences and potential churn risk.
ggplot(df, aes(InternetService)) +
geom_bar(fill = "orange", color = "red") +
facet_wrap(~Contract) +
coord_flip() +
ggtitle("Customer Internet Service and Length of Contract") +
labs(y = "Count of Contract Type", x = "Customer Internet Service")
This visualization indicates that customers with Fiber Optic service predominantly prefer month-to-month contracts, which could suggest a higher churn risk as these contracts allow for greater flexibility to switch providers.
Next, we assess the association between payment methods and contract types to determine if there is a correlation with customer loyalty.
ggplot(df, aes(PaymentMethod)) +
geom_bar(fill = "orange", color = "red") +
facet_wrap(~Contract) +
ggtitle("Payment Method vs. Type of Contract") +
theme(axis.text.x = element_text(angle = 50, hjust = 1)) +
labs(y = "Count of Customers", x = "Payment Method")
The plot reveals that electronic checks are prevalent among month-to-month contracts, suggesting that ease of payment could be an influential factor in contract choice.
The presence of a partner may affect a customer’s decision-making process regarding contract commitment.
ggplot(df, aes(Partner)) +
geom_bar(fill = "orange", color = "red") +
facet_wrap(~Contract) +
ggtitle("Partner vs. Length of Contract") +
labs(y = "Count of Contract Type", x = "Partner")
Interestingly, we observe that customers in longer-term contracts often have a partner, potentially indicating a tendency towards stability in both personal and service commitments.
Lastly, we explore the tenure of customers relative to their contract type, as tenure could be a strong indicator of loyalty and churn.
ggplot(df, aes(Tenure)) +
geom_bar(fill = "blue") +
facet_wrap(~Contract) +
ggtitle("Tenure vs. Type of Contract") +
labs(y = "Count of Customers", x = "Length of Tenure (months)")
The trend observed suggests that longer tenure is associated with a
higher likelihood of being in a one or two-year contract, which aligns
with a lower churn risk.
Through these analyses, patterns start to emerge, painting a picture of how service choices, payment methods, partnership status, and customer tenure intertwine with contract length — a crucial element when considering customer retention strategies.
A predictive model that identifies customers most likely to churn can significantly inform retention strategies at Regork Telecom. We will compare three different modeling approaches to ascertain which best predicts customer churn.
We begin by splitting the dataset into a training set for developing our models and a test set for evaluation.
set.seed(123)
data_split <- initial_split(df, prop = .7, strata = Status)
train_data <- training(data_split)
test_data <- testing(data_split)
Our baseline model is a logistic regression, chosen for its interpretability and simplicity.
set.seed(123)
logistic_kfolds <- vfold_cv(train_data, v = 5, strata = Status)
logistic_reg_model <- logistic_reg() %>%
fit_resamples(Status ~ ., logistic_kfolds) %>%
collect_metrics()
## → A | warning: prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
##
There were issues with some computations A: x1
There were issues with some computations A: x3
There were issues with some computations A: x5
There were issues with some computations A: x5
logistic_reg_model
## # A tibble: 2 × 6
## .metric .estimator mean n std_err .config
## <chr> <chr> <dbl> <int> <dbl> <chr>
## 1 accuracy binary 0.799 5 0.00401 Preprocessor1_Model1
## 2 roc_auc binary 0.845 5 0.00521 Preprocessor1_Model1
The logistic regression model shows reasonable performance with an AUC of r logistic_reg_model\(roc_auc\)mean
We also consider a MARS model for its flexibility in capturing non-linear relationships.
set.seed(123)
mars_split <- initial_split(df, prop = .7, strata = Status)
mars_train <- training(mars_split)
mars_test <- testing(mars_split)
mars_recipe <- recipe(Status ~ ., data = mars_train)
mars_kfolds <- vfold_cv(mars_train, v = 5, strata = Status)
mars_mod <- mars(num_terms = tune(), prod_degree = tune()) %>%
set_mode("classification")
mars_grid <- grid_regular(num_terms(range = c(1,30)), prod_degree(), levels = 50)
mars_wf <- workflow() %>% add_recipe(mars_recipe) %>% add_model(mars_mod)
mars_results <- mars_wf %>% tune_grid(resamples = mars_kfolds, grid = mars_grid)
mars_results %>%
collect_metrics() %>%
filter(.metric == "roc_auc") %>%
arrange(desc(mean))
## # A tibble: 60 × 8
## num_terms prod_degree .metric .estimator mean n std_err .config
## <int> <int> <chr> <chr> <dbl> <int> <dbl> <chr>
## 1 18 1 roc_auc binary 0.851 5 0.00566 Preprocessor1_M…
## 2 19 1 roc_auc binary 0.851 5 0.00566 Preprocessor1_M…
## 3 20 1 roc_auc binary 0.851 5 0.00566 Preprocessor1_M…
## 4 21 1 roc_auc binary 0.851 5 0.00566 Preprocessor1_M…
## 5 22 1 roc_auc binary 0.851 5 0.00566 Preprocessor1_M…
## 6 23 1 roc_auc binary 0.851 5 0.00566 Preprocessor1_M…
## 7 24 1 roc_auc binary 0.851 5 0.00566 Preprocessor1_M…
## 8 25 1 roc_auc binary 0.851 5 0.00566 Preprocessor1_M…
## 9 26 1 roc_auc binary 0.851 5 0.00566 Preprocessor1_M…
## 10 27 1 roc_auc binary 0.851 5 0.00566 Preprocessor1_M…
## # ℹ 50 more rows
The MARS model outperforms logistic regression with a higher AUC, indicating it captures the complexity of customer churn more effectively.
Lastly, we employ a random forest model for its robustness and ability to handle interactions.
set.seed(123)
rf_recipe <- recipe(Status ~ ., data = train_data)
rf_mod <- rand_forest(mode = "classification", trees = tune(), mtry = tune(), min_n = tune()) %>%
set_engine("ranger", importance = "impurity")
rf_hyper_grid <- grid_regular(trees(range = c(100, 1000)), mtry(range = c(1, 50)), min_n(range = c(1, 20)), levels = 5)
rf_kfold <- vfold_cv(train_data, v = 5, strata = Status)
rf_results <- tune_grid(rf_mod, rf_recipe, resamples = rf_kfold, grid = rf_hyper_grid)
## → A | warning: 25 columns were requested but there were 19 predictors in the data. 19 will be used.
##
There were issues with some computations A: x1
There were issues with some computations A: x2
There were issues with some computations A: x3
There were issues with some computations A: x4
There were issues with some computations A: x5
→ B | warning: 37 columns were requested but there were 19 predictors in the data. 19 will be used.
## There were issues with some computations A: x5
There were issues with some computations A: x5 B: x1
There were issues with some computations A: x5 B: x2
There were issues with some computations A: x5 B: x3
There were issues with some computations A: x5 B: x4
There were issues with some computations A: x5 B: x5
→ C | warning: 50 columns were requested but there were 19 predictors in the data. 19 will be used.
## There were issues with some computations A: x5 B: x5
There were issues with some computations A: x5 B: x5 C: x1
There were issues with some computations A: x5 B: x5 C: x2
There were issues with some computations A: x5 B: x5 C: x3
There were issues with some computations A: x5 B: x5 C: x4
There were issues with some computations A: x5 B: x5 C: x5
There were issues with some computations A: x6 B: x5 C: x5
There were issues with some computations A: x7 B: x5 C: x5
There were issues with some computations A: x8 B: x5 C: x5
There were issues with some computations A: x9 B: x5 C: x5
There were issues with some computations A: x10 B: x5 C: x5
There were issues with some computations A: x10 B: x6 C: x5
There were issues with some computations A: x10 B: x7 C: x5
There were issues with some computations A: x10 B: x8 C: x5
There were issues with some computations A: x10 B: x9 C: x5
There were issues with some computations A: x10 B: x10 C: x5
There were issues with some computations A: x10 B: x10 C: x6
There were issues with some computations A: x10 B: x10 C: x7
There were issues with some computations A: x10 B: x10 C: x8
There were issues with some computations A: x10 B: x10 C: x9
There were issues with some computations A: x10 B: x10 C: x10
There were issues with some computations A: x11 B: x10 C: x10
There were issues with some computations A: x12 B: x10 C: x10
There were issues with some computations A: x13 B: x10 C: x10
There were issues with some computations A: x14 B: x10 C: x10
There were issues with some computations A: x15 B: x10 C: x10
There were issues with some computations A: x15 B: x11 C: x10
There were issues with some computations A: x15 B: x12 C: x10
There were issues with some computations A: x15 B: x13 C: x10
There were issues with some computations A: x15 B: x14 C: x10
There were issues with some computations A: x15 B: x15 C: x10
There were issues with some computations A: x15 B: x15 C: x11
There were issues with some computations A: x15 B: x15 C: x12
There were issues with some computations A: x15 B: x15 C: x13
There were issues with some computations A: x15 B: x15 C: x14
There were issues with some computations A: x15 B: x15 C: x15
There were issues with some computations A: x16 B: x15 C: x15
There were issues with some computations A: x17 B: x15 C: x15
There were issues with some computations A: x18 B: x15 C: x15
There were issues with some computations A: x19 B: x15 C: x15
There were issues with some computations A: x20 B: x15 C: x15
There were issues with some computations A: x20 B: x16 C: x15
There were issues with some computations A: x20 B: x17 C: x15
There were issues with some computations A: x20 B: x18 C: x15
There were issues with some computations A: x20 B: x19 C: x15
There were issues with some computations A: x20 B: x20 C: x15
There were issues with some computations A: x20 B: x20 C: x16
There were issues with some computations A: x20 B: x20 C: x17
There were issues with some computations A: x20 B: x20 C: x18
There were issues with some computations A: x20 B: x20 C: x19
There were issues with some computations A: x20 B: x20 C: x20
There were issues with some computations A: x21 B: x20 C: x20
There were issues with some computations A: x22 B: x20 C: x20
There were issues with some computations A: x23 B: x20 C: x20
There were issues with some computations A: x24 B: x20 C: x20
There were issues with some computations A: x25 B: x20 C: x20
There were issues with some computations A: x25 B: x21 C: x20
There were issues with some computations A: x25 B: x22 C: x20
There were issues with some computations A: x25 B: x23 C: x20
There were issues with some computations A: x25 B: x24 C: x20
There were issues with some computations A: x25 B: x25 C: x20
There were issues with some computations A: x25 B: x25 C: x21
There were issues with some computations A: x25 B: x25 C: x22
There were issues with some computations A: x25 B: x25 C: x23
There were issues with some computations A: x25 B: x25 C: x24
There were issues with some computations A: x25 B: x25 C: x25
There were issues with some computations A: x26 B: x25 C: x25
There were issues with some computations A: x27 B: x25 C: x25
There were issues with some computations A: x28 B: x25 C: x25
There were issues with some computations A: x29 B: x25 C: x25
There were issues with some computations A: x30 B: x25 C: x25
There were issues with some computations A: x30 B: x26 C: x25
There were issues with some computations A: x30 B: x27 C: x25
There were issues with some computations A: x30 B: x28 C: x25
There were issues with some computations A: x30 B: x29 C: x25
There were issues with some computations A: x30 B: x30 C: x25
There were issues with some computations A: x30 B: x30 C: x26
There were issues with some computations A: x30 B: x30 C: x27
There were issues with some computations A: x30 B: x30 C: x28
There were issues with some computations A: x30 B: x30 C: x29
There were issues with some computations A: x30 B: x30 C: x30
There were issues with some computations A: x31 B: x30 C: x30
There were issues with some computations A: x32 B: x30 C: x30
There were issues with some computations A: x33 B: x30 C: x30
There were issues with some computations A: x34 B: x30 C: x30
There were issues with some computations A: x35 B: x30 C: x30
There were issues with some computations A: x35 B: x31 C: x30
There were issues with some computations A: x35 B: x32 C: x30
There were issues with some computations A: x35 B: x33 C: x30
There were issues with some computations A: x35 B: x34 C: x30
There were issues with some computations A: x35 B: x35 C: x30
There were issues with some computations A: x35 B: x35 C: x31
There were issues with some computations A: x35 B: x35 C: x32
There were issues with some computations A: x35 B: x35 C: x33
There were issues with some computations A: x35 B: x35 C: x34
There were issues with some computations A: x35 B: x35 C: x35
There were issues with some computations A: x36 B: x35 C: x35
There were issues with some computations A: x37 B: x35 C: x35
There were issues with some computations A: x38 B: x35 C: x35
There were issues with some computations A: x39 B: x35 C: x35
There were issues with some computations A: x40 B: x35 C: x35
There were issues with some computations A: x40 B: x36 C: x35
There were issues with some computations A: x40 B: x37 C: x35
There were issues with some computations A: x40 B: x38 C: x35
There were issues with some computations A: x40 B: x39 C: x35
There were issues with some computations A: x40 B: x40 C: x35
There were issues with some computations A: x40 B: x40 C: x36
There were issues with some computations A: x40 B: x40 C: x37
There were issues with some computations A: x40 B: x40 C: x38
There were issues with some computations A: x40 B: x40 C: x39
There were issues with some computations A: x40 B: x40 C: x40
There were issues with some computations A: x41 B: x40 C: x40
There were issues with some computations A: x42 B: x40 C: x40
There were issues with some computations A: x43 B: x40 C: x40
There were issues with some computations A: x44 B: x40 C: x40
There were issues with some computations A: x45 B: x40 C: x40
There were issues with some computations A: x45 B: x41 C: x40
There were issues with some computations A: x45 B: x42 C: x40
There were issues with some computations A: x45 B: x43 C: x40
There were issues with some computations A: x45 B: x44 C: x40
There were issues with some computations A: x45 B: x45 C: x40
There were issues with some computations A: x45 B: x45 C: x41
There were issues with some computations A: x45 B: x45 C: x42
There were issues with some computations A: x45 B: x45 C: x43
There were issues with some computations A: x45 B: x45 C: x44
There were issues with some computations A: x45 B: x45 C: x45
There were issues with some computations A: x46 B: x45 C: x45
There were issues with some computations A: x47 B: x45 C: x45
There were issues with some computations A: x48 B: x45 C: x45
There were issues with some computations A: x49 B: x45 C: x45
There were issues with some computations A: x50 B: x45 C: x45
There were issues with some computations A: x50 B: x46 C: x45
There were issues with some computations A: x50 B: x47 C: x45
There were issues with some computations A: x50 B: x48 C: x45
There were issues with some computations A: x50 B: x49 C: x45
There were issues with some computations A: x50 B: x50 C: x45
There were issues with some computations A: x50 B: x50 C: x46
There were issues with some computations A: x50 B: x50 C: x47
There were issues with some computations A: x50 B: x50 C: x48
There were issues with some computations A: x50 B: x50 C: x49
There were issues with some computations A: x50 B: x50 C: x50
There were issues with some computations A: x51 B: x50 C: x50
There were issues with some computations A: x52 B: x50 C: x50
There were issues with some computations A: x53 B: x50 C: x50
There were issues with some computations A: x54 B: x50 C: x50
There were issues with some computations A: x55 B: x50 C: x50
There were issues with some computations A: x55 B: x51 C: x50
There were issues with some computations A: x55 B: x52 C: x50
There were issues with some computations A: x55 B: x53 C: x50
There were issues with some computations A: x55 B: x54 C: x50
There were issues with some computations A: x55 B: x55 C: x50
There were issues with some computations A: x55 B: x55 C: x51
There were issues with some computations A: x55 B: x55 C: x52
There were issues with some computations A: x55 B: x55 C: x53
There were issues with some computations A: x55 B: x55 C: x54
There were issues with some computations A: x55 B: x55 C: x55
There were issues with some computations A: x56 B: x55 C: x55
There were issues with some computations A: x57 B: x55 C: x55
There were issues with some computations A: x58 B: x55 C: x55
There were issues with some computations A: x59 B: x55 C: x55
There were issues with some computations A: x60 B: x55 C: x55
There were issues with some computations A: x60 B: x56 C: x55
There were issues with some computations A: x60 B: x57 C: x55
There were issues with some computations A: x60 B: x58 C: x55
There were issues with some computations A: x60 B: x59 C: x55
There were issues with some computations A: x60 B: x60 C: x55
There were issues with some computations A: x60 B: x60 C: x56
There were issues with some computations A: x60 B: x60 C: x57
There were issues with some computations A: x60 B: x60 C: x58
There were issues with some computations A: x60 B: x60 C: x59
There were issues with some computations A: x60 B: x60 C: x60
There were issues with some computations A: x61 B: x60 C: x60
There were issues with some computations A: x62 B: x60 C: x60
There were issues with some computations A: x63 B: x60 C: x60
There were issues with some computations A: x64 B: x60 C: x60
There were issues with some computations A: x65 B: x60 C: x60
There were issues with some computations A: x65 B: x61 C: x60
There were issues with some computations A: x65 B: x62 C: x60
There were issues with some computations A: x65 B: x63 C: x60
There were issues with some computations A: x65 B: x64 C: x60
There were issues with some computations A: x65 B: x65 C: x60
There were issues with some computations A: x65 B: x65 C: x61
There were issues with some computations A: x65 B: x65 C: x62
There were issues with some computations A: x65 B: x65 C: x63
There were issues with some computations A: x65 B: x65 C: x64
There were issues with some computations A: x65 B: x65 C: x65
There were issues with some computations A: x66 B: x65 C: x65
There were issues with some computations A: x67 B: x65 C: x65
There were issues with some computations A: x68 B: x65 C: x65
There were issues with some computations A: x69 B: x65 C: x65
There were issues with some computations A: x70 B: x65 C: x65
There were issues with some computations A: x70 B: x66 C: x65
There were issues with some computations A: x70 B: x67 C: x65
There were issues with some computations A: x70 B: x68 C: x65
There were issues with some computations A: x70 B: x69 C: x65
There were issues with some computations A: x70 B: x70 C: x65
There were issues with some computations A: x70 B: x70 C: x66
There were issues with some computations A: x70 B: x70 C: x67
There were issues with some computations A: x70 B: x70 C: x68
There were issues with some computations A: x70 B: x70 C: x69
There were issues with some computations A: x70 B: x70 C: x70
There were issues with some computations A: x71 B: x70 C: x70
There were issues with some computations A: x72 B: x70 C: x70
There were issues with some computations A: x73 B: x70 C: x70
There were issues with some computations A: x74 B: x70 C: x70
There were issues with some computations A: x75 B: x70 C: x70
There were issues with some computations A: x75 B: x71 C: x70
There were issues with some computations A: x75 B: x72 C: x70
There were issues with some computations A: x75 B: x73 C: x70
There were issues with some computations A: x75 B: x74 C: x70
There were issues with some computations A: x75 B: x75 C: x70
There were issues with some computations A: x75 B: x75 C: x71
There were issues with some computations A: x75 B: x75 C: x72
There were issues with some computations A: x75 B: x75 C: x73
There were issues with some computations A: x75 B: x75 C: x74
There were issues with some computations A: x75 B: x75 C: x75
There were issues with some computations A: x76 B: x75 C: x75
There were issues with some computations A: x77 B: x75 C: x75
There were issues with some computations A: x78 B: x75 C: x75
There were issues with some computations A: x79 B: x75 C: x75
There were issues with some computations A: x80 B: x75 C: x75
There were issues with some computations A: x80 B: x76 C: x75
There were issues with some computations A: x80 B: x77 C: x75
There were issues with some computations A: x80 B: x78 C: x75
There were issues with some computations A: x80 B: x79 C: x75
There were issues with some computations A: x80 B: x80 C: x75
There were issues with some computations A: x80 B: x80 C: x76
There were issues with some computations A: x80 B: x80 C: x77
There were issues with some computations A: x80 B: x80 C: x78
There were issues with some computations A: x80 B: x80 C: x79
There were issues with some computations A: x80 B: x80 C: x80
There were issues with some computations A: x81 B: x80 C: x80
There were issues with some computations A: x82 B: x80 C: x80
There were issues with some computations A: x83 B: x80 C: x80
There were issues with some computations A: x84 B: x80 C: x80
There were issues with some computations A: x85 B: x80 C: x80
There were issues with some computations A: x85 B: x81 C: x80
There were issues with some computations A: x85 B: x82 C: x80
There were issues with some computations A: x85 B: x83 C: x80
There were issues with some computations A: x85 B: x84 C: x80
There were issues with some computations A: x85 B: x85 C: x80
There were issues with some computations A: x85 B: x85 C: x81
There were issues with some computations A: x85 B: x85 C: x82
There were issues with some computations A: x85 B: x85 C: x83
There were issues with some computations A: x85 B: x85 C: x84
There were issues with some computations A: x85 B: x85 C: x85
There were issues with some computations A: x86 B: x85 C: x85
There were issues with some computations A: x87 B: x85 C: x85
There were issues with some computations A: x88 B: x85 C: x85
There were issues with some computations A: x89 B: x85 C: x85
There were issues with some computations A: x90 B: x85 C: x85
There were issues with some computations A: x90 B: x86 C: x85
There were issues with some computations A: x90 B: x87 C: x85
There were issues with some computations A: x90 B: x88 C: x85
There were issues with some computations A: x90 B: x89 C: x85
There were issues with some computations A: x90 B: x90 C: x85
There were issues with some computations A: x90 B: x90 C: x86
There were issues with some computations A: x90 B: x90 C: x87
There were issues with some computations A: x90 B: x90 C: x88
There were issues with some computations A: x90 B: x90 C: x89
There were issues with some computations A: x90 B: x90 C: x90
There were issues with some computations A: x91 B: x90 C: x90
There were issues with some computations A: x92 B: x90 C: x90
There were issues with some computations A: x93 B: x90 C: x90
There were issues with some computations A: x94 B: x90 C: x90
There were issues with some computations A: x95 B: x90 C: x90
There were issues with some computations A: x95 B: x91 C: x90
There were issues with some computations A: x95 B: x92 C: x90
There were issues with some computations A: x95 B: x93 C: x90
There were issues with some computations A: x95 B: x94 C: x90
There were issues with some computations A: x95 B: x95 C: x90
There were issues with some computations A: x95 B: x95 C: x91
There were issues with some computations A: x95 B: x95 C: x92
There were issues with some computations A: x95 B: x95 C: x93
There were issues with some computations A: x95 B: x95 C: x94
There were issues with some computations A: x95 B: x95 C: x95
There were issues with some computations A: x96 B: x95 C: x95
There were issues with some computations A: x97 B: x95 C: x95
There were issues with some computations A: x98 B: x95 C: x95
There were issues with some computations A: x99 B: x95 C: x95
There were issues with some computations A: x100 B: x95 C: x95
There were issues with some computations A: x100 B: x96 C: x95
There were issues with some computations A: x100 B: x97 C: x95
There were issues with some computations A: x100 B: x98 C: x95
There were issues with some computations A: x100 B: x99 C: x95
There were issues with some computations A: x100 B: x100 C: x95
There were issues with some computations A: x100 B: x100 C: x96
There were issues with some computations A: x100 B: x100 C: x97
There were issues with some computations A: x100 B: x100 C: x98
There were issues with some computations A: x100 B: x100 C: x99
There were issues with some computations A: x100 B: x100 C: x100
There were issues with some computations A: x101 B: x100 C: x100
There were issues with some computations A: x102 B: x100 C: x100
There were issues with some computations A: x103 B: x100 C: x100
There were issues with some computations A: x104 B: x100 C: x100
There were issues with some computations A: x105 B: x100 C: x100
There were issues with some computations A: x105 B: x101 C: x100
There were issues with some computations A: x105 B: x102 C: x100
There were issues with some computations A: x105 B: x103 C: x100
There were issues with some computations A: x105 B: x104 C: x100
There were issues with some computations A: x105 B: x105 C: x100
There were issues with some computations A: x105 B: x105 C: x101
There were issues with some computations A: x105 B: x105 C: x102
There were issues with some computations A: x105 B: x105 C: x103
There were issues with some computations A: x105 B: x105 C: x104
There were issues with some computations A: x105 B: x105 C: x105
There were issues with some computations A: x106 B: x105 C: x105
There were issues with some computations A: x107 B: x105 C: x105
There were issues with some computations A: x108 B: x105 C: x105
There were issues with some computations A: x109 B: x105 C: x105
There were issues with some computations A: x110 B: x105 C: x105
There were issues with some computations A: x110 B: x106 C: x105
There were issues with some computations A: x110 B: x107 C: x105
There were issues with some computations A: x110 B: x108 C: x105
There were issues with some computations A: x110 B: x109 C: x105
There were issues with some computations A: x110 B: x110 C: x105
There were issues with some computations A: x110 B: x110 C: x106
There were issues with some computations A: x110 B: x110 C: x107
There were issues with some computations A: x110 B: x110 C: x108
There were issues with some computations A: x110 B: x110 C: x109
There were issues with some computations A: x110 B: x110 C: x110
There were issues with some computations A: x111 B: x110 C: x110
There were issues with some computations A: x112 B: x110 C: x110
There were issues with some computations A: x113 B: x110 C: x110
There were issues with some computations A: x114 B: x110 C: x110
There were issues with some computations A: x115 B: x110 C: x110
There were issues with some computations A: x115 B: x111 C: x110
There were issues with some computations A: x115 B: x112 C: x110
There were issues with some computations A: x115 B: x113 C: x110
There were issues with some computations A: x115 B: x114 C: x110
There were issues with some computations A: x115 B: x115 C: x110
There were issues with some computations A: x115 B: x115 C: x111
There were issues with some computations A: x115 B: x115 C: x112
There were issues with some computations A: x115 B: x115 C: x113
There were issues with some computations A: x115 B: x115 C: x114
There were issues with some computations A: x115 B: x115 C: x115
There were issues with some computations A: x116 B: x115 C: x115
There were issues with some computations A: x117 B: x115 C: x115
There were issues with some computations A: x118 B: x115 C: x115
There were issues with some computations A: x119 B: x115 C: x115
There were issues with some computations A: x120 B: x115 C: x115
There were issues with some computations A: x120 B: x116 C: x115
There were issues with some computations A: x120 B: x117 C: x115
There were issues with some computations A: x120 B: x118 C: x115
There were issues with some computations A: x120 B: x119 C: x115
There were issues with some computations A: x120 B: x120 C: x115
There were issues with some computations A: x120 B: x120 C: x116
There were issues with some computations A: x120 B: x120 C: x117
There were issues with some computations A: x120 B: x120 C: x118
There were issues with some computations A: x120 B: x120 C: x119
There were issues with some computations A: x120 B: x120 C: x120
There were issues with some computations A: x121 B: x120 C: x120
There were issues with some computations A: x122 B: x120 C: x120
There were issues with some computations A: x123 B: x120 C: x120
There were issues with some computations A: x124 B: x120 C: x120
There were issues with some computations A: x125 B: x120 C: x120
There were issues with some computations A: x125 B: x121 C: x120
There were issues with some computations A: x125 B: x122 C: x120
There were issues with some computations A: x125 B: x123 C: x120
There were issues with some computations A: x125 B: x124 C: x120
There were issues with some computations A: x125 B: x125 C: x120
There were issues with some computations A: x125 B: x125 C: x121
There were issues with some computations A: x125 B: x125 C: x122
There were issues with some computations A: x125 B: x125 C: x123
There were issues with some computations A: x125 B: x125 C: x124
There were issues with some computations A: x125 B: x125 C: x125
There were issues with some computations A: x125 B: x125 C: x125
rf_best <- select_best(rf_results, metric = "roc_auc")
rf_best
## # A tibble: 1 × 4
## mtry trees min_n .config
## <int> <int> <int> <chr>
## 1 1 550 1 Preprocessor1_Model003
After tuning, the random forest model yields a competitive AUC and we select the best hyperparameters accordingly.
Based on our machine learning analysis, we’ve identified several key factors that influence customer retention significantly:
Given these insights, a multifaceted incentive scheme can be introduced:
Our analysis, yielding an average model AUC around 0.85, suggests that the predictive models are robust and provide a solid foundation for making data-driven decisions in Regork’s telecommunications venture. By focusing on the key predictors of churn identified through our analysis, Regork can implement targeted strategies to improve customer retention and overall satisfaction.
While our models are effective, continuing to refine them with more granular demographic and usage data could reveal deeper insights, leading to even more tailored strategies. Additionally, further exploration into customer satisfaction and competitive analysis could enhance our understanding of churn drivers.