⚠️ 머신러닝에서 데이터 누수

발행: (2025년 12월 2일 오후 01:28 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

ML 엔지니어링 실패 시리즈 파트 2

Symptoms

보이는 현상예시
검증 정확도가 매우 높음“와! 이 모델 대단해!”
산업 벤치마크에 비해 비현실적인 성능“우리는 시도도 없이 SOTA를 능가했어!”
학습 중 거의 완벽한 예측“프로덕션에 바로 적용 가능!”
배포 후 급격한 붕괴“모든 것이 망가졌어. 왜?!”

모델이 절대로 접근해서는 안 되는 패턴을 우연히 학습하면, 학습에서는 완벽하게 동작하지만 실제 환경에서는 전혀 쓸모가 없게 된다.

Illustrative case

소매 기업이 고객의 구독 취소를 예측하는 모델을 만들었다.

  • 학습 정확도: 94 %
  • 프로덕션 AUC: 0.51 (거의 무작위)

cancellation_timestamp 라는 특징이 정답을 누출했다: 학습 시 비‑null cancellation_timestamp 가 있으면 고객이 취소할 것이라는 것을 모델이 학습한 것이다. 이 특징은 추론 시 존재하지 않아 붕괴가 일어났다. 문제는 파이프라인 문제였지, 알고리즘 문제는 아니다.

Types of Leakage

유형설명
Target Leakage모델이 예측 전에 타깃 정보를 볼 수 있음.
Train–Test Contamination동일한 레코드가 학습 및 테스트 세트에 모두 존재함.
Future Information Leakage미래 타임스탬프의 데이터가 학습에 사용됨.
Proxy Leakage타깃와 높은 상관관계를 가진 특징이 숨은 지름길 역할을 함.
Preprocessing Leakage분할 전에 스케일링이나 인코딩을 수행해 겹침이 발생함.

Example: Preprocessing Leakage

# Leaky version
scaler = StandardScaler()
scaled = scaler.fit_transform(dataset)   # LEAKS TEST INFORMATION
x_train, x_test, y_train, y_test = train_test_split(scaled, y)

# Correct version
x_train, x_test, y_train, y_test = train_test_split(dataset, y)
scaler = StandardScaler()
x_train = scaler.fit_transform(x_train)
x_test = scaler.transform(x_test)

Detection Methods

신호지표
학습 정확도가 검증 정확도보다 훨씬 높음모델 성능이 의심스러움
검증 정확도가 프로덕션 정확도보다 훨씬 높음파이프라인 불일치
특정 특징이 중요도 점수를 압도함프록시 누수
모델이 희귀 이벤트를 완벽히 예측누수 없이는 불가능
배포 후 급격한 정확도 저하실제 환경 붕괴

견고한 워크플로우:

  1. Split → Preprocess → Train → Evaluate (시계열 데이터는 시간 순으로 분할).
  2. 데이터 라인리지와 소유자를 문서화.
  3. 프로덕션에서 허용되는 특징을 정의.
  4. 드리프트, 정확도, 실시간 피드백을 지속적으로 추적.

모델이 믿을 수 없을 정도로 좋은 성능을 보이면 축하하지 말고 조사하라. 좋은 모델은 점진적으로 개선되며, 완벽한 모델은 거의 항상 누수를 숨기고 있다.

Truth About Model Performance

  • 학습 정확도는 실제 성능이 아니다; 프로덕션이 유일한 진실이다.
  • 누수는 파이프라인 문제이며, 알고리즘 문제가 아니다; 엔지니어링이 모델링보다 중요하다.
  • 예방 > 디버깅: 학습 전에 데이터 설계를 바로 잡아라.

Feature Drift & Concept Drift — Why Models Rot in Production

모델은 입력 데이터 분포가 변하거나(특징 드리프트) 입력과 타깃 간 관계가 변할 때(컨셉 드리프트) 시간이 지남에 따라 정확도가 떨어진다. 악화를 감지하고 방지하려면:

  • 실시간으로 특징 통계와 모델 예측을 모니터링.
  • 드리프트가 감지되면 최신 데이터를 사용해 재학습.
  • 프로덕션 결과를 학습 파이프라인으로 되돌려주는 피드백 루프 유지.
Back to Blog

관련 글

더 보기 »

학습, 해킹, 그리고 배포 ML

Vyacheslav Efimov가 AI 해커톤, 데이터 사이언스 로드맵, 그리고 AI가 일상적인 ML Engineer 업무를 어떻게 의미 있게 변화시켰는지에 대해 이야기합니다. 포스트: Learning, Hacking, and Shipping...