The problem
Company A, a telecom operator, needed a way to identify customers at risk of leaving. Churn was close to 50% in the test data, so contacting everyone would spread the retention budget thin. I needed to identify whom to contact first and explain the reasoning behind that choice.
- RoleData analyst
- ContextEnd-to-end churn analysis
- Scale100,000 customer records
- Result78% churn in the highest-risk decile
What I built
I joined the client and records tables one-to-one on Customer_ID. The resulting dataset had 100,000 rows and about 100 columns covering demographics, equipment, revenue, usage, tenure, and churn. Customers who left had median monthly revenue of 47.49, close to 48.88 for those who stayed. The clearest risk appeared around renewal at months 11 to 12. I created retention segments, including 'Renewal + silent-switching risk', trained an XGBoost classifier, and used its risk tiers to propose a targeted 'Renewal Rescue System'. I engineered features for equipment age, usage decline, and renewal timing. The 11-to-12-month renewal cohort had a 64% churn rate; the proposed retention rules map high-risk customers to specific actions.
BUILT WITHPythonpandasNumPyscikit-learnXGBoostMatplotlibSeaborn