AI 용어집 · 기초 · 전통 ML·추천·검색 · 데이터·평가
데이터 누수 Data Leakage
데이터 누수는 모델을 학습할 때 실제 사용 시점에는 알 수 없는 정보, 특히 시험용 데이터나 정답의 단서가 학습 과정에 섞여 들어가는 실수다. 이렇게 되면 평가 점수는 높게 나오지만 실제 서비스에서는 성능이 크게 떨어진다.
어떻게 작동하나
머신러닝에서는 데이터를 학습용과 평가용으로 나눈 뒤, 모델이 한 번도 보지 못한 평가용 데이터로 실력을 잰다. 그런데 평가용 데이터가 학습에 섞이거나, 정답과 거의 같은 정보를 담은 열(피처)이 입력에 들어가면 모델은 진짜 규칙 대신 이 '지름길'을 외운다. 예를 들어 환자가 병에 걸렸는지 예측하면서 '치료제 처방 여부'를 입력으로 쓰면 이미 진단이 끝난 뒤의 정보를 미리 보는 셈이 된다. 데이터 전체로 평균이나 범위를 계산해 정규화한 뒤에 나누는 것처럼, 전처리 순서를 잘못 잡아도 평가용 데이터의 정보가 조금씩 새어 들어간다.
왜 중요한가
데이터 누수는 오류 메시지 없이 조용히 일어나서 발견하기 어렵다. 오히려 점수가 아주 좋게 나오기 때문에 팀은 모델이 잘 만들어졌다고 믿고 배포까지 하게 된다. 실제 환경에서는 그 지름길 정보가 없으니 성능이 갑자기 무너지고, 그때서야 원인을 찾느라 시간과 비용이 든다. 그래서 '너무 좋은 점수'는 축하보다 의심부터 해야 하는 신호로 여겨진다.
알아 둘 점
시간 순서가 있는 데이터는 무작위로 섞어 나누지 말고, 과거로 학습하고 미래로 평가해야 한다. 같은 사람이나 같은 문서에서 나온 데이터가 학습용과 평가용에 동시에 들어가지 않도록 묶어서 나누는 것도 중요하다. 전처리 기준은 학습용 데이터에서만 계산해 평가용에 적용한다. LLM에서는 벤치마크 문제가 학습 데이터에 섞여 들어간 경우를 따로 '데이터 오염'이라 부르는데, 넓게 보면 같은 계열의 문제다.
누수 막기 점검 목록
데이터 나누기
- 시간 순서 데이터는 과거로 학습, 미래로 평가했는가
- 같은 사람·문서가 양쪽에 섞이지 않았는가
입력과 전처리
- 예측 시점에 알 수 없는 열이 들어가지 않았는가
- 정규화 기준을 학습용 데이터에서만 계산했는가
결과 해석
- 점수가 지나치게 좋지 않은가
예시
쇼핑몰이 '이 고객이 다음 달에 떠날까'를 예측하는 모델을 만든다고 하자. 입력에 '회원 탈퇴 처리일' 같은 열이 실수로 들어가면 모델은 평가에서 거의 완벽하게 맞히지만, 아직 탈퇴하지 않은 고객을 미리 찾아야 하는 실제 서비스에서는 쓸모가 없어진다. 실무에서는 각 입력 열이 '예측하는 시점에 정말 알 수 있는 정보인가'를 하나씩 점검하는 방식으로 이런 누수를 막는다.