Minseong Code Lab
← Projects
Bootcamp MissionData / ML

은행 마케팅 반응 예측

은행 마케팅 데이터로 고객 반응 여부를 분류하는 모델 실습

게시 2026-07-10
Pythonpandasscikit-learnXGBoostLightGBMJupyter
Contents · 목차
  1. 무엇을 하는 미션인가
  2. 불균형을 다룬 방법
  3. 평가 결과
  4. 한계

무엇을 하는 미션인가

은행 마케팅 전화에 고객이 응답할지 분류하는 미션입니다. 응답 비율이 낮은 불균형 데이터라, 불균형 처리와 지표 선택이 이 미션의 중심이었습니다.

불균형을 다룬 방법

두 가지를 함께 썼습니다.

  • 리샘플링 — SMOTE, SMOTETomek을 적용해 학습 데이터의 클래스 비율을 조정
  • 가중치 — 모델 쪽에서 class_weight="balanced"(CatBoost는 auto_class_weights="Balanced")

분할은 train_test_split(..., stratify=y)로 클래스 비율을 유지했고, 학습 세트를 다시 학습·검증으로 나눌 때도 stratify를 유지했습니다. 전처리는 Pipeline 안에 넣어 학습 데이터에서만 fit되도록 했습니다.

평가 결과

튜닝 후 테스트셋 기준입니다.

모델AccuracyPrecisionRecallF1ROC-AUCPR-AUC
RandomForest (tuned)0.88540.49520.89660.63800.95170.6750
Logistic (tuned)0.86390.44860.90840.60060.94030.5926
DecisionTree (tuned)0.84290.41350.94290.57490.94360.6366

Accuracy만 보면 판단이 어긋나는 데이터입니다. 세 모델 모두 Recall이 0.9 안팎인데 Precision은 0.410.50에 머뭅니다. 응답할 고객을 놓치지 않는 대신 헛걸음이 늘어나는 구성이라, Accuracy(0.840.89)보다 PR-AUC와 F1이 차이를 드러냅니다.

한계

  • 임계값을 0.5에서 조정하지 않았습니다. Precision–Recall 균형은 임계값으로 크게 달라집니다
  • 비교는 단일 실행이며 시드 반복이 없습니다
  • CatBoost·XGBoost·LightGBM도 함께 학습했지만 최종 비교표에는 위 세 모델만 남아 있습니다