Captain's Log
← Observatory
Observatory·

분류 모델 입문 — 의사결정나무에서 앙상블까지

대출 승인 예측으로 의사결정나무를 학습·해석하고, 텔코 고객이탈 예측으로 인코딩·스케일링·배깅/부스팅 앙상블까지 — 첫 분류 모델링 파이프라인을 밟은 기록.

TrainingMLClassification

첫 지도학습, 분류

전처리와 EDA를 지나 드디어 모델. 두 개의 실전 데이터로 분류(classification) 를 익혔다.

의사결정나무 — 대출 승인 예측

loan.csv 로 승인/거절(loan_status)을 예측했다.

from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder

배운 흐름:

  • 전처리: 범주형은 최빈값, 수치형은 중앙값으로 결측 처리 / LabelEncoder 로 문자열 → 숫자
  • 학습/테스트 분리: train_test_split
  • 학습·시각화: 트리를 plot_tree 로 그려 판단 과정을 눈으로 확인
  • 평가: 정확도, confusion_matrix, classification_report
  • 해석: 특성 중요도(feature importance) — 어떤 변수가 결정에 기여했나 (신용점수 cibil_score 등)
  • 과적합: max_depth 를 키우면 훈련 정확도는 오르지만 일반화가 떨어지는 걸 비교

트리는 "왜 이렇게 예측했는가"를 설명할 수 있다는 점이 매력이었다.

앙상블 — 텔코 고객이탈 예측

Telco-Customer-Churn 으로 한 단계 더 나아갔다.

  • TotalChargespd.to_numeric(errors='coerce') 로 변환 후 결측 처리
  • Churn 을 Yes/No → 1/0
  • 원-핫 인코딩(get_dummies, drop_first=True)과, train 기준으로 test 컬럼을 reindex 로 맞추기 (누수 방지의 기본)
  • 수치형만 StandardScaler스케일링
  • 단일 트리를 넘어 배깅(Bagging)·부스팅(Boosting) 앙상블로 성능 비교

정리

"train 기준으로 test를 맞춘다"는 원칙이 가장 크게 남았다. 모델보다 데이터를 새는 것(leakage) 없이 준비하는 일이 성패를 가른다는 것. 그리고 단일 모델 → 앙상블로 가며 성능이 오르는 과정을 직접 봤다.