머신러닝의 데이터 누수(data leakage)는 대개 무해해 보이는 필드나 단계를 통해 들어옵니다. 이탈 예측 모델을 고객이 이미 해지한 뒤에야 채워지는 컬럼으로 학습시키는 경우가 있습니다. 사기 탐지 모델이 예측하려는 바로 그 조사 과정에서 설정되는 검토 플래그를 쓰기도 합니다. 전처리 단계에서 데이터를 나누기 전에 전체 데이터셋의 평균을 계산하면 테스트 행의 정보가 학습으로 새어 들어갑니다.
주요 원인은 다음과 같습니다.
- 타깃 누수(target leakage): 결과가 나온 뒤에, 또는 결과 때문에 기록되는 피처
- 학습·테스트 오염(train-test contamination): 같은 레코드나 거의 같은 사본이 분할 양쪽에 모두 들어간 경우
- 분할 전에 전체 데이터로 적합한 전처리(스케일링, 결측값 대체 등)
- 시간 누수(time leakage): 모델이 예측해야 할 기간 이후의 레코드로 학습한 경우
흔한 징후는 기대보다 좋은 결과가 나왔다가 모델이 새 데이터를 만나면 성능이 떨어지는 현상입니다.
데이터 누수는 과적합과 어떻게 다른가요?
- 과적합은 모델이 학습 데이터에만 있는 패턴을 익혔다는 뜻입니다. 학습 점수와 테스트 점수의 차이로 드러납니다.
- 누수는 테스트 결과가 더는 공정한 척도가 아니라는 뜻입니다. 정답이 데이터를 통해 모델에 전해졌기 때문에 학습 점수와 테스트 점수가 모두 좋아 보일 수 있습니다.
- 과적합은 모델과 학습 방식을 조정하거나 더 다양한 학습 데이터로 해결합니다. 누수는 데이터, 피처, 준비 단계의 순서를 바로잡아 해결합니다.
AI 업무에서 데이터 누수는 어디서 문제를 일으키나요?
한 팀이 학습 세트의 두 버전을 비교했더니 준비한 버전의 점수가 훨씬 높게 나옵니다. 수치상으로는 분명히 올랐지만, 추가한 피처 중 하나가 결과가 나온 뒤에야 채워지는 필드에서 만들어졌습니다. 상승분 대부분은 실제 개선이 아니라 누수에서 나왔습니다.
누수가 없다고 확인하려면 준비 기록이 필요합니다. 어떤 필드를 썼는지, 그 필드가 언제 채워지는지, 학습으로 얻은 모든 변환을 학습 데이터만으로 적합했는지를 알아야 합니다. 같은 평가 세트로 전후를 비교하면 결과가 달라졌다는 사실은 보입니다. 왜 달라졌는지는 준비 기록이 있어야 확인할 수 있습니다. Data quality for AI는 업무별 맥락 없이는 규칙 기반 검사로 잡아내지 못할 수 있는 문제 중 하나로 누수를 꼽습니다.