데이터 누수 (Data Leakage)

컴퓨터과학·AI
한 줄 정의: 모델이 학습 단계에서 원래는 알면 안 되는 정답 관련 정보를 몰래 엿봐서, 성능이 비정상적으로 높게 나오는 현상입니다.

쉽게 풀면

시험 전날 우연히 시험 문제와 답을 미리 본 학생을 떠올려봅시다. 이 학생은 실제 시험에서 만점을 받겠지만, 그건 실력이 늘어서가 아니라 답을 미리 알았기 때문입니다. 데이터 누수도 이와 같습니다. 모델을 학습시킬 때, 실제로는 예측 시점에 알 수 없어야 할 정보(미래 데이터, 정답과 직결된 값, 테스트셋의 정보 등)가 훈련 데이터에 실수로 섞여 들어가면, 모델은 그 정보를 이용해 "커닝"을 하게 됩니다. 그 결과 학습·검증 단계에서는 성능이 놀랍도록 좋아 보이지만, 실제 새로운 데이터에 적용하면 성능이 뚝 떨어집니다.

왜 중요한가

데이터 누수는 논문에서 보고한 모델 성능이 실제로는 신뢰할 수 없는 값이 되게 만드는 대표적인 원인이라, 기계학습 방법론과 실험 재현성을 다루는 논문에서 반드시 점검해야 할 항목으로 취급됩니다. 특히 시계열 예측이나 의료 데이터처럼 시간 순서나 개체 간 연관성이 중요한 분야에서는 무심코 미래 정보나 같은 환자의 데이터가 훈련과 검증에 동시에 섞여 들어가기 쉬워, 관련 연구에서 누수 방지 절차를 상세히 밝히는 것이 신뢰성의 중요한 근거가 됩니다. 또한 데이터 누수를 걸러내지 못한 채 발표된 성능은 실제 응용 단계에서 기대에 못 미치는 결과로 이어져 연구의 실용적 가치를 훼손할 수 있습니다.

논문에서는 이렇게 쓰입니다

"전처리 과정에서 발생한 데이터 누수를 방지하기 위해, 정규화 통계량은 훈련셋에서만 계산한 뒤 검증셋과 테스트셋에 동일하게 적용하였다."

이 문장은 "데이터를 전처리할 때 검증·테스트 데이터의 정보가 학습 과정에 흘러 들어가지 않도록, 오직 훈련 데이터만 사용해 전처리 기준을 정했다"는 뜻입니다.

"시계열 예측 모델을 평가할 때는 미래 시점의 데이터가 훈련 데이터에 포함되지 않도록 시간 순서를 유지한 분할 방식을 사용하여 데이터 누수를 방지하였다."

시계열 데이터에서는 무작위로 데이터를 나누면 미래 정보가 학습에 섞여 들어갈 수 있어, 시간 순서를 지키는 분할 방식이 필요하다는 뜻입니다.

"동일 환자의 여러 영상이 훈련셋과 테스트셋에 동시에 포함되지 않도록 환자 단위로 데이터를 분할하여 데이터 누수를 방지하였다."

의료 영상처럼 한 개체에서 여러 샘플이 나오는 경우, 같은 개체의 데이터가 훈련과 테스트에 걸쳐 섞이지 않도록 개체 단위로 나눠야 한다는 의미입니다.

조금 더 깊게 보면

데이터 누수는 발생 위치에 따라 몇 가지 유형으로 나눠볼 수 있습니다. 전처리나 특성 생성 과정에서 테스트 데이터의 통계량이 섞여 들어가는 경우, 시간 순서를 무시한 분할로 미래 정보가 새는 경우, 같은 개체나 그룹의 데이터가 훈련·검증·테스트에 나뉘어 들어가는 경우 등이 대표적입니다. 논문을 읽을 때는 데이터 분할 방식이 데이터의 구조(시간, 개체, 그룹)를 얼마나 고려했는지, 그리고 전처리 단계가 훈련 데이터에만 기반해 이루어졌는지를 확인하면 보고된 성능의 신뢰도를 가늠하는 데 도움이 됩니다.

주의할 점

데이터 누수는 과적합과 증상이 비슷해 보이지만 원인이 다릅니다. 과적합은 모델이 훈련 데이터의 세부 패턴까지 과하게 외워서 생기는 문제인 반면, 데이터 누수는 애초에 훈련 데이터 자체에 정답 정보가 부정하게 섞여 있어서 생기는 문제입니다. 교차검증을 설계할 때도 폴드 간에 정보가 새지 않도록 주의해야 합니다.

관련 용어