머신러닝에서 데이터 누수

발행: (2025년 12월 28일 오후 10:45 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

자주 멘티가 머신러닝 워크플로우에서 기본적인 실수를 저지릅니다: Exploratory Data Analysis (EDA) → 전처리 → 데이터셋 분할 → 모델 생성 → 평가. 보통 발생하는 문제는 테스트 데이터가 모델 학습 과정에서 우연히 이미 알려지는 경우입니다. 머신러닝에서는 이를 Data Leakage 라고 합니다.

Data Leakage란?

Data Leakage는 테스트 데이터의 정보가 학습 과정에 들어가 모델이 “볼 수 없어야 할” 데이터를 보게 되는 상황을 말합니다. 이 문제는 Train‑Test Contamination 범주에 속하며, 예를 들어 테스트 데이터의 평균이나 표준편차를 정규화 과정에 사용했을 때 발생합니다.

예시: 잘못된 정규화

정규화 공식:

# Standarisasi yang benar
x_scaled = (x - mean) / std

정규화를 데이터를 학습용과 테스트용으로 나누기 전에 수행하면 meanstd전체 데이터를 기준으로 계산됩니다. 그 결과 모델은 학습 중에 테스트 데이터의 정보를 간접적으로 엿보게 됩니다.

Data Leakage 방지 방법

  1. 데이터를 먼저 **학습 세트(train set)**와 **테스트 세트(test set)**로 분리합니다.
  2. 스케일러를 (예: StandardScaler) 학습 데이터에만 fit 합니다.
  3. 이미 fit된 스케일러를 사용해 학습 데이터와 테스트 데이터를 각각 transform 합니다.

이러한 절차를 따르면 모델은 학습 과정에서 테스트 데이터를 전혀 보지 못하게 되며, 얻은 평가는 실제 성능을 정확히 반영합니다.

Back to Blog

관련 글

더 보기 »

⚠️ 머신러닝에서 데이터 누수

현실 세계 ML 시스템을 망치는 조용한 정확도 파괴자 ML 엔지니어링 실패 시리즈 파트 2 대부분의 머신러닝 초보자들은 모델 선택에 집착한다...

피처 엔지니어링

Feature Engineering이란 무엇인가? - feature는 단순히 데이터의 열, 예를 들어 age, salary, number of purchases와 같은 컬럼이다. - Feature Engineering은 feature를 생성, 수정, 혹은 선택하는 것을 의미한다.