Churn Analysis

  • Problem: One of the main problems a company can face is churn. That means the company is losing customers.
  • Goals:
    • Understanding customers' behaviour evolution
    • Predict churn
    • Identify churn reasons
  • Why? Perform specific actions on groups to reduce churn

Technique to solve the business problem

  • Churn refers to an existing customer deciding to end the business relationship.
  • Customer churn is also known as customer attrition, customer turnover or customer defection.
  • Churn analysis aims to divide customers in active, inactive and "about to churn".
  • Churn models predict probability of churn given influencing factors or key factors
  • If action is taken to address the factors that influence churn, the model in turn becomes obsolete and must be rebuilt with new churn data and influencing factors.

Main Concepts

There are two types of churn:

  • Voluntary churn: occurs due to a decision by the customer to switch to another company or service provider
  • Involuntary churn: occurs due to circumstances such as a customer's relocation to a long-term care facility, death, or the relocation to a distant location.

Involuntary reasons for churn are excluded from the analytical models as most of the times can not be influenced. Any company has what we can call a natural churn rate that is unavoidable.

When we analyse churn all customer data is interesting:

  • CRM, device usage, interaction data
  • clickstream data
  • granular credit card, insurance data
  • ...

Companies focus on understanding, predicting, reducing and managing churn.

Reasons for churn

  • The hardest part is to identify reasons for churn. Many companies use NPS.
  • NPS is not enough. We require to determine the importance and weight of the detected factors.
  • This can be done using Structural Modelling Equations (SME) and other predictive modelling techniques.

Implementation Process

  • [BU] Determine business needs: churn evolution, churn prediction, churn reasons
  • [DU] Data Sourcing, Cleaning & Exploration
  • [M] Select specific technique
  • [M] Applied specific technique
  • [E] Analyze results and adjust parameters
  • [D] Present and explain the results

Benefits

This technique provides the following benefits:

  • Analyze and establish churn profiles and identify critical moments
  • Understand the churn causes
  • Combine CLV and churn for profiling
  • Awake inactive customers based on specific marketing actions
  • Retain customers based on specific marketing actions
  • Improve customer experience
  • Predict future customer behaviour

Use cases

This technique is used in different use cases:

  • Churn for Telecom Providers: anticipating subscription cancellations and proposing specific commercial actions to foster loyalty
  • Churn for E-commerce Players: increasing loyalty and client lifetime value by activating personnalized campaigns to "dormant" clients - pushing the right product at the right time through the right channel
  • Churn for Banking & Insurance Companies: predicting life events from behavioral data to anticipate structural changes in the client's consumption profile that may signal churn or upsell / cross-sell opportunities
  • Generic: create alarms (based on churn changes), create churn critical path (when, where, how)
  • Churn applied to employees: in this case we speak about Employee Churn.

How to implement this algorithm using R

Once we know that some users have left the services of our company it is time to understand the evolution of the rest of the customer based on previous data. We can understand this using survival analysis.

# Install packages
install.packages("survival")
install.packages("ggplot2")
if(!require(devtools)) install.packages("devtools")
devtools::install_github("kassambara/survminer")

# Load packages
library(survival) 
library(ggplot2)
library(survminer)

# Load Data
df <- read.csv('data/s9.csv')

# Question: Do we have some insights from data exploration?

# Let's create a survival curve
fit <- survfit(Surv(time, churned) ~ 1, data = df)

# Let's create a graph
ggsurvplot(fit)

# Let's improve the graph
g1 <- ggsurvplot(fit, 
           color = "#2E9FDF", 
           ylim=c(.75,1),
           xlab = 'Days since subscription', 
           ylab = '% Survival')
g1

# Question: what happens?

# Now with two groups (based on gender)
fit2 <- survfit(Surv(time, churned) ~ female, data = df)
ggsurvplot(fit2)

# Let's improve the graph
g2 <- ggsurvplot(fit2, legend = "bottom", 
           legend.title = "Gender",
           conf.int = TRUE,
           pval = TRUE,
           ylim=c(.75,1), lty = 1:2, mark.time = FALSE,
           xlab = 'Days since subscription', ylab = '% Survival',
           legend.labs = c("Male", "Female"))
g2

# We can add the risk table
g3 <- ggsurvplot(fit2, legend = "bottom", 
                 legend.title = "Gender",
                 conf.int = TRUE,
                 pval = TRUE,
                 ylim=c(.75,1), lty = 1:2, mark.time = FALSE,
                 xlab = 'Days since subscription', ylab = '% Survival',
                 legend.labs = c("Male", "Female"),
                 risk.table = TRUE, risk.table.y.text.col = TRUE)
g3

# Question: what happens?

References

results matching ""

    No results matching ""