XGBoost + SHAP 기반 이상거래 탐지 시스템 with MLOps
| 모델 | AUC | Recall | 비고 |
|---|---|---|---|
| XGBoost (단독) | 0.91 | 90.55% | Threshold 0.18 |
| 트리 스태킹 | 0.92 | 71% @5%FPR | 확률 분포 양극화 |
| 모델 | AUC | Recall | 추론 속도 |
|---|---|---|---|
| 스태킹 | 0.9998 | 99.91% | - |
| 하이브리드 | 0.9997 | 99.95% | 1ms (24배↑) |
| XGBoost | 0.9996 | 99.89% | - |
| FT-Transformer | 0.9995 | 99.87% | 24ms |
| 영역 | 기술 |
|---|---|
| ML | XGBoost, PyTorch (LSTM/Transformer), SHAP |
| MLOps | MLflow (Tracking, Registry), Evidently |
| API | FastAPI, Docker Compose |
| 테스트 | pytest |
IEEE-CIS 데이터
↓
┌──────────────────────────────────────────┐
│ Feature Engineering (12개 시간 윈도우) │
└──────────────────────────────────────────┘
↓
┌──────────────────────────────────────────┐
│ XGBoost (Optuna GPU 튜닝) │
│ → Threshold 0.18 (비용 최적화) │
└──────────────────────────────────────────┘
↓
┌──────────────────────────────────────────┐
│ SHAP TreeExplainer (Top 5 피처 설명) │
└──────────────────────────────────────────┘
↓
┌──────────────────────────────────────────┐
│ FastAPI + Docker Compose │
│ → 4단계 위험도: approve/verify/hold/block │
└──────────────────────────────────────────┘
↓
┌──────────────────────────────────────────┐
│ MLOps: MLflow Tracking + Evidently │
└──────────────────────────────────────────┘
fds-system/
├── notebooks/
│ ├── phase0/ # 기초 학습 (Python, Numpy, Pandas)
│ ├── phase1/ # ML 구현 (EDA → XGBoost → SHAP → API)
│ └── phase2/ # MLOps (MLflow, Evidently, 비용 최적화)
├── src/
│ ├── ml/ # 피처 엔지니어링, 모델
│ ├── explainer/ # SHAP 설명 모듈
│ └── api/ # FastAPI
├── models/ # 학습된 모델 (.joblib)
├── tests/ # pytest 테스트
└── docs/ # PRD 및 구현 가이드
- 1-1~1-2: EDA + Feature Engineering
- 1-3: XGBoost (Optuna GPU 튜닝)
- 1-6: SHAP 기반 설명 (XAI)
- 1-7~1-8: FastAPI + React Admin
- 1-9: 트리 스태킹 (XGBoost + LightGBM + CatBoost)
- 1-10~1-12: FT-Transformer + 하이브리드 서빙
- 2-1~2-2: MLflow Tracking + Registry (Champion/Challenger)
- 2-3: Evidently 드리프트 모니터링
- 2-4: 비용 함수 + pytest 테스트
- FN(놓친 사기): 100만원 손실
- FP(오탐): 5만원 비용
- 비용 비율 FN:FP = 20:1 → 최적 Threshold 0.18
[approve] < 0.18: 자동 승인
[verify] 0.18~0.50: 추가 인증
[hold] 0.50~0.80: 수동 검토
[block] > 0.80: 자동 차단
- TreeExplainer로 실시간 Top 5 피처 설명
- "이 거래가 사기로 판단된 이유" 제공
- XGBoost + LightGBM + CatBoost → LogisticRegression 메타 모델
- IEEE-CIS: AUC 0.92, Recall 71% @5%FPR
- 확률 분포 양극화 → 결정 명확성 향상
- NVIDIA AI Blueprint 2024 패턴 적용
- FT-Transformer 임베딩 → Redis 캐싱 → XGBoost
- 추론 속도 24배 개선 (24ms → 1ms)
- PaySim에서 XGBoost/Transformer/하이브리드/스태킹/하이브리드스태킹 비교
- 스태킹 AUC 최고(0.9998), 하이브리드 Recall 최고(99.95%)
- 하이브리드 스태킹 실패 분석: LogisticRegression 과적합 + 정보 중복
- IEEE-CIS: AUC 0.70 → 앙상블 효과 미미
- 원인: PCA 정적 피처로 시퀀스 특성 부재
- PaySim 12개 시간 윈도우 집계 피처로 재검증
- MLflow Alias 기반 Champion/Challenger 패턴
- A/B 테스트 및 롤백 지원
# 환경 설정
conda create -n fds python=3.11 -y
conda activate fds
pip install -r requirements.txt
# 테스트 실행
pytest tests/ -v- IEEE-CIS Fraud Detection (Kaggle)
- 590,540 거래, 3.5% 사기 비율
MIT License