#개념

데이터 누수(Data Leakage)는 모델을 학습하거나 평가하는 과정에서 실제 예측 시점에는 사용할 수 없는 정보가 학습 데이터에 포함되어, 검증 성능은 매우 높지만 프로덕션에서는 그 성능이 재현되지 않는 현상을 말한다. 누수가 있는 모델은 예측 문제를 푸는 것이 아니라 정답이 남긴 흔적을 읽어 내는 것이므로, 오프라인 평가 지표가 아무리 좋아도 배포 후에는 무력하다.
Kaufman 등(2012)은 누수를 "모델링 대상에 대한 정보가 데이터 마이닝 과정에 부적절하게 도입되는 것"으로 정의하고, 이를 두 가지 유형으로 형식화했다. 첫째는 타깃 누수(Target Leakage)로, 예측 대상(타깃)의 함수이거나 타깃이 결정된 이후에 생성되는 정보가 특징(feature)에 포함되는 경우다. 이들은 "정당한(legitimate) 특징"을 예측 시점에 실제로 관측 가능한 정보로 정의하고, 누수는 바로 이 정당성 조건이 깨진 상태라고 설명했다.
둘째는 학습-테스트 오염(Train-Test Contamination)으로, 테스트 데이터의 정보가 학습 과정에 흘러 들어가 평가가 독립적인 데이터로 이루어지지 않는 경우다. 이 분류는 이후 Kapoor와 Narayanan(2023)이 17개 분야 294편의 논문에서 발견한 누수 사례를 체계화하면서, 학습-테스트 분리의 부재, 전처리 단계의 누수, 특징 선택의 누수, 중복 샘플, 정당하지 않은 특징, 시간 누수, 비독립 샘플, 분포 불일치 등 세부 유형으로 확장되었다.
실무에서 자주 마주치는 누수는 다음과 같이 구분된다.
  • 타깃 누수 : 타깃의 결과로 생기는 정보가 특징에 섞이는 경우다. 대출 연체를 예측하는 모델에 "추심 담당자 배정 여부"가 특징으로 들어가거나, 고객 이탈 예측에 "해지 상담 기록"이 포함되는 식이다. 이러한 특징은 타깃이 확정된 뒤에만 채워지므로 학습 시에는 완벽한 예측력을 보이지만 예측 시점에는 존재하지 않는다.
  • 학습-테스트 오염 : 데이터를 나누기 전에 전체 데이터로 결측치 대체, 표준화, 특징 선택, 오버샘플링을 수행하거나, 같은 레코드가 학습과 테스트에 중복으로 들어가거나, 테스트 데이터를 보면서 하이퍼파라미터를 반복 조정하는 경우다.
  • 시간 누수(Temporal Leakage) : 시계열이나 이벤트 데이터를 무작위로 분할하여 미래 시점의 데이터로 과거를 예측하도록 학습시키거나, 미래 정보가 집계된 특징(예: 월 전체 평균을 월초 레코드에 부여)을 사용하는 경우다. 예측 시점 이후에 갱신되는 테이블을 조인하면 미래 정보가 조용히 유입되는 미래 정보가 담긴 특징(Look-ahead Feature)이 생긴다.
  • 그룹 누수(Group Leakage) : 같은 환자, 같은 사용자, 같은 기기에서 나온 여러 샘플이 학습과 테스트에 나뉘어 들어가, 모델이 일반화 능력이 아니라 개체의 고유한 특성을 외우는 경우다. 의료 영상에서 한 환자의 여러 촬영본이 양쪽에 나뉘면 성능이 크게 부풀려진다.
  • 전처리 누수(Preprocessing Leakage) : 스케일러나 인코더, 차원 축소, 특징 선택기를 테스트 데이터까지 포함해 적합(fit)하는 경우로, 테스트 분포의 통계량이 학습에 반영된다. 특히 수천 개 특징 중 타깃과 상관이 높은 것을 전체 데이터로 고른 뒤 교차 검증을 수행하면, 무작위 데이터에서도 높은 정확도가 나오는 전형적인 함정이다.
누수 사례는 데이터 과학의 역사에서 반복적으로 등장한다. 병원 데이터로 폐렴 환자의 사망 위험을 예측한 연구에서는 천식 환자의 위험이 낮게 학습되었는데, 실제로는 천식 환자가 고위험군으로 분류되어 즉시 집중 치료를 받았기 때문에 결과가 좋았던 것으로, 치료라는 개입의 결과가 특징에 반영된 타깃 누수의 고전적 사례다. 또 다른 의료 사례로는 흉부 X선 영상 분류에서 특정 병원의 촬영 장비나 영상에 찍힌 마커가 질병 여부와 상관되어, 모델이 병변 대신 촬영 환경을 학습한 경우가 보고되었다.
Kaggle 대회에서도 누수가 자주 발견된다. Kaufman 등은 KDD Cup 2008 유방암 검출 대회에서 환자 ID가 데이터 수집 출처와 상관되어 그 자체로 강력한 예측 변수가 된 사례, INFORMS 2010 대회에서 타깃 기간의 정보가 특징에 섞인 사례를 분석했으며, 이후 여러 대회에서 파일의 생성 시각, 행의 순서, 이미지 메타데이터, 집계 통계에 포함된 테스트 레코드 등이 의도치 않은 누수 경로로 밝혀졌다.
금융에서는 사기 거래 탐지 모델에 "거래 취소 여부"처럼 사기 판정 이후에 발생하는 처리 결과가 특징으로 들어가는 일이 흔하고, 추천 시스템에서는 사용자의 미래 클릭 이력으로 집계한 인기도 특징이 과거 시점의 추천 평가에 쓰이는 시간 누수가 자주 발생한다.
누수를 탐지하는 주요 신호는 다음과 같다.
누수 탐지 신호
  • 비정상적으로 높은 성능: 과거 경험이나 문헌에 비해 성능이 지나치게 좋거나, 단순한 모델이 복잡한 모델만큼 잘 맞거나, 학습 직후 바로 거의 완벽한 정확도가 나오면 누수를 의심해야 한다.
  • 특징 중요도(Feature Importance) 점검: 트리 모델의 분할 기여도, 순열 중요도(permutation importance), SHAP 값을 확인하여 특정 특징 하나가 압도적으로 중요하면 그 특징이 어떻게 생성되고 언제 채워지는지를 추적한다.
  • 단일 특징 AUC(Single-feature AUC): 각 특징 하나만으로 타깃을 예측하는 단변량 모델의 AUC나 상호 정보량을 계산하여 0.9 이상처럼 비현실적으로 높은 값을 보이는 특징을 가려낸다.
이 밖에도 특징 생성 시각과 타깃 확정 시각을 비교하는 타임스탬프 감사, 학습 데이터와 테스트 데이터 간 중복 레코드 또는 중복 해시 검사, 학습 데이터와 테스트 데이터를 구별하는 적대적 검증(adversarial validation), 그리고 시간 순서를 유지한 백테스트와 무작위 분할 결과의 성능 차이 비교가 활용된다. 성능이 극적으로 좋을 때 "왜 이렇게 잘 맞는가"를 설명하지 못한다면 그 모델은 아직 배포할 준비가 되지 않은 것이다.
누수를 방지하는 원칙은 "테스트 데이터를 미래처럼 다루는 것"이다. 구체적인 원칙은 다음과 같다.
누수 방지 원칙
  • 분할 우선과 파이프라인화: 데이터 분할을 가장 먼저 수행하고 모든 전처리를 파이프라인(Pipeline)으로 묶어 학습 폴드에서만 fit하고 검증·테스트 폴드에는 transform만 적용한다. scikit-learn의 Pipeline과 cross_validate를 조합하면 각 교차 검증(Cross Validation) 폴드 내부에서 전처리가 재적합되어 전처리 누수가 구조적으로 차단된다.
  • 시간 순 분할(Temporal Split): 시간 의존 데이터는 시간 순으로 분할하고, 롤링 윈도 또는 확장 윈도 방식의 시계열 교차 검증으로 항상 과거로 미래를 예측하도록 평가한다.
  • 시점 정합(Point-in-time) 특징 생성: 각 학습 레코드의 예측 시점을 기준으로 그 시점 이전에 실제로 관측 가능했던 값만 조인하며, 피처 스토어(Feature Store)의 시점 정합 조회(point-in-time join)는 이를 자동화한다.
  • 그룹 기반 분할과 중복 제거: 같은 개체의 샘플이 분할 양쪽에 걸치지 않도록 그룹 기반 분할(GroupKFold 등)을 사용하고, 학습과 테스트 사이의 정확한 중복과 근사 중복을 사전에 제거한다.
  • 특징 검토와 문서화: 특징 하나하나에 대해 "이 값이 예측 시점에 존재하는가, 타깃의 결과로 생기는 값은 아닌가"를 도메인 전문가와 함께 검토하고, 특징 정의서에 생성 시점과 원천을 문서화한다.
테스트 데이터는 모델 선택이 끝난 뒤 단 한 번만 평가에 사용하며, 반복적인 모델 선택에는 별도의 검증 데이터를 쓴다. 최근에는 대규모 언어 모델(Large Language Models, LLM)에서 벤치마크 오염(Benchmark Contamination)이 새로운 형태의 누수로 주목받고 있다. 웹 전체를 긁어 만든 사전 학습 말뭉치에 MMLU, GSM8K, HumanEval 같은 평가 벤치마크의 문제와 정답이 포함되어 있으면 모델은 추론 능력이 아니라 암기로 점수를 얻는다.
n-gram 중복 검사 같은 단순 문자열 대조는 문제를 바꿔 쓰거나 번역한 변형을 걸러내지 못한다는 것이 밝혀졌고, 이에 따라 임베딩 유사도 기반 탐지, 모델이 벤치마크 정답을 외우고 있는지 확인하는 완성 기반 검사, 공개 이후 새로 만든 문제로 평가하는 동적 벤치마크, 비공개 평가 세트 운영 등이 대응책으로 사용된다. 결론적으로 데이터 누수는 알고리즘의 문제가 아니라 데이터 흐름과 시간의 문제이며, 평가 지표를 신뢰할 수 있게 만드는 분할·전처리·특징 생성의 규율이 모델 성능 그 자체보다 먼저 확보되어야 한다.

#관련 용어

교차 검증
데이터를 여러 폴드로 나누어 학습과 검증을 반복하는 평가 기법으로, 전처리를 폴드 내부에서 수행해야 누수를 막을 수 있다
특징 엔지니어링
원시 데이터로부터 모델 입력 특징을 만드는 과정으로, 예측 시점 이후의 정보가 섞이지 않도록 설계해야 한다
피처 스토어
시점 정합 조회로 각 레코드의 예측 시점 이전 특징 값만 결합하여 시간 누수를 방지하는 특징 저장소
과대적합
모델이 학습 데이터의 잡음까지 외워 일반화하지 못하는 현상으로, 누수와 함께 과대 추정된 성능의 주요 원인
모델 평가 지표
정확도, AUC 등 모델 성능을 수치화하는 지표로, 누수가 있으면 비현실적으로 높게 나타난다
데이터 리니지
특징이 어떤 원천과 변환을 거쳐 생성되었는지 추적하는 메타데이터로, 누수 특징의 생성 시점을 감사하는 데 활용된다

#직무 연관도

DA
Data Analyst
보통
예측 모델의 성능 보고서를 해석할 때 지나치게 높은 지표를 비판적으로 검토하고, 특징의 생성 시점과 비즈니스 흐름이 맞는지 검증하는 데 활용된다
DS
Data Scientist
밀접
모델 평가의 신뢰성을 좌우하는 핵심 개념으로, 분할 전략·전처리 파이프라인·특징 설계 전반에서 누수를 식별하고 차단하는 능력이 필수적이다
DE
Data Engineer
높음
학습 데이터 생성 파이프라인과 피처 스토어의 시점 정합 조회를 구현하여 미래 정보가 학습 데이터에 유입되지 않도록 보장하는 책임이 있다

#사용 사례

금융의료전자상거래인터넷 서비스통신보험
개요
데이터 누수는 신용 평가, 사기 탐지, 환자 위험 예측, 고객 이탈·구매 전환 예측, 추천 시스템 평가, 시계열 수요 예측, 그리고 대규모 언어 모델의 벤치마크 평가에 이르기까지 지도 학습 모델을 평가하는 모든 영역에서 성능 과대 추정의 원인으로 점검되어야 한다.
사례
전자상거래 기업이 구매 전환 예측 모델을 개발하면서 검증 AUC 0.98을 얻었으나, 특징 중요도를 점검하니 "장바구니 결제 페이지 체류 시간"이 압도적이었다. 이 특징은 결제 완료 이후 로그에서 집계되어 예측 시점에는 존재하지 않는 타깃 누수였고, 이를 제거하고 시간 순 분할과 시점 정합 특징으로 재학습하자 AUC는 0.81로 내려갔지만 배포 후 실제 전환율 예측과 일치했다.

#참고 자료

#추천 포스트

© 2024 diki All rights reserved.