Skip to content
Nikhil Kumar Reddy
← All work
eval2026

Customer Churn Prediction

Optimising for recall, because a missed churner costs more than a wasted retention offer.

0.96
Test accuracymeasured in repo
0.84
Recall — the metric that mattersmeasured in repo
0.93
Precisionmeasured in repo
0.88
F1measured in repo
01

The problem

The dataset is 84% non-churners, so a model predicting “nobody churns” scores 84% accuracy and is worth nothing. The real question is asymmetric: a false positive costs one unnecessary retention offer, a false negative costs an entire customer relationship. Accuracy is the wrong objective and choosing the right one is most of the work.

02

Architecture

Four models evaluated in sequence — decision tree as baseline, random forest for bagging, gradient boosting for sequential ensembling, then gradient boosting tuned with GridSearchCV. Evaluation deliberately foregrounds recall over accuracy given the class imbalance and asymmetric cost.

03

What broke

Recall of 0.84 means 78 of 488 actual churners are still missed, and no threshold tuning closes that without giving up precision the business would notice. The model is also trained on a static snapshot with no temporal validation, so it cannot tell you whether the patterns hold as customer behaviour shifts — which for churn is exactly the thing that changes.

04

Results

Tuned gradient boosting reaches 0.96 test accuracy, 0.93 precision, 0.84 recall and 0.88 F1, catching 410 of 488 actual churners. Top predictors are total transaction count, transaction amount and revolving balance.