sjkwon

신용카드 고객 세그먼트 분류 — 공개 경진대회

857개 피처의 신용카드 데이터를 분류해 개인 참가 9위(상위 4%)를 기록했습니다.

기간
2025.04
분류
경진대회개인 참가
역할
1인 · 단독 (AI허브·데이콘)
스택
Python · XGBoost · Optuna · Weights & Biases

2018년 7월부터 12월까지의 신용카드 데이터로 고객을 A–E 세그먼트로 분류하는 AI허브·데이콘 경진대회에 마감까지 사흘이 남은 시점에 혼자 참여했습니다. 실제 참여 기간은 2025년 4월 22–24일이었습니다. Train 240만 건과 Test 60만 건에 피처가 857개였기 때문에, 원본 데이터를 직접 살피며 짧은 일정에 맞는 EDA 기준부터 세웠습니다.

EDA 기준

베이스라인은 별도 전처리 없이 XGBoost를 학습하는 코드였습니다. 먼저 피처명으로 중복 항목과 날짜·경과기간처럼 같은 정보를 담는 중복 피처를 찾았습니다. 이후 상관계수와 XGBoost의 feature importance를 함께 확인했습니다. 변동률_잔액_B1M/B3M/B6M처럼 기간만 다른 파생변수는 서로 상관이 높아, 단기 변화인 1개월 값과 장기 변화인 12개월 값만 남겼습니다.

피처 정리만으로 F1-Score가 크게 오르지는 않았습니다. 추가적인 분석 결과 클래스 E는 1,922,052건, B는 144건으로 불균형이 컸고, 학습 가중치를 적용했을 때 더 분명한 변화가 있었습니다. 이후 Optuna로 하이퍼파라미터 최적화를 진행하고 Weights & Biases로 실험을 기록했습니다.

점수와 되돌린 실험

F1-Score는 다음과 같이 변했습니다.

단계F1-Score
베이스라인0.6094777315
피처 정리0.6100311547
클래스 가중치0.6233150159
Optuna 하이퍼파라미터 최적화0.6807361123

피처 정리의 개선폭은 0.0006이었고, 가장 큰 상승은 Optuna 최적화에서 나왔습니다. 월별로 데이터가 나뉜 점에 착안해 월마다 모델을 따로 학습해 앙상블했지만, 단일 7월 모델은 0.6526258004, 앙상블은 0.5207443808로 오히려 점수가 떨어졌습니다. 짧은 대회 기간 안에 원인을 확인하지 못해 이 실험은 더 밀어붙이지 않고 원본 데이터로 돌아갔습니다.

최종 순위는 9위로 상위 4%였습니다.

AI허브 공개 리더보드 최종 9위

결과는 AI허브 공개 리더보드에서 확인할 수 있습니다.