I am creating a churn model in python. The full dataset has around 90k records stretching back many years. I'm using a subset of the full dataset. This subset only includes clients where we've worked for the client in the last 15 years and the client was opened more than 2 years ago. The dataset has ~30k records and ~3k the are active right now.

There are long-term clients who've been active for decades, but client life cycle is usually 3-4 years. With the current model, I have a confusion matrix (using XGBoost) showing high percentages so I'm comfortable with it. When I do the analysis, I'll use basically the same recordset, but remove the closed clients. Is what I described here a good approach or what should I be doing differently?

  • 1
    $\begingroup$ What's the goal or objective of the analysis? $\endgroup$ Nov 20 at 20:05
  • $\begingroup$ Predict which clients have the highest likelihood of churning $\endgroup$
    – jabs
    Nov 20 at 20:30
  • 1
    $\begingroup$ Your filters are truncating information, imo. Compare results based on that subsample with results from using the full 90k records. Obviously, employ logistic regression with the target defined as stated but applied differently on each dataset. $\endgroup$ Nov 22 at 11:28
  • $\begingroup$ Should I select the records, and then do my preprocessing or select after preprocessing. Since the difference between the number of active vs. inactive is big, I assume I should select the records first. Thanks! $\endgroup$
    – jabs
    Nov 27 at 15:06
  • $\begingroup$ Not knowing what is involved with preprocessing I have no response other than to note that the two datasets should be equivalent but for the filters used to create the smaller subset. $\endgroup$ Nov 27 at 15:10


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.

Browse other questions tagged or ask your own question.