Bootcamp MissionData / ML
은행 마케팅 반응 예측
은행 마케팅 데이터로 고객 반응 여부를 분류하는 모델 실습
게시 2026-07-10
Pythonpandasscikit-learnXGBoostLightGBMJupyter
Repository개인 저장소
malit9999/ml-bank-marketing-classification-mission-04(새 탭에서 열림)Contents · 목차
무엇을 하는 미션인가
은행 마케팅 전화에 고객이 응답할지 분류하는 미션입니다. 응답 비율이 낮은 불균형 데이터라, 불균형 처리와 지표 선택이 이 미션의 중심이었습니다.
불균형을 다룬 방법
두 가지를 함께 썼습니다.
- 리샘플링 —
SMOTE,SMOTETomek을 적용해 학습 데이터의 클래스 비율을 조정 - 가중치 — 모델 쪽에서
class_weight="balanced"(CatBoost는auto_class_weights="Balanced")
분할은 train_test_split(..., stratify=y)로 클래스 비율을 유지했고, 학습 세트를 다시
학습·검증으로 나눌 때도 stratify를 유지했습니다. 전처리는 Pipeline 안에 넣어
학습 데이터에서만 fit되도록 했습니다.
평가 결과
튜닝 후 테스트셋 기준입니다.
| 모델 | Accuracy | Precision | Recall | F1 | ROC-AUC | PR-AUC |
|---|---|---|---|---|---|---|
| RandomForest (tuned) | 0.8854 | 0.4952 | 0.8966 | 0.6380 | 0.9517 | 0.6750 |
| Logistic (tuned) | 0.8639 | 0.4486 | 0.9084 | 0.6006 | 0.9403 | 0.5926 |
| DecisionTree (tuned) | 0.8429 | 0.4135 | 0.9429 | 0.5749 | 0.9436 | 0.6366 |
Accuracy만 보면 판단이 어긋나는 데이터입니다. 세 모델 모두 Recall이 0.9 안팎인데
Precision은 0.410.50에 머뭅니다. 응답할 고객을 놓치지 않는 대신 헛걸음이 늘어나는 구성이라,
Accuracy(0.840.89)보다 PR-AUC와 F1이 차이를 드러냅니다.
한계
- 임계값을 0.5에서 조정하지 않았습니다. Precision–Recall 균형은 임계값으로 크게 달라집니다
- 비교는 단일 실행이며 시드 반복이 없습니다
- CatBoost·XGBoost·LightGBM도 함께 학습했지만 최종 비교표에는 위 세 모델만 남아 있습니다