sjkwon

Credit Card Customer Segmentation

Classified credit card customers from 857 features, placing 9th overall (top 4%) as a solo competitor.

Period
Apr 2025
Category
CompetitionSolo Entry
Role
Solo · AI Hub × DACON competition
Stack
Python · XGBoost · Optuna · Weights & Biases

This AI Hub × DACON competition asked participants to classify customers into segments A-E using credit card data from July through December 2018. I entered solo with three days remaining and worked on it from April 22-24, 2025. The training set contained 2.4 million rows, the test set 600,000, and each had 857 features. Given the feature count and short schedule, I started by inspecting the raw data and establishing a focused EDA process.

EDA criteria

The baseline trained XGBoost without separate preprocessing. I first used feature names to identify duplicate fields and redundant features representing the same information, such as dates and elapsed durations. I then examined correlations alongside XGBoost feature importance. Balance-change-rate features such as 변동률_잔액_B1M/B3M/B6M were highly correlated, so I retained only the one-month value for short-term change and the 12-month value for long-term change.

The class distribution was severely imbalanced, with 1,922,052 examples in class E and only 144 in class B, and applying class weights produced a clearer gain. I then ran hyperparameter optimization with Optuna and tracked the experiments with Weights & Biases.

Score progression

The F1 score changed as follows:

StageF1 score
Baseline0.6094777315
Feature cleanup0.6100311547
Class weights0.6233150159
Optuna hyperparameter optimization0.6807361123

The largest gain came from Optuna optimization. I also tried training a separate model for each month and ensembling them, but it scored lower and was not used in the final submission.

I finished 9th overall, in the top 4%.

Ninth place on the AI Hub public leaderboard

The result is available on the AI Hub public leaderboard.