데이터 정규화(Data Normalization)는 머신러닝 모델을 개발할 때 거의 필수적으로 사용되는 전처리 작업이다. 데이터의 크기(스케일)가 서로 다르면, 일부 변수의 영향력이 과도하게 커지거나 작아져 모델의 학습이 왜곡될 수 있다.
이 글에서는 Min-Max 정규화, Z-점수 정규화, 로버스트 스케일링의 개념과 수식, 그리고 샘플 코드와 시각화를 통해 차이점을 자세히 설명하고자 한다.
데이터 정규화란?
정규화란, 서로 다른 스케일을 가진 데이터의 범위를 통일하여,
모델이 각 특성(변수)을 동등하게 해석하고 학습할 수 있도록 돕는 전처리 기법이다.
정규화를 사용하는 이유
- 특성 간 스케일 차이 제거
- 모든 특성이 동등한 범위를 가지도록 조정하여, 특정 피처가 모델에 과도한 영향을 주는 것을 방지한다.
- 모델 학습 속도 및 정확도 향상
- 정규화를 하면 경사 하강법(Gradient Descent)과 같은 최적화 알고리즘이 빠르게 수렴한다.
- 이상치 영향 최소화
- 특정 정규화 방식은 이상치의 영향을 줄여준다.
- 알고리즘 요건 충족
- K-NN, K-Means, PCA 등 거리 기반 알고리즘은 정규화된 데이터를 전제로 설계되어 있다.
정규화 방법별 비교와 수식
최소-최대 정규화(Min-Max Normalization)
- 수식:
- 특징: 모든 데이터를 0~1 범위로 변환
- 장점: 데이터 분포가 경계 내에 뚜렷할 때 유용
- 단점: 이상치에 민감
Z-점수 정규화(Z-Score Normalization, 표준화)
- 수식:
- 특징: 평균을 0, 표준편차를 1로 변환
- 장점: 이상치에 덜 민감
- 활용 예: 정규분포를 따르는 데이터에 유용
로버스트 스케일링 (Robust Scaling)
- 수식:
- 특징: 중앙값과 사분위수를 사용
- 장점: 이상치에 강한 정규화
- 활용 예: 데이터에 극단값(Outlier)이 많을 때
정규화 방법에 따른 차이를 차트로 확인하기

정규화 샘플 코드
import seaborn as sns
# 가상의 산포 데이터 A와 B 생성
np.random.seed(0)
data_A = np.random.normal(10, 2, 100)
data_B = np.random.normal(14, 3, 100)
# 데이터 프레임 생성
df = pd.DataFrame({'A': data_A, 'B': data_B})
# 최소-최대 정규화
df_min_max = pd.DataFrame(min_max_scaler.fit_transform(df), columns=['A', 'B'])
# Z-점수 정규화
df_standard = pd.DataFrame(standard_scaler.fit_transform(df), columns=['A', 'B'])
# 로버스트 정규화
df_robust = pd.DataFrame(robust_scaler.fit_transform(df), columns=['A', 'B'])
# 시각화
fig, axs = plt.subplots(4, 1, figsize=(10, 20))
# 원본 데이터
sns.kdeplot(data=df, ax=axs[0])
axs[0].set_title('Original Data')
# 최소-최대 정규화 데이터
sns.kdeplot(data=df_min_max, ax=axs[1])
axs[1].set_title('Min-Max Normalization')
# Z-점수 정규화 데이터
sns.kdeplot(data=df_standard, ax=axs[2])
axs[2].set_title('Z-Score Normalization')
# 로버스트 정규화 데이터
sns.kdeplot(data=df_robust, ax=axs[3])
axs[3].set_title('Robust Scaling')
plt.tight_layout()
plt.show()
데이터 정규화의 이유
- 특성 간 스케일 조정: 서로 다른 스케일을 가진 데이터 특성(변수)들의 범위를 조정하여, 각 특성이 모델 학습에 미치는 영향을 동등하게 만든다.
- 학습 효율성 향상: 특성들이 같은 스케일을 가짐으로써, 최적화 알고리즘이 더 빠르고 효과적으로 수렴할 수 있다.
- 이상치 영향 최소화: 정규화를 통해 이상치의 영향을 줄일 수 있으며, 보다 안정적인 모델을 구축할 수 있다.
- 알고리즘 요구사항 충족: 일부 머신러닝 알고리즘, 특히 거리 기반 알고리즘(예: K-최근접 이웃, K-Means)과 선형 모델은 특성들이 비슷한 스케일을 가질 때 최적의 성능을 발휘한다.
데이터 정규화는 선택이 아닌 필수
데이터를 정규화하는 것은 머신러닝과 데이터 분석에서 중요한 전처리 단계이다. 각 방법은 특정 상황과 데이터의 특성에 따라 적합하며, 데이터의 분포와 모델의 종류를 고려하여 적절한 정규화 방법을 선택해야 한다. 정규화를 통해 데이터를 표준화하면 모델의 학습 과정이 더 안정적이고 효율적이 되며, 더 나은 성능을 달성할 수 있다.