배우기
인터랙티브·

데이터 누수

실제 예측 시점에 사용할 수 없는 정보가 학습에 들어가는 경로 차단하기

1

들어가며

검증 정확도 99%가 모델의 천재성이 아니라 정답을 미리 보거나 같은 환자를 다시 만난 결과일 수 있습니다.

데이터 누수는 배포 시점에는 얻을 수 없는 정보, 평가 대상의 통계, 같은 개체의 기억이 모델 개발과정에 들어가는 모든 현상입니다. 단순히 “목표 열을 입력에 넣는 실수”보다 범위가 넓습니다.

누수 모델은 내부 평가에서는 비정상적으로 뛰어나지만 시간·기관·고객이 바뀌면 급격히 무너집니다. 문제는 알고리즘보다 예측시점, 데이터 계보, 분할단위와 변환 fit 범위를 잘못 정의한 데 있습니다.

핵심 질문

각 입력값과 변환통계는 그 대상의 예측을 내리는 바로 그 시점에, 실제 운영 시스템에서 동일하게 만들 수 있는가?

예측 시점

기준선

실제 예측 시점에 알 수 있는 정보만 입력으로 허용합니다.

새어 들어온 미래

누수

결과 이후 정보와 전체 자료 통계가 학습에 들어가는 경로를 찾습니다.

파이프라인 격리

예방

분할 후 전처리·선택·튜닝을 학습 폴드 안에서만 수행합니다.

2

목표 누수

목표가 발생한 뒤 생성되거나 목표를 직접 반영한 변수가 입력에 포함됩니다. 해지완료 코드로 해지를 예측하거나 검사확정 뒤 처방으로 질병을 예측하는 사례입니다.

목표의 대리변수도 위험합니다. 환불 예측에서 “환불 처리 담당자”, 사망 예측에서 “사망진단서 작성 여부”는 이름에 목표가 없어도 결과 이후 과정입니다.

특성 중요도가 한두 변수에 압도적으로 몰리거나 현실보다 거의 완벽한 점수가 나오면 먼저 생성시점과 업무흐름을 감사합니다. 변수 제거 뒤 시간외 성능 변화를 확인합니다.

3

시간 누수

미래 관측값, 미래 집계, 나중에 수정된 최종 상태가 과거 예측행에 들어가는 경우입니다. 1월 1일 예측에 1월 전체 구매액이나 최종 정산상태를 쓰면 안 됩니다.

event time은 사건이 발생한 시점, available time은 데이터가 시스템에 도착해 사용할 수 있게 된 시점입니다. 검사일은 어제여도 결과가 오늘 오후에 입력됐다면 오전 예측에는 사용할 수 없습니다.

특성은 point-in-time join으로 기준시점 이전에 이용 가능했던 레코드만 결합합니다. 무작위 분할은 미래분포와 사후수정값을 과거 학습에 섞으므로 시간순 backtest가 필요합니다.

4

전처리 누수

전체 자료로 평균대체·표준화·PCA·변수선택을 한 뒤 분할하면 테스트셋의 분포와 목표관계가 변환규칙에 들어갑니다. 눈에 띄지 않아도 평가가 낙관적으로 됩니다.

분할 후 각 학습 폴드에만 전처리기를 fit하고 검증·테스트에는 transform만 합니다. 하이퍼파라미터와 변수선택도 같은 내부 경계를 따라야 합니다.

교차검증 코드 밖에서 정리한 “상위 상관변수 목록”도 누수일 수 있습니다. 도메인 정제와 데이터에서 학습되는 전처리를 구분하고 전체 파이프라인을 폴드 안에서 실행합니다.

fit(P,train)P(train),P(valid),P(test)\operatorname{fit}(P, \mathrm{train}) \to P(\mathrm{train}), P(\mathrm{valid}), P(\mathrm{test})
검증·테스트는 변환을 받지만 변환 기준을 결정하지 않습니다.
5

그룹 누수

같은 환자·고객·장비·가구·문서의 여러 행이 학습과 평가에 나뉘면 모델이 개체의 고유 패턴을 기억합니다. 의료영상 여러 장, 고객의 반복거래와 센서 창이 대표적입니다.

실제 사용이 신규 고객 예측이면 고객 단위, 신규 병원 일반화면 병원 단위로 분할합니다. 기존 고객의 미래를 예측하는 질문이라면 고객 내부 시간 경계도 함께 지켜야 합니다.

행 단위 정확도만 보고하지 말고 평가 그룹 수, 그룹별 사례 수와 미지 그룹 성능을 제시합니다. 그룹 수가 적으면 점수 불확실성이 큽니다.

6

중복과 근접 중복

완전 중복뿐 아니라 리사이즈·크롭 이미지, 같은 문서의 문장, 템플릿이 같은 질문, 한 사건에서 파생된 여러 행이 양쪽에 들어가도 누수입니다.

분할 전에 중복그룹을 정의하고 정확해시, 지각해시, 텍스트 유사도와 원천ID로 검사합니다. 중복 제거를 분할 뒤 각 세트에서 따로 하면 교차세트 근접중복이 남습니다.

웹 크롤링·공개 벤치마크에서는 사전학습 데이터가 테스트셋을 포함했는지도 확인해야 합니다. 이는 전통적 행 분할을 넘어선 평가 오염입니다.

7

Target Encoding 누수

범주별 목표평균을 같은 행의 목표를 포함해 계산하면 희귀 범주의 인코딩이 정답과 거의 같습니다. 한 번 등장한 상품의 인코딩은 해당 행의 y가 됩니다.

훈련행은 자신을 제외한 OOF 또는 ordered 통계, 검증·테스트는 해당 훈련폴드 전체 통계로 변환합니다. 작은 범주는 전체평균 쪽으로 스무딩합니다.

시간자료의 무작위 OOF는 미래 목표를 과거행에 넣을 수 있습니다. 예측시점 이전 관측만 누적하는 ordered encoding을 사용합니다.

8

검증셋 과적합

검증 결과를 반복 확인하며 알고리즘, 변수, 하이퍼파라미터, 확률 임계값을 선택하면 검증셋도 학습과정의 일부가 됩니다. 직접 계수를 학습하지 않아도 사람의 선택이 정보를 전달합니다.

100개 모델 중 최고 점수는 우연히 좋은 변동을 포함합니다. 최종 테스트를 잠그고 선택이 많으면 nested CV를 사용하며 실험 횟수와 결정 로그를 남깁니다.

공개 리더보드 반복 제출도 같은 문제입니다. private leaderboard·마감 후 외부검증처럼 완전히 미사용인 평가가 필요합니다.

9

샘플링 누수

전체 데이터에서 SMOTE를 한 뒤 분할하면 합성점이 테스트 사례와 그 이웃을 이용해 만들어질 수 있습니다. 원본과 거의 같은 합성점이 양쪽에 들어가 평가가 쉬워집니다.

언더샘플링도 전체에서 먼저 하면 테스트의 클래스 구성과 선택에 학습결정이 개입합니다. 재표본화는 각 학습 폴드 내부에서만 수행하고 검증·테스트는 실제 분포를 유지합니다.

확률 보정과 임계값은 배포 유병률을 반영한 별도 검증자료에서 정합니다. 과대표집된 훈련분포의 확률을 그대로 운영확률로 해석하지 않습니다.

10

누수 감사 절차

열별 특성정의서에 소스, 생성식, 관측창, 지연시간과 유효시점을 기록합니다. 작은 샘플 행을 골라 예측 기준시점 당시의 원천자료만으로 값이 재현되는지 수동 추적합니다.

감사 항목확인 질문증거
예측시점값이 언제 사용 가능했나?event·available time
분할단위새 행·개체·기관·미래 중 무엇인가?그룹·시간 키
변환 fit통계가 어느 행에서 계산됐나?파이프라인 로그
중복파생·근접 사례가 양쪽에 있나?해시·원천ID
목표 근접 변수결과 이후 업무코드인가?데이터 계보
성능 이상시간외·외부 성능도 유지되나?backtest·외부검증
11

직접 해보기

같은 개체의 반복행이 무작위 분할될 때 테스트행 중 학습에서 이미 본 개체가 될 가능성을 확인하세요.

데이터 누수 인터랙티브 랩

데이터 문제의 양과 처리 강도를 바꾸며 남는 정보와 왜곡이 어떻게 달라지는지 비교하세요.

훈련미래 테스트미래 정보가 훈련으로 들어오는 경로

조작할 때 그래프의 위치·모양·오류 구조를 먼저 보세요.

계산 결과

다른 행을 학습에서 봤을 확률 약 99.8%

한 테스트행 외 4개 반복행이 독립 분할된 단순 근사입니다. 신규 개체 성능을 보려면 행이 아니라 개체 단위로 나누세요.

확인할 것

한 조절값만 먼저 움직인 뒤 그래프의 어떤 부분이 변하고 무엇은 그대로인지 설명해보세요.

12

핵심 정리

  • 누수는 배포 시점에 없는 정보나 평가자료 통계가 학습에 들어가는 현상입니다.
  • 목표·시간·그룹·중복·전처리·target encoding 누수를 구분합니다.
  • 전처리·재표본화·선택은 각 학습 폴드 안에서만 적합합니다.
  • 검증 반복 사용도 선택과적합을 만들므로 최종 테스트를 잠급니다.
  • 특성별 available time과 데이터 계보를 기록하고 시간외 성능을 확인합니다.
13

더 깊이 알아보기

주제핵심 내용
Point-in-time Join예측 기준시점과 데이터 지연을 기준으로 그때 실제 이용 가능했던 가장 최근 레코드만 결합해 과거 특성을 재현합니다.
Feature Store오프라인 학습과 온라인 제공이 같은 정의·시점·기본값을 사용하게 하며 offline–online skew를 모니터링합니다.
Purged CV라벨 계산기간이 검증기간과 겹치는 훈련행을 제거하고 경계에 embargo를 둬 시간적 정보중첩을 차단합니다.
과정 완료데이터 유형부터 누수까지의 11개 강의를 연결하면 분석 가능한 데이터, 재현 가능한 변환과 정직한 평가셋을 설계할 수 있습니다.
데이터 다루기·EDA 학습 목록으로