[ML] 지도학습 - 모델링 프로세스

YulLeaf·2026년 3월 10일

학습일지

목록 보기
7/8

1. 문제 정의(Problem Framing)

"무엇을 예측할지"보다 중요한 건 "어떻게 쓸지"다!

1) 예측 대상 정의

  • 분류: y가 0/1, A/B/C 같은 범주
  • 회귀: y가 연속값(가격, 수요, 시간 등)

2) 예측이 쓰이는 방식

  • 예측 확률을 그대로 쓰나?
  • 특정 임계값으로 의사결정하나?
  • 회귀 결과에 제약이 있나?

3) 평가 지표(KPI) 정의

  • 분류: F1, ROC-AUC, PR-AUC, Recall@k 등
  • 회귀: MAE, RMSE, MAPE, R^2 등

2. 데이터 점검 & EDA

단순히 그래프를 그리는 과정이 아닌 데이터를 이해하고 리스크를 찾는 과정

1) 타깃(y) 확인

  • 분류: 클래스 비율(불균형 여부), 데이터 드리프트
  • 회귀: 분포 형태(롱테일 여부), 이상치, 음수 가능 여부
    • y 분포가 한쪽으로 심하게 치우치면 log1p 고려
    • 극단값이 손실(MSE)을 지배할 때, 이상치 처리 전략 필요

2) 피처(X) 점검

  • 결측치 비율과 패턴
  • 범주형/수치형 구분
  • 누수 후보 피처 존재 여부
    예) "대출 승인 여부 예측"인데 '승인 후 생성된' 피처가 들어가면 누수!

3) 데이터 단위 확인

  • 한 row가 "고객 1명"인지 "거래 1건"인지
  • 여러 row가 같은 엔터티를 공유하는지(고객 중복) -> 분할 전략에 큰 영향

3. 데이터 분할 전략

1) 기본 분할(일반 tabular)

  • train/valid/test
  • 데이터가 작으면 K-Fold CV 추가

2) 분류: Stratified split

  • 클래스 비율 유지가 중요하면 Stratified 사용

3) 그룹 단위 누수 방지(Group split)

같은 고객의 데이터가 train과 test에 동시에 있으면 누수!
예) 고객별 여러 거래 row가 있는 데이터 -> 고객 단위로 GroupKFold/GroupShuffleSplit

4) 시계열: 시간 기준 분할이 정석

  • 랜덤 셔플 금지
  • 과거로 학습 -> 미래를 평가

4. 전처리 & 피처 엔지니어링

전처리는 "성능 올리는 기술"이기도 하지만 그보다 중요한 건 train과 inference에서 동일하게 재현되는 것!

1) 전처리

  • 결측치 처리: mean/median, "missing"카테고리, 모델 내 처리
  • 범주형 인코딩: one-hot/target encoding/catboost 내장
  • 스케일링: Standard Scaler, MinMaxScaler -> 선형/SVM/KNN에서 특히 중요
  • 이상치 처리: clip/winsorize/robust scaling

2) 피처 엔지니어링

  • 수치형 변환: log, binning
  • 상호작용: ratio, diff, product
  • 집계 피처(거래 데이터): 고객별 count/sum/mean, 최근 N일 rolling 등
  • 시간 피처: 요일/월/시간대, lag, rolling mean

5. Baseline 모델

성능 좋은 모델을 사용하기 전에 누수/피처 유효성/개선 여지를 확인하는 기준

  • 모델
    • 분류: Logistic Regression, Linear SVM
    • 회귀: Linear/Ridge, RandomForestRegressor
  • 확인할 것
    • 점수가 말이 되는가? -> 누수 의심
    • 어떤 피처가 중요한가? -> 해석 가능한 모델에서 확인
    • 단순한 규칙으로도 해결 가능한 문제인가?

6. 강력 모델 + 튜닝

1) 기본 루트

  • tabular: XGBoost/LightGBM/CatBoost가 1순위 되는 경우가 많음.
  • 데이터가 작거나 해석이 중요하면 선형 모델 + 좋은 피처로 끝내기도 함.

2) 튜닝 순서

  1. learning_rate 낮게 고정(0.05 ~ 0.1)
  2. depth/num_leaves로 모델 복잡도 설정
  3. min_data_in_leaf로 과적합 방지
  4. subsample/feature_fraction으로 랜덤성 추가
  5. n_estimators 늘리되 early stopping 사용
파라미터역할추천값효과
learning_rate각 트리 기여도 (스텝사이즈)0.05~0.1 고정학습 속도 제어, 과적합 방지
max_depth / num_leaves트리 복잡도max_depth=6num_leaves=31표현력 vs 과적합 트레이드오프
min_data_in_leaf리프당 최소 샘플 수20~100과적합 방지, 노이즈 무시
subsample / feature_fraction랜덤성 추가0.8트리 다양성↑, 상관관계↓
n_estimators + early_stopping트리 개수 + 자동 중단1000 + early_stopping(50)충분 학습 + 과적합 방지

7. 검증 & 오류 분석

1) CV 점수 vs Holdout 점수 비교

  • CV는 높은데 holdout이 낮으면 분할 전략/누수/드리프트 의심
  • 둘 다 낮으면 피처/모델 표현력 부족

2) 오류 분석

  • 어떤 구간에서 오차가 커지는지
  • 어떤 피처 값에서 틀리는지
  • 시간에 따라 성능이 떨어지는지 (드리프트)
  • 회귀면: "큰 값에서만 크게 틀리는지" -> log 변환 힌트
오류 분석과 하이퍼파라미터로 모델 개선 가능

8. 최종 모델 선택 및 해석

1) 단일 모델 vs 앙상블

  • 단일 부스팅 모델이 대부분 충분히 강함
  • 리더보드/경쟁형이면 stacking으로 더 올릴 수 있음
  • 실무 배포는 단순한 모델이 유리할 때도 있음

2) 해석

  • 선형: 계수
  • 트리/부스팅: feature importance, SHAP
  • "왜 틀리는지"를 아는 게 중요함!

9. Production(추론) 관점

  • 추론 속도(요청당 ms)
  • 배치 vs 실시간
  • 피처 생성 비용
  • 결측/이상치 들어올 때의 안전장치
  • 모델/전처리 버전 관리

10. 재현 가능한 파이프라인화

  • split seed 고정
  • 전처리/피처 생성 코드 고정
  • 실험 로그(파라미터/점수) 기록
  • 모델 artifact 저장
  • 동일한 입력 -> 동일한 출력 보장

분류 vs 회귀

항목분류회귀
핵심 이슈불균형, thresholdy 분포, 이상치, 범위 제약
지표AUC/F1/PR-AUCMAE/RMSE/MAPE
후처리threshold 튜닝log 되돌리기, clip/제약
오류 분석어떤 클래스가 틀리나어떤 구간에서 오차가 큰가

0개의 댓글