전체 노트북 코드: 03_structured_model_training.py목적: XGBoost 모델을 학습하고, MLflow로 실험을 추적하며, SHAP으로 해석합니다. 멀티 알고리즘 비교, SMOTE, Optuna, Stacking 등 고급 기법도 다룹니다. 사용 Databricks 기능:
MLflow Experiment Tracking, Autolog, Data Lineage, mlflow.evaluate(), Databricks AutoML
1. MLflow 데이터 계보 캡처
MLflow Data Lineage 를 통해 모델이 어떤 데이터(테이블 + 버전)로 학습되었는지 추적합니다. 모델 문제 발생 시 근본 원인 분석(RCA) 에 활용됩니다.2. XGBoost 학습 + MLflow Autolog
mlflow.xgboost.autolog()으로 하이퍼파라미터, 메트릭, 피처 중요도가 자동 기록됩니다.
3. SHAP 기반 모델 해석
SHAP(SHapley Additive exPlanations)을 통해 왜 고장이 예측되었는지 설명 가능한 피처 중요도를 산출합니다.참고 SHAP 해석은 제조 현장에서 ” 왜 이 설비가 고장 위험으로 판단되었는가?” 에 답할 수 있게 합니다. 이는 정비팀의 신뢰도 확보와 의사결정에 핵심적입니다.
03b. 멀티 알고리즘 비교
XGBoost, LightGBM, CatBoost, Random Forest를 동일 조건 에서 비교합니다. MLflow 실험 UI에서 한눈에 비교할 수 있습니다.주의 제조 예지보전에서는 Recall(고장 탐지율) 이 가장 중요합니다. Recall이 낮으면 실제 고장을 놓쳐 설비 다운타임이 발생합니다. 알고리즘 선택 시 Recall >= 0.7을 필수 조건으로 설정하세요.
03c. 고급 기법: SMOTE-ENN, Optuna, Stacking, AutoML
SMOTE-ENN— 소수 클래스 오버샘플링 + 노이즈 제거로 불균형 데이터를 처리합니다.03d. 임계값 최적화 & 모델 캘리브레이션
전체 노트북 코드: 03_structured_model_training.py (Section 6)대부분의 팀이 XGBoost의 예측 확률을 0.5 기준 으로 이진 분류합니다. 하지만 고장 예측처럼 놓치는 것(FN)이 오탐(FP)보다 훨씬 비싼 경우, 임계값을 낮춰서 Recall을 높이는 것이 비즈니스적으로 올바릅니다.
PR-curve 기반 최적 임계값 탐색
Precision-Recall 곡선에서 Recall >= 0.8을 만족하면서 Precision이 가장 높은 임계값 을 자동 탐색합니다.모델 캘리브레이션 (Platt Scaling, Isotonic Regression)
모델이 “고장 확률 80%“라고 출력하면, 실제로 100건 중 80건이 고장이어야 합니다. XGBoost의 raw probability는 종종 과신(overconfident) 하거나 과소(underconfident) 하기 때문에, 다음 기법으로 보정합니다:| 기법 | 원리 | 적합 상황 |
|---|---|---|
| Platt Scaling | 시그모이드 함수로 확률 보정 | 데이터가 적을 때, 단순한 보정 |
| Isotonic Regression | 비모수적 단조 함수 적합 | 데이터가 충분할 때, 복잡한 분포 |
비즈니스 기반 임계값 선택
주의 임계값은 비즈니스 요구사항에 따라 결정합니다:
- 놓침이 치명적(반도체, 자동차 부품) → 임계값 낮춤 (0.3~0.4) → Recall 상승, Precision 하락
- 오탐 비용이 높음(불필요 정비 비용 큼) → 임계값 높임 (0.6~0.7) → Precision 상승, Recall 하락
- 최적점: PR 곡선에서 비용함수를 최소화하는 점 =
cost = FN x 50000 + FP x 3000