Bank Marketing Campaign Optimization

Overview

Predicted term deposit subscription from bank marketing campaigns using ensemble methods on UCI dataset with 41K+ observations and severe class imbalance.

Key Results

  • 36.9% F1-score with GBM (vs. 34.8% XGBoost and 30.2% Random Forest baseline)
  • 46.4% AUCPR on severely imbalanced dataset (88.7% negative class)
  • Comprehensive evaluation with precision-recall curves, learning curves, and feature importance analysis

Technical Stack

Python • XGBoost • scikit-learn • GridSearchCV • pandas • Seaborn

What I Learned

Handling severe class imbalance requires careful metric selection—accuracy was misleading at 88.7% (predict all negatives), so I optimized for F1-score and AUCPR. The breakthrough came from proper class weighting and extensive hyperparameter tuning with 5-fold cross-validation.

View Code on GitHub

Updated: