Let’s say i want to do customer attrition prediction. Now customer attrition can happen anytime during an year. There are 2 ways i can think of setting up the problem.

  1. Fix a reference data e.g. 1 Nov’16. Dependent variable (in observation period) calculated by considering customers who churned in next 3 months (Nov/Dec/Jan). Independent variables duration can be calculated between Nov’15-Oct’16 (1 yr) & variables such transaction in last 3/6 months can be created. (I think this is a better approach. Also makes more sense if i want to score the model and build campaigns)

  2. Consider year 2016. For customers who churned in July’16 (observation period) consider Jan-June’16 as the duration for creating independent variables, for customer churned in Aug’16 consider Feb-July’16 for independent variable creation. Append this data row-wise, take a random sample from this data for training and rest for testing. (here i feel dependent variables will have seasonality as variable created would have considered different months)

Can someone please let me know which of these is right (or if anyone is correct). This is will be helpful as i have not been able to figure this out.



1 Answer 1


In my applications, I use a somewhat rolling window period, but of course a lot of customization may apply, depending on the customer churn data features for a specific product:

  • X months period prediction, with the previous 2*X months for getting the input features.
  • To train the model, I use the previous X months for training, and the 2*X months before them to get the input features.

Example (supposing a quarterly forecast):

  • Predict period: 03/2017 - 06/2017
  • Features for prediction, from period: 09/2016 - 02/2017
  • Model training period: 12/2016 - 02/2017
  • Features for model training, from period: 06/2016 - 11/2016

Of course, depending on your model, you may want to use a training, a validation and a testing set, while performing the training task (as you already mention).

Post-validation of this configuration carried good results in my case, but success is always depending on many factors (such as model choice, period picking, seasonality considerations, data quality, etc.)

  • $\begingroup$ Thanks. I use almost similar approach to the one you mentioned. But one of the problems that I have faced with classification problems for this setup (for problems other than customer churn such whether customer will opt for a service) is that most important predictor is whether the person opted for service in the past or not. This defeats the purpose of modeling as few behavioral variables come significant $\endgroup$
    – Rishu
    Feb 7, 2017 at 17:44
  • 1
    $\begingroup$ When you have a dominant, self-explanatory attribute such as the already usage of this service, the problem is that you may not know when a customer will start using a service. In this case, you might want to use Survival Analysis (but with an opposite modelling: "death" here meaning the "start" of using the service), which will give you the probability for a customer to start a service, also based on other attributes. $\endgroup$
    – Thanos
    Feb 8, 2017 at 13:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.