핵심 인사이트 (3줄 요약)

  1. 본질: 데이터 드리프트 (Data Drift)는 학습 데이터와 운영(서빙) 데이터 간의 통계적 분포 차이로, 시간이 흐름에 따라 모델이 본 적 없는 패턴의 데이터를 처리하게 되어 성능이 저하되는 현상이다.
  2. 가치: PSI (Population Stability Index), KS Test 등 정량적 지표로 드리프트를 조기에 감지하면, 실제 모델 성능 저하가 비즈니스 손실로 이어지기 전에 재학습을 트리거할 수 있다.
  3. 판단 포인트: 드리프트 감지 임계값을 너무 낮게 설정하면 과도한 재학습(비용 낭비), 너무 높게 설정하면 모델 부패 방치(품질 저하)가 발생하므로 비즈니스 도메인에 맞는 임계값 캘리브레이션이 핵심이다.

Ⅰ. 개요 및 필요성

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오픈소스, 리포트 자동 생성사용 편의성 높음커스터마이징 제한
WhyLogsApache Whylabs의 경량 로깅낮은 오버헤드제한적 알고리즘
Great Expectations데이터 품질 검증 전문유연한 규칙 설정드리프트보다 품질 중심
Seldon Alibi-Detect고급 드리프트 감지 알고리즘MMD, LSDD 등 고급 방법복잡한 설정
SageMaker Model MonitorAWS 관리형완전 관리형, 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를 비교 설명하시오.

항목PSIKS 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줄 비유 설명

  1. 데이터 드리프트는 유행이 바뀌는 것과 같아요. 2010년 패션(학습 데이터)으로 만든 옷 추천 앱이 2024년(서빙 데이터)에는 이상한 옷만 추천하는 것처럼요.
  2. PSI는 체온계와 같아요. 평상시 체온(정상 분포)에서 얼마나 벗어났는지 수치로 알려주고, 38도(PSI 0.2)가 넘으면 병원에 가야 한다고 알려줘요.
  3. 강물의 수위를 재는 것처럼, 데이터 분포가 얼마나 변했는지를 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 트리거 발동 → 자동 재학습 → 평가 게이트 → 배포