핵심 인사이트 (3줄 요약)
- 본질: 데이터 드리프트 (Data Drift)는 학습 데이터와 운영(서빙) 데이터 간의 통계적 분포 차이로, 시간이 흐름에 따라 모델이 본 적 없는 패턴의 데이터를 처리하게 되어 성능이 저하되는 현상이다.
- 가치: PSI (Population Stability Index), KS Test 등 정량적 지표로 드리프트를 조기에 감지하면, 실제 모델 성능 저하가 비즈니스 손실로 이어지기 전에 재학습을 트리거할 수 있다.
- 판단 포인트: 드리프트 감지 임계값을 너무 낮게 설정하면 과도한 재학습(비용 낭비), 너무 높게 설정하면 모델 부패 방치(품질 저하)가 발생하므로 비즈니스 도메인에 맞는 임계값 캘리브레이션이 핵심이다.
Ⅰ. 개요 및 필요성
1.1 데이터 드리프트란?
**데이터 드리프트 (Data Drift)**는 ML 모델이 학습된 데이터의 통계적 특성(분포)이 시간이 지나면서 실제 운영 데이터와 달라지는 현상이다.
학습 시점 데이터 분포 운영 시점 데이터 분포
↓ ↓
┌──────────────────┐ ┌──────────────────────┐
│ 정상 범위 │ │ 분포 이동 │
│ ██ │ │ ██ │
│ ████ │ │ ████ │
│ ██████ │ → │ ██████ │
│ ████████ │ 시간 │ ████████ │
│ ██████████ │ 경과 │ ██████████ │
│ ████████████ │ │ ████████████ │
└──────────────────┘ └──────────────────────┘
평균: μ=0, σ=1 평균: μ=1.5, σ=1.3
(분포가 오른쪽으로 이동)
1.2 드리프트 발생 원인 및 사례
| 원인 | 구체적 사례 |
|---|---|
| 계절/트렌드 변화 | 겨울에 학습한 고객 구매 모델이 여름에 성능 저하 |
| 사용자 행동 변화 | 스마트폰 보급으로 웹 접속 패턴이 PC→모바일로 이동 |
| 외부 경제 변화 | 금리 인상으로 주택 구매 패턴 변화 |
| 데이터 수집 변화 | 센서 교체로 측정 값의 단위/범위 변화 |
| 새로운 사용자 유입 | 마케팅 캠페인으로 전혀 다른 인구통계 유입 |
📢 섹션 요약 비유: 데이터 드리프트는 10년 전 고객 취향으로 만든 카탈로그와 오늘 실제 고객 취향의 차이와 같다. 옛날 데이터(카탈로그)로 만든 추천 모델은 지금 고객이 원하는 것을 모른다.
Ⅱ. 아키텍처 및 핵심 원리
2.1 드리프트의 3가지 종류
| 종류 | 정의 | 수식 | 예시 |
|---|---|---|---|
| Covariate Shift | 입력 변수 X의 분포 변화 | P_train(X) ≠ P_serve(X) | 나이 분포가 20대→40대로 이동 |
| Prior Probability Shift | 출력(레이블) Y의 분포 변화 | P_train(Y) ≠ P_serve(Y) | 사기 비율이 1%→5%로 증가 |
| Concept Drift | 입출력 관계 P(Y|X)의 변화 | P_train(Y|X) ≠ P_serve(Y|X) | 같은 신용점수여도 상환 능력 변화 |
드리프트 종류별 영향
┌───────────────────────────────────────────────────────────┐
│ Covariate Shift: 입력 분포만 변화 │
│ X: ████ → X: ████████ (새 패턴의 입력 데이터 증가) │
│ P(Y|X) 관계는 동일 → 새 분포에 맞는 재학습으로 해결 │
├───────────────────────────────────────────────────────────┤
│ Prior Prob Shift: 레이블 분포만 변화 │
│ Y=0: 99%, Y=1: 1% → Y=0: 95%, Y=1: 5% │
│ 클래스 불균형 변화 → 임계값 재조정 또는 재학습 │
├───────────────────────────────────────────────────────────┤
│ Concept Drift: 관계 자체가 변화 (가장 치명적!) │
│ 고소득 = 고상환능력 → 고소득이어도 상환 능력 불안정 │
│ P(Y|X) 변화 → 반드시 재학습 필요 │
└───────────────────────────────────────────────────────────┘
2.2 드리프트 감지 방법
PSI (Population Stability Index)
PSI는 두 분포 간 차이를 단일 숫자로 표현하는 가장 널리 쓰이는 지표다.
PSI = Σ (기대 비율 - 실제 비율) × ln(기대 비율 / 실제 비율)
PSI 해석 기준:
┌──────────────────────────────────────────────┐
│ PSI < 0.1 │ 안정 (분포 변화 미미) │
│ 0.1 ≤ PSI < 0.2 │ 주의 (경미한 드리프트) │
│ PSI ≥ 0.2 │ 경보 (재학습 강력 권고) │
└──────────────────────────────────────────────┘
KS Test (Kolmogorov-Smirnov Test)
KS 통계량 = max|F1(x) - F2(x)|
(두 누적분포함수의 최대 차이)
p-value < 0.05: 두 분포가 통계적으로 유의미하게 다름
→ 드리프트 감지됨
KL Divergence (Kullback-Leibler Divergence)
KL(P‖Q) = Σ P(x) × log(P(x) / Q(x))
P: 학습 데이터 분포
Q: 서빙 데이터 분포
KL = 0: 동일한 분포
KL > 임계값: 드리프트 감지
MMD (Maximum Mean Discrepancy)
MMD는 두 분포에서 추출한 샘플로
커널 함수를 이용해 고차원 분포 차이를 측정
특징: 비모수적, 고차원 데이터에 적합
활용: 딥러닝 모델 입력 드리프트 감지
2.3 드리프트 감지 알고리즘 비교
| 방법 | 원리 | 장점 | 단점 | 적합 데이터 |
|---|---|---|---|---|
| PSI | 분포 구간 비교 | 직관적 해석, 금융권 표준 | 연속형 데이터에 구간 설정 필요 | 수치형, 금융 |
| KS Test | 누적분포 최대 차이 | 비모수적, 견고함 | 단변량만 가능 | 수치형 단변량 |
| KL Divergence | 정보 이론적 거리 | 이론적 근거 강함 | 비대칭, 0 확률에 취약 | 분포 비교 |
| MMD | 커널 기반 거리 | 고차원 적합 | 계산 복잡도 높음 | 이미지, 텍스트 |
| Chi-Square Test | 관측/기대 빈도 비교 | 범주형 데이터 | 샘플 크기 민감 | 범주형 |
2.4 드리프트 모니터링 아키텍처
┌──────────────────────────────────────────────────────────────┐
│ 드리프트 모니터링 시스템 │
├──────────────┬───────────────────────────────────────────────┤
│ 서빙 서버 │ 실시간 요청 데이터 로깅 │
│ (Inference) │ → S3/BigQuery 저장 │
├──────────────┼───────────────────────────────────────────────┤
│ 드리프트 │ 주기적 배치 실행 (예: 매시간) │
│ 감지 엔진 │ 학습 데이터 분포 vs 최근 서빙 데이터 분포 │
│ │ PSI / KS Test / KL Divergence 계산 │
├──────────────┼───────────────────────────────────────────────┤
│ 알람 시스 │ 임계값 초과 시 │
│ 템 │ → Slack/PagerDuty 알람 │
│ │ → CT 파이프라인 자동 트리거 │
├──────────────┼───────────────────────────────────────────────┤
│ 대시보드 │ 피처별 PSI 시계열 시각화 │
│ (Grafana) │ 드리프트 히스토리 추적 │
└──────────────┴───────────────────────────────────────────────┘
📢 섹션 요약 비유: 데이터 드리프트 감지는 혈액검사와 같다. 정상 범위(학습 데이터 분포)에서 얼마나 벗어났는지를 PSI라는 혈액 지표로 수치화하고, 0.2를 넘으면 재치료(재학습) 처방을 내린다.
Ⅲ. 비교 및 연결
3.1 데이터 드리프트 vs 컨셉 드리프트
| 항목 | 데이터 드리프트 | 컨셉 드리프트 |
|---|---|---|
| 변화 대상 | 입력 데이터 X의 분포 P(X) | 입출력 관계 P(Y|X) |
| 레이블 필요성 | 레이블 없이 감지 가능 | 실제 레이블 필요 (감지 어려움) |
| 감지 속도 | 빠름 (실시간 가능) | 느림 (레이블 수집 후) |
| 심각도 | 중간 | 높음 (모델 기본 가정 붕괴) |
| 대응 | 재학습으로 해결 가능 | 반드시 재학습 + 데이터 재수집 |
3.2 피처별 드리프트 모니터링 전략
모든 피처를 동일 가중치로 모니터링하는 것은 비효율적!
피처 중요도 기반 우선순위:
┌─────────────────────────────────────────────────────┐
│ Tier 1 (중요 피처): SHAP 상위 10개 → 매시간 모니터 │
│ Tier 2 (일반 피처): SHAP 상위 50개 → 매일 모니터 │
│ Tier 3 (저중요 피처): 나머지 → 매주 모니터 │
└─────────────────────────────────────────────────────┘
3.3 드리프트 감지 도구 비교
| 도구 | 특징 | 강점 | 약점 |
|---|---|---|---|
| Evidently AI | 오픈소스, 리포트 자동 생성 | 사용 편의성 높음 | 커스터마이징 제한 |
| WhyLogs | Apache Whylabs의 경량 로깅 | 낮은 오버헤드 | 제한적 알고리즘 |
| Great Expectations | 데이터 품질 검증 전문 | 유연한 규칙 설정 | 드리프트보다 품질 중심 |
| Seldon Alibi-Detect | 고급 드리프트 감지 알고리즘 | MMD, LSDD 등 고급 방법 | 복잡한 설정 |
| SageMaker Model Monitor | AWS 관리형 | 완전 관리형, MLOps 통합 | AWS 종속 |
📢 섹션 요약 비유: 데이터 드리프트 vs 컨셉 드리프트는 지도(Data Drift)가 오래됐느냐, 아니면 도로 법규(Concept Drift)가 바뀌었느냐의 차이다. 지도가 오래됐으면(Data Drift) 새 지도를 구하면 되지만, 도로 법규가 바뀌었으면(Concept Drift) 운전 방법 자체를 다시 배워야 한다.
Ⅳ. 실무 적용 및 기술사 판단
4.1 PSI 계산 실습 예시
import numpy as np
import pandas as pd
def calculate_psi(expected, actual, buckets=10):
"""PSI 계산 함수"""
# 분위수 경계 생성
breakpoints = np.arange(0, buckets + 1) / buckets * 100
breakpoints = np.percentile(expected, breakpoints)
# 각 구간의 비율 계산
expected_pct = np.histogram(expected, bins=breakpoints)[0] / len(expected)
actual_pct = np.histogram(actual, bins=breakpoints)[0] / len(actual)
# 0 방지
expected_pct = np.where(expected_pct == 0, 1e-4, expected_pct)
actual_pct = np.where(actual_pct == 0, 1e-4, actual_pct)
# PSI 계산
psi = np.sum((actual_pct - expected_pct) * np.log(actual_pct / expected_pct))
return psi
# 결과 해석
psi_value = calculate_psi(train_data['age'], serving_data['age'])
if psi_value < 0.1:
print("안정: 드리프트 없음")
elif psi_value < 0.2:
print("주의: 모니터링 강화")
else:
print("경보: 즉시 재학습 권고")
4.2 기술사 시험 핵심 포인트
Q. 데이터 드리프트 감지 방법 PSI와 KS Test를 비교 설명하시오.
| 항목 | PSI | KS Test |
|---|---|---|
| 출력 | 단일 수치 (≥0) | 통계량 + p-value |
| 방향성 | 비대칭 (실제/기대 구분) | 대칭 |
| 임계값 | <0.1 안정, >0.2 경보 | p-value < 0.05 |
| 다변량 | 피처별 각각 계산 | 피처별 각각 계산 |
| 금융 업계 | 표준 지표로 채택 | 보조 지표 |
Q. 드리프트 감지와 모델 성능 저하의 인과관계를 설명하시오.
드리프트 감지 → 모델 성능 저하의 인과관계는 Covariate Shift와 Concept Drift에서만 성립한다. Covariate Shift의 경우 새로운 분포 영역은 모델이 학습하지 못한 영역이므로 외삽(Extrapolation) 오류가 발생한다. Concept Drift의 경우 모델의 기본 가정 자체가 깨지므로 직접적인 성능 저하로 이어진다. 그러나 드리프트가 감지됐다고 해서 반드시 성능이 저하되는 것은 아니며, 성능 지표와 함께 모니터링하는 것이 중요하다.
4.3 드리프트 모니터링 실무 설계
┌────────────────────────────────────────────────────────┐
│ 드리프트 모니터링 설계 프레임워크 │
├──────────────┬─────────────────────────────────────────┤
│ 데이터 수집 │ 서빙 요청 데이터 샘플링 (1~10%) │
│ │ 레이블 있을 때 정답도 수집 │
├──────────────┼─────────────────────────────────────────┤
│ 감지 주기 │ 실시간: 스트리밍 이상치 감지 │
│ │ 배치: PSI/KS 일 1회 계산 │
├──────────────┼─────────────────────────────────────────┤
│ 알람 정책 │ Tier 1: PSI > 0.2 → 즉시 재학습 트리거 │
│ │ Tier 2: PSI > 0.1 → 강화 모니터링 │
│ │ Tier 3: PSI < 0.1 → 정상 │
├──────────────┼─────────────────────────────────────────┤
│ 보고 체계 │ 일간 드리프트 리포트 → 자동 이메일 발송 │
│ │ 월간 피처 중요도 리뷰 → 피처 재설계 │
└──────────────┴─────────────────────────────────────────┘
📢 섹션 요약 비유: 드리프트 모니터링은 공장의 품질관리 시스템과 같다. 제품(모델 출력)이 불량이 되기 전에 원자재(입력 데이터) 규격 검사를 통해 PSI 수치로 이상을 미리 잡아낸다. PSI 0.2 초과는 원자재 불량 경보와 같고, 즉시 공정(재학습)을 멈추고 원인을 찾는다.
Ⅴ. 기대효과 및 결론
5.1 드리프트 모니터링 도입 효과
| 항목 | 모니터링 없음 | 모니터링 도입 | 개선 |
|---|---|---|---|
| 성능 저하 감지 | 고객 불만 후 인지 | 사전 감지 | 1~2주 조기 대응 |
| 재학습 타이밍 | 정기 일정 기반 | 필요 시 트리거 | 40% 재학습 비용 절감 |
| 비즈니스 손실 | 수주간 불량 서비스 | 즉시 복구 | ROI 개선 |
| 규제 대응 | 추적 불가 | PSI 로그 보존 | 감사 가능 |
5.2 결론
데이터 드리프트 감지는 ML 시스템 운영의 조기 경보 시스템이다. PSI는 금융 등 규제 업계에서 검증된 표준 지표이며, KS Test와 KL Divergence를 보조로 활용하면 다양한 분포 변화를 포착할 수 있다. 무엇보다 드리프트 감지 → CT 파이프라인 자동 트리거의 연계가 실질적 비즈니스 가치를 만든다.
📢 섹션 요약 비유: 데이터 드리프트 모니터링은 스마트 체온계와 같다. 몸 상태(모델 입력)가 정상(36.5도)에서 벗어나기 시작하면 즉시 알람을 울리고, 38도(PSI 0.2) 이상이면 병원(재학습)에 즉시 가도록 안내한다.
📌 관련 개념 맵
| 관계 | 개념 | 설명 |
|---|---|---|
| 상위 개념 | MLOps | 드리프트 모니터링은 MLOps 운영 단계 |
| 연관 | 컨셉 드리프트 (Concept Drift) | 입출력 관계 변화 (더 심각한 드리프트) |
| 감지 도구 | PSI (Population Stability Index) | 분포 변화 정량 지표 |
| 감지 도구 | KS Test | 비모수적 분포 비교 |
| 감지 도구 | KL Divergence | 정보 이론적 분포 거리 |
| 결과 | CT (Continuous Training) | 드리프트 감지 시 자동 재학습 트리거 |
| 도구 | Evidently AI | 오픈소스 드리프트 감지 라이브러리 |
| 도구 | WhyLogs | 경량 데이터 로깅/드리프트 감지 |
| 개념 구분 | Covariate Shift | 입력 X 분포 변화 |
| 개념 구분 | Prior Probability Shift | 레이블 Y 분포 변화 |
👶 어린이를 위한 3줄 비유 설명
- 데이터 드리프트는 유행이 바뀌는 것과 같아요. 2010년 패션(학습 데이터)으로 만든 옷 추천 앱이 2024년(서빙 데이터)에는 이상한 옷만 추천하는 것처럼요.
- PSI는 체온계와 같아요. 평상시 체온(정상 분포)에서 얼마나 벗어났는지 수치로 알려주고, 38도(PSI 0.2)가 넘으면 병원에 가야 한다고 알려줘요.
- 강물의 수위를 재는 것처럼, 데이터 분포가 얼마나 변했는지를 PSI로 매일 재서 홍수(모델 성능 급락) 전에 미리 대비해요.
📈 관련 키워드 및 발전 흐름도
학습 데이터 분포 P(x) ← 모델 학습 시점
│
▼
운영 데이터 분포 Q(x) ← 시간 경과 후 변화
│
▼
드리프트 유형 분류
├─► Covariate Shift: P(X) ≠ Q(X) (입력 분포 변화)
├─► Prior Probability Shift: P(Y) ≠ Q(Y) (레이블 분포 변화)
└─► Concept Drift: P(Y|X) ≠ Q(Y|X) (관계 자체 변화)
│
▼
감지 도구: PSI · KS Test · KL Divergence · Evidently AI
│
▼
CT 트리거 발동 → 자동 재학습 → 평가 게이트 → 배포