[R] 데이터 스케일링 완전 정리 – 표준화 vs 정규화

데이터 분석이나 머신러닝에서는 변수들의 단위나 값의 범위가 서로 다르면 분석 결과에 큰 영향을 미칠 수 있다. 예를 들어 한 변수는 키(단위: cm), 다른 변수는 연소득(단위: 백만 원)이라면, 숫자가 더 큰 변수의 영향력이 지나치게 커질 수 있다.

이러한 문제를 해결하기 위해 데이터 스케일링(Scaling)이라는 과정을 통해 변수의 크기를 일정한 기준으로 맞추게 된다. 스케일링의 대표적인 두 가지 방법인 정규화(Normalization)와 표준화(Standardization)를 개념부터 실습까지 모두 정리한다.

스케일링이란?

스케일링(Scaling)은 모든 수치형 변수의 크기를 비교 가능한 기준으로 조정하는 전처리 과정이다. 스케일링에는 여러 가지 방법이 있지만, 그 중에서도 실무에서 가장 많이 사용하는 방식은 다음 두 가지이다.

1. 표준화 (Standardization = Z-score 방식)

  • 평균을 0, 표준편차를 1로 조정
  • 결과는 양수/음수 범위로 분포
  • 정규분포 기반의 모델(선형 회귀, 로지스틱 회귀 등)에 적합
  • 이상치(outlier)에 상대적으로 덜 민감함

2. 정규화 (Normalization = Min-Max 방식)

  • 모든 값을 0과 1 사이로 조정
  • 거리 기반 모델(KNN, SVM, 군집분석 등)에 적합
  • 이상치의 영향을 많이 받음

예제: starwars 데이터 스케일링 실습

데이터 준비

library(dplyr)

data <- starwars %>%
  select(name, height, mass) %>%
  filter(!is.na(height), !is.na(mass))
R

표준화: scale() 함수 사용

data_standardized <- data %>%
  mutate(
    height_z = scale(height)[, 1],
    mass_z   = scale(mass)[, 1]
  )
R
  • 평균이 0, 표준편차가 1이 되는 방식
  • scale() 함수는 기본적으로 Z-score 방식의 표준화를 수행
  • [ , 1]은 행렬을 벡터로 변환하는 데 필요함

정규화: 사용자 정의 함수로 Min-Max 방식 적용

minmax <- function(x) {
  (x - min(x)) / (max(x) - min(x))
}

data_normalized <- data %>%
  mutate(
    height_norm = minmax(height),
    mass_norm   = minmax(mass)
  )
R
  • 모든 값이 0에서 1 사이로 조정됨
  • 이상치가 있는 경우 영향이 큼

결과 비교: head 출력

# 비교 출력
data_standardized %>%
  select(name, height, height_z) %>%
  head()

data_normalized %>%
  select(name, height, height_norm) %>%
  head()
R

시각화: 정규화된 값 비교

library(ggplot2)

# 시각적 비교
data_normalized %>%
  ggplot(aes(x = height_norm, y = mass_norm)) +
  geom_point(color = "steelblue") +
  labs(title = "0~1 정규화된 키와 몸무게", x = "Height (Normalized)", y = "Mass (Normalized)")
R

요약 정리

구분방식특징 및 적용 예시
스케일링상위 개념값의 단위/범위를 조정하여 비교 가능하게 함
표준화Z-score 방식평균 0, 표준편차 1 → 정규분포 기반 분석 적합
정규화Min-Max 방식0~1 범위로 압축 → 거리 기반 모델에 적합

마무리하며

스케일링은 데이터 분석에서 가장 기본적이면서도 중요한 전처리 과정이다. 특히 머신러닝에서는 변수 간의 상대적 중요도가 크기나 단위에 따라 왜곡되지 않도록 하기 위해 스케일링이 필수이다.

데이터 전처리의 질이 분석 전체의 성능을 좌우한다. 분석 목적과 데이터 특성을 고려하여 올바른 스케일링 방법을 선택하는 것이 무엇보다 중요하다.

1. 반드시 수치형 변수에만 스케일링을 적용해야 한다 (범주형은 제외).

2. 스케일링 전에는 결측치(NA) 제거가 필요하다.

3. 분석에 사용할 데이터와 예측 대상(test data)이 분리되어 있다면 반드시 훈련 데이터 기준으로 스케일링 파라미터(평균, 표준편차 등)를 고정해야 한다.

4. 정규화는 값의 범위를 압축하므로 이상치가 있으면 대부분의 값이 좁은 구간에 몰릴 수 있다.

scroll to the top of the site