Estimating and Predicting Customer Lifetime Value (CLV)

User 2568 | 4/10/2016, 9:08:29 AM

I've a large data set (about 350m rows) that contain customer ID and the purchase date, amount, product, category etc. I want to use GraphLab to:

  • Calculate Customer Lifetime Value (CLV) for customers that have churned.
  • Use clustering to segment customers by CLV to identify the drivers of a segment.
  • Create a model that predicts CLV for prospects/new customers so I can target these with marketing.

I'm looking for tutorials, examples, code snippets and/or ideas on how this is done efficiently in GraphLab. I'm particularly interested in how to efficiently convert the data from a time series of purchases to a form that can be input to a ML algorithm.

My thought is, like Churn Prediction, you use some period (i.e., quarter or year) and aggregate the purchases by ID by period, i.e., year 1, year 2, year 3. You then calculate the CLV for only the customers that have churned (i.e., they did not make a purchase in period n). Providing you have enough historical data can estimates CLV for even the long lived customers, I thought you would then use this to:

  • show stats like retention rates for each period or CLV by segment (i..e, age, geography etc).
  • Segment customers using a clustering algorithm with CLV being the key metric.
  • training data a regression algorithm to predict CLV for prospects or new customers.

I imagine Customer Lifetime Value this has some commonality with Churn Prediction and a toolkit/tutorial on CLV, or an extension to Churn Prediction, would be great. However, in the short term, I'm happy to build my own based on examples etc, then share with Dato and the community.

No Comments