Customer Lifetime Value in Python
(survival analysis in Python)
According to Google and every business article ever:
It's the sum of all the earnings you expect to receive from a customer over their lifetime with you.
1. According to numbers presented in a news release that reported Vodafone Group Plc's results for the six months ended September 2012, Vodafone UK as 10.8 million "pay monthly" customers
2. In his "Q3 2012 Earnings Conference Call", the CFO of Amazon commented that "active customer accounts exceeded 188 million", where customers are considered active when they have placed an order during the preceding twelve-month period.
Contractual: we observe when the customers dies.
Non-contractual: the time at which a customer dies is unobserved.
1. Let's assume customers will continuing buying from us until they "die".
2. Their death rate is constant (but different constants across individuals).
3. Assume exponential time between purchases (with different rates across individuals)
Call this the Pareto model
What?
1.
2.
3.
4.
Make IPython go now
Inference of the population parameter (r, alpha, s, beta) is done using maximum likelihood estimation.
Lifetimes implements this part.
Make IPython go now
1. Let's assume customers will continuing buying from us until they "die".
2. After each additional purchase they have a p-percent chance of dieing (p is unique to the individual).
3. Assume exponential time between purchases.
Call this the BG/NDB model
Make IPython go now.
Make IPython go now.
Pretty good! Seasonal sales like Christmas are only a blip on the cumulative total number of orders. This might "reawaken" dead customers though, which is not part of our model.
Absolutely - this is almost desirable when you are dealing with small businesses who lack lots of data - you want to see the uncertainty in your estimates.
Dan W. at Pass the ROC does a great job of this:
http://danielweitzenfeld.github.io/passtheroc/
Ex: instead of point estimates of λ, I want a distribution of what λ might be.