When should I use this model?
This model helps you use transactional (i.e. purchase) data to score your customers on the probability that they have churned. This is traditionally most helpful for e-commerce companies who have frequent repeat purchasers.
Traditionally, very simple rules been used to used to decide whether a customer is still 'alive', with businesses using the same rule for all the customers. However, to increase retention, rules must usually be set on a per-customer basis. For instance, consider a customer who bought from you every day for three weeks straight, and we haven’t heard from them in months. What are the chances they are still “alive”? Pretty small. On the other hand, a customer who historically buys from you once a quarter, and bought last quarter, is likely still alive.
Companies often use the output of this model to target winback offers to at-risk customers, without cannibalising margin by sending offers to customers who haven't churned.
As an added bonus, provided that you have access to the value/price of each purchase, this model also uses these trends to predict the Lifetime Value of a customer.
What kind of data do I need?
This model only requires transactional data in the form of a list of purchases (i.e. a list of dates whenever a purchase was made by a user). The rule of thumb is the more data and longer duration of data, the better.
What does my data have to look like?
The input of the model must have the following schema:
|id||String||The user's id|
|date||Datetime||The timestamp of the purchase in ISO 8601 format|
|price||Float||(Optional) The price of the purchase|
What does the model output?
The model outputs data in the following format:
|id||String||The user's id|
|frequency||Int||The number of purchases - 1|
|last_purchase||Int||Age at last purchase|
|p_alive||Float||The probability (out of 1.0) the user is alive. This represents the probability that a customer will ever purchase from you ever again.|
|ltv||Float||The predicted lifetime value of the user|
This section is for technical reference only, and is not required to use the model
How does NStack validate this model?
To trust our results, the model needs to be tested. NStack's platform automatically tests this model in two different but related ways. Firstly, we check whether our
p_alive prediction is accurate. This is achieved by using a metric called the area under the receiver operating characteristic curve (AUROC).
However, this is not enough since even though we may correctly predict that a customer is still alive, we may not accurately predict the number of items he will buy in the future (which would affect our LTV prediction). To that end, we plot a graph of the number of items purchased in the observation period vs. the predicted number of items purchased in the holdout period. Furthermore, we compute the mean absolute error between the predicted and the true number of purchased items during the holdout period.