빅데이터분석기사 핵심 토픽, 표준화·정규화 차이와 데이터 누수 막는 법

표준화와 정규화는 이름이 비슷해서 시험에서 서로 바꿔 내기 좋은 개념입니다. 더 중요한 것은 개념 구분이 아니라, 이를 어느 데이터에 대해 계산하느냐입니다. 이 부분을 잘못하면 모델 성능이 실제보다 좋게 나오는 데이터 누수가 생깁니다.

이 글의 구성

  • 스케일링이 필요한 이유
  • 표준화와 Min-Max 정규화
  • 이상치가 있을 때의 차이
  • 데이터 누수와 올바른 순서

스케일링은 왜 필요한가

키(cm)와 연봉(원)처럼 단위와 크기가 크게 다른 변수가 있으면, 거리를 계산하는 알고리즘은 값이 큰 변수에 끌려갑니다. K-최근접 이웃, K-평균, SVM, 경사하강법을 쓰는 로지스틱 회귀나 신경망이 대표적입니다. 반면 결정 트리 계열은 값의 크기가 아니라 순서로 분할하기 때문에 스케일링의 영향을 크게 받지 않습니다.

표준화와 Min-Max 정규화

표준화(Standardization)는 (값 – 평균) / 표준편차로 변환해 평균 0, 표준편차 1로 맞춥니다. 값의 범위는 정해져 있지 않습니다. Min-Max 정규화는 (값 – 최솟값) / (최댓값 – 최솟값)으로 변환해 0에서 1 사이에 놓습니다. 시험에서는 정규화라는 말이 두 가지 의미로 쓰이기도 하므로 문제 속 수식을 보고 판단하는 것이 안전합니다.

값 2, 4, 6, 8, 10을 예로 들면 평균 6, 모표준편차 약 2.83이므로 표준화하면 -1.41, -0.71, 0, 0.71, 1.41이 되고, Min-Max 정규화하면 0, 0.25, 0.5, 0.75, 1이 됩니다. 계산은 직접 실행해 확인했습니다. scikit-learn의 StandardScaler는 표준편차를 구할 때 n으로 나누는 모표준편차를 사용합니다.

이상치가 있으면 어떻게 달라지나

같은 데이터의 마지막 값을 10에서 100으로 바꿔 보겠습니다. 2, 4, 6, 8, 100을 Min-Max 정규화하면 0, 0.020, 0.041, 0.061, 1이 됩니다. 나머지 네 값이 0 근처에 몰려 서로의 차이가 거의 사라집니다. 이처럼 Min-Max는 최댓값과 최솟값에 의존하므로 이상치에 민감합니다. 표준화도 평균과 표준편차가 영향을 받아 완전히 자유롭지는 않고, 이상치가 많다면 중앙값과 IQR을 쓰는 RobustScaler 같은 방법을 고려할 수 있습니다.

데이터 누수를 막는 순서

데이터 누수(Data Leakage)는 모델을 평가할 때 쓰면 안 되는 정보가 학습에 흘러들어가는 현상입니다. 스케일링에서 흔한 실수는 전체 데이터로 평균과 표준편차를 구한 뒤에 학습용과 평가용으로 나누는 것입니다. 이렇게 하면 평가 데이터의 정보가 변환 기준에 이미 섞여 있어 성능이 낙관적으로 나옵니다.

올바른 순서: 먼저 학습·평가 데이터를 나눕니다. 학습 데이터에만 fit(평균, 표준편차 등 계산)하고, 그 기준으로 학습 데이터는 transform, 평가 데이터도 같은 기준으로 transform만 합니다. 평가 데이터에 fit을 다시 하면 안 됩니다. 교차 검증을 쓴다면 Pipeline으로 묶어 각 fold 안에서 fit이 이루어지게 합니다.

결측치 대체나 인코딩, 변수 선택도 같은 원칙이 적용됩니다. 데이터에서 무언가를 계산해 가져오는 모든 전처리는 학습 데이터에서만 배우는 것이 기본입니다.

범주형 변수와 파이프라인

원-핫 인코딩으로 만든 0과 1의 변수는 이미 범위가 같아서 보통 별도의 스케일링을 하지 않습니다. 수치형 변수만 골라 스케일링하고 범주형은 인코딩을 따로 적용한 뒤 합치는 방식이 일반적이며, scikit-learn에서는 ColumnTransformer와 Pipeline으로 이 과정을 하나로 묶을 수 있습니다. 묶어 두면 교차 검증 중에도 각 fold의 학습 데이터에만 fit이 이루어져 누수를 구조적으로 막아 줍니다.

한쪽으로 심하게 치우친 변수라면 스케일링 전에 로그 변환을 먼저 고려하는 경우도 많습니다. 스케일링은 값의 크기만 맞출 뿐 분포의 모양까지 바꿔 주지는 않기 때문입니다.

자주 하는 헷갈림 정리

스케일링과 비슷한 이름으로 로그 변환, 제곱근 변환, 박스-칵스 변환이 있지만 이들은 분포의 모양을 바꾸는 변환이고, 표준화와 Min-Max는 크기만 조정합니다. 또 정규화라는 말은 분포를 정규분포에 가깝게 만드는 것으로 오해되기도 하는데, Min-Max 정규화는 정규분포와 무관합니다. 표준화를 해도 원래 분포의 모양은 그대로이므로 정규분포가 되지는 않습니다. 이 세 가지를 구분해 두면 보기 문항의 함정을 피하기 쉽습니다.

한 줄 정리

스케일링은 거리나 경사하강법 기반 모델에서 필요하고, 이상치가 있다면 방식 선택에 주의해야 합니다. 어떤 방식이든 기준값은 학습 데이터에서만 계산하고 평가 데이터에는 그대로 적용한다는 원칙이 핵심입니다.

공부 팁 3가지

  1. 두 공식을 외우기 전에 작은 숫자 다섯 개로 직접 변환해 보면 차이가 몸에 익습니다.
  2. 스케일링이 필요한 알고리즘과 필요 없는 알고리즘을 두 묶음으로 나누어 기억하세요.
  3. 실기에서는 train_test_split 다음에 fit_transform은 학습용에만, transform은 평가용에만 쓰는 흐름을 습관으로 만드세요.

이 글은 학습용 정리이며 실제 시험 출제 범위와 다를 수 있습니다. 최신 시험 범위와 일정은 한국데이터산업진흥원 공식 공지를 확인하세요.

Leave a Comment