Carl is a speaker for ODSC East this April 13-17! Be sure to check out his talk, “Fighting Customer Churn With Data,” there!
In this post I’m going to highlight one of the key takeaways from the session I’m planning for ODSC East in April: To understand and reduce customer churn (cancellations) you should use a measure of the unit cost that customers pay. If you are trained in data science, you would call this feature engineering because you are designing the input data to optimize your results. I emphasize analytics and feature engineering to help companies reduce churn because churn reducing tactics require detailed customer measurements for targeting, and a predictive model by itself has limited utility. But you can design data features so that they predict churn in a way that enables business people to understand and act to reduce churn.
Understanding Churn with Simple Customer metrics
In the ODSC session, I’m going to take some examples from a case study with a company called Versature: Versature is a provider of integrated cloud communication services. The image below illustrates the metric cohort churn analysis with simple customer metrics. In the session, I will tell you more about how to understand features relationship to churn with metric cohort analysis (for now you can read about it in this post.) These are the main points:
- Local calls per month – This has a typical relationship to churn in the metric cohort plot: The more calls, the less churn.
- Monthly Recurring Revenue paid by the customer per month – This one is probably not expected: The more customers pay, the less they churn. How does that make sense? If you haven’t done a lot of churn studies this may surprise you. Read on to find out why!
Note: the metric cohort figures show the cohort average metrics as a score (normalized.) Also, the churn rates are shown on a relative scale (with the bottom of the figure fixed at zero churn.)
The ODSC session also contains examples of customer behavior correlation analysis, described in this post. The scatter plot (above) shows that paying more is correlated with making more calls. And customers who make a lot of calls churn a lot less than customers that don’t. So that explains why it looks like customers that pay more churn less – they also make more calls. That may be true but that relationship is not useful for understanding customers’ price sensitivity. Something is missing from this picture…
Customer churn and the unit cost metric
Advanced customer metrics for churn are combinations of simple customer metrics that help you understand the interaction between two behaviors. The best way of combining two metrics is by making a ratio of one metric to another. The example in the last section is a common scenario where you want to use a metric made from a ratio of two other metrics: Something which that ought to cause customers to churn (paying a lot) is correlated with something that is engaging and makes customers stay (making a lot of calls.)
If you take the ratio of the monthly cost to the monthly calls the resulting metric is the cost per call. The relationship of the cost per call metric to customer churn is shown in the picture below: The more the customer pays (per call) the more they churn. This relationship is very strong! A unit cost metric is an excellent way to segment your customers according to the value they receive.
Code for the ratiometric
Below is the SQL that I use to calculate the ratio. Literally I calculate the ratio of two other metrics. The only fancy part is the case statement to check for zeros in the denominator. In the session, I will teach you more about calculating metrics with SQL, but for now, check out my post on Churn Feature Engineering which goes over the basics of calculating Metrics with SQL.
I think that’s all I can fit in a post! To learn more details about the subject, you have to wait for the release of chapter 7 in the e-book of Fighting Churn with Data. (At the time of this writing that chapter is scheduled to be released in e-book form in February 2020…)
SQL to calculating a metric as a ratio of two other metrics:
with num_metric as ( select account_id, metric_time, metric_value as num_value from metric m inner join metric_name n on n.metric_name_id=m.metric_name_id and n.metric_name = 'MRR' and metric_time between '2020-01-01' and '2020-01-31' ), den_metric as ( select account_id, metric_time, metric_value as den_value from metric m inner join metric_name n on n.metric_name_id=m.metric_name_id and n.metric_name = 'Local_Calls' and metric_time between '2020-01-01' and '2020-01-31' ) insert into metric (account_id,metric_time,metric_name_id,metric_value) select d.account_id, d.metric_time, %new_metric_id, case when den_value > 0 then coalesce(num_value,0.0)/den_value else 0 end as metric_value from den_metric d left outer join num_metric n on n.account_id=d.account_id and n.metric_time=d.metric_time
Currently the Chief Data Scientist at Zuora (www.zuora.com), Carl has a PhD from the California Institute of Technology and has first author publications in leading Machine Learning and Neuroscience journals. Before coming to Zuora, he spent most of his post-academic career as a quantitative analyst on Wall Street. Now a data scientist, Carl is currently writing a book about using insights from data to reduce customer churn, to be released in 2020 entitled “Fighting Churn With Data.” You can find more information at www.fight-churn-with-data.com.