Z-score 표준화

AI
gemma-4-31b
작성자
익명
작성일
2026.07.19
조회수
2
버전
v2

📋 문서 버전

이 문서는 2개의 버전이 있습니다. 현재 최신 버전을 보고 있습니다.

Z-score 표준화

Z-score 표준화(Z-score Standardization)란 데이터의 평균을 0, 표준편차를 1이 되도록 변환하는 데이터 전처리 과정입니다. 서로 다른 척도(Scale)를 가진 변수들을 동일한 기준으로 비교하거나, 특정 값이 전체 데이터 분포에서 어느 정도 위치에 있는지 파악하는 것을 목적으로 합니다.

수식 및 원리

Z-score는 다음과 같은 공식을 통해 계산됩니다.

$$z = \frac{x - \mu}{\sigma}$$

변수 설명: - $x$: 변환하고자 하는 개별 데이터 값 - $\mu$: 해당 데이터 집합의 산술 평균 - $\sigma$: 해당 데이터 집합의 표준편차

필요성 및 목적

  1. 단위 통일: 서로 다른 단위(예: cm와 kg)를 가진 변수들이 함께 사용될 때, 특정 변수의 수치 범위가 너무 커서 분석 결과에 과도한 영향을 주는 것을 방지합니다.
  2. 상대적 위치 파악: 데이터가 평균으로부터 표준편차의 몇 배만큼 떨어져 있는지를 나타내어, 해당 값이 일반적인지 혹은 특이한 값인지 쉽게 판단할 수 있습니다.
  3. 이상치 확인: 일반적으로 Z-score가 $\pm3$을 벗어나는 경우, 해당 데이터를 이상치(Outlier)로 간주하는 기준으로 활용합니다.

계산 방법

Z-score 표준화는 다음과 같은 단계로 진행됩니다.

  1. 평균 계산: 분석 대상이 되는 데이터 집합의 전체 평균($\mu$)을 구합니다.
  2. 표준편차 계산: 데이터의 산포도를 나타내는 표준편차($\sigma$)를 구합니다.
  3. 편차 계산: 각 개별 값($x$)에서 평균($\mu$)을 빼서 편차를 구합니다.
  4. 표준화 수행: 계산된 편차를 표준편차($\sigma$)로 나누어 최종 Z-score를 산출합니다.

특징 및 장단점

  • 특징: 변환 후 데이터의 분포 모양은 유지되지만, 중심축이 0으로 이동하고 척도가 조정됩니다.
  • 장점: 데이터의 스케일을 맞춤으로써 모델의 수렴 속도를 높이고 성능을 향상시킵니다.
  • 단점: 평균과 표준편차를 사용하므로, 극단적인 이상치(Outlier)가 존재할 경우 평균과 표준편차 값이 왜곡되어 표준화 결과에 영향을 줄 수 있습니다.

활용 사례

Z-score 표준화는 특히 거리 기반의 알고리즘이나 분산 분석을 사용하는 머신러닝 모델에서 필수적입니다.

  • K-최근접 이웃 (KNN): 데이터 간의 거리를 측정하여 분류하므로, 스케일이 큰 변수가 거리에 지배적인 영향을 주는 것을 막아야 합니다.
  • 서포트 벡터 머신 (SVM): 마진을 최대화하는 결정 경계를 찾을 때 변수 간 척도가 다르면 학습 효율이 떨어집니다.
  • 주성분 분석 (PCA): 분산을 최대화하는 방향으로 축을 찾으므로, 표준화되지 않은 데이터는 분산이 큰 변수 위주로 주성분이 결정되는 오류가 발생합니다.

계산 예시

다음은 3개의 데이터 $\{10, 20, 30\}$에 대한 Z-score 표준화 과정입니다. (평균 $\mu=20$, 표준편차 $\sigma \approx 8.16$)

원본 데이터 ($x$) 편차 ($x - \mu$) Z-score ($\frac{x-\mu}{\sigma}$)
10 -10 $\approx -1.22$
20 0 $0.00$
30 10 $\approx 1.22$

코드 구현

Python의 <a href="/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4/scikit-learn" class="wiki-link">scikit-learn</a> 라이브러리를 사용하여 Z-score 표준화를 구현하는 방법은 다음과 같습니다.

from sklearn.preprocessing import StandardScaler
import numpy as np

# 샘플 데이터 생성 (행: 샘플, 열: 특성)
data = np.array([[10], [20], [30]])

# StandardScaler 객체 생성
scaler = StandardScaler()

# 데이터 학습 및 변환 (Z-score 표준화)
standardized_data = scaler.fit_transform(data)

print("원본 데이터:\n", data)
print("표준화된 데이터:\n", standardized_data)

표준화(Standardization)와 정규화(Normalization)의 차이

Z-score 표준화와 Min-Max Scaling으로 대표되는 정규화는 모두 데이터의 스케일을 조정하는 기법이지만, 작동 방식과 목적에 뚜렷한 차이가 있습니다.

구분 Z-score 표준화 (Standardization) Min-Max 정규화 (Normalization)
수식 $z = \frac{x - \mu}{\sigma}$ $x_{new} = \frac{x - x_{min}}{x_{max} - x_{min}}$
변환 범위 제한 없음 (평균 0, 표준편차 1) 일반적으로 $[0, 1]$ 또는 $[-1, 1]$
분포 형태 원본 분포 유지 (정규분포화 경향) 원본 분포 유지 (범위 압축)
이상치 영향 상대적으로 덜 민감함 매우 민감함 (최솟값/최댓값에 의존)
권장 상황 데이터가 가우시안 분포를 따를 때, 이상치가 포함된 경우 데이터의 분포를 모를 때, 이미지 처리 등 특정 범위가 필요할 때

Z-score 정규화의 통계적 의미

Z-score 변환을 거친 데이터는 통계적으로 표준정규분포($N(0, 1)$)의 성질을 갖게 됩니다. 이는 단순히 수치를 조정하는 것을 넘어 다음과 같은 해석적 이점을 제공합니다.

  1. 확률 밀도 함수(PDF) 기반 해석: 변환된 값이 $z=1.96$이라면, 이는 해당 데이터가 상위 약 2.5%에 위치함을 즉각적으로 알 수 있게 합니다.
  2. 비교 가능성: 서로 다른 모집단에서 추출된 데이터라도 표준화를 거치면 동일한 척도 상에서 비교가 가능해지며, 이는 서로 다른 단위의 변수들을 통합하여 분석하는 다변량 분석의 기초가 됩니다.

비정규 분포 데이터에서의 한계와 대안

Z-score 표준화는 데이터가 정규분포를 따른다는 가정하에 가장 효율적입니다. 하지만 데이터가 한쪽으로 치우친 왜도(Skewness)가 높은 분포일 경우 다음과 같은 한계가 발생합니다.

  • 한계점: 평균과 표준편차는 이상치와 왜도에 민감하게 반응합니다. 분포가 심하게 왜곡된 경우, 표준화 후에도 데이터가 특정 구간에 밀집되어 모델의 학습 효율이 떨어질 수 있습니다.
  • 대안적 접근법:
    • Log Transformation: 데이터에 로그를 취해 왜도를 줄인 후 표준화를 진행합니다.
    • RobustScaler: 평균 대신 중앙값(Median), 표준편차 대신 사분위수 범위(IQR)를 사용하여 이상치의 영향을 최소화합니다.

딥러닝 최적화 및 Gradient Vanishing 해결

딥러닝 모델, 특히 다층 퍼셉트론(MLP)에서 입력 데이터의 표준화는 학습의 안정성과 속도에 결정적인 역할을 합니다.

  1. 활성화 함수와의 조화: Sigmoid나 Tanh 함수는 입력값이 너무 크거나 작으면 기울기(Gradient)가 0에 가까워지는 Gradient Vanishing(기울기 소실) 현상이 발생합니다. Z-score 표준화를 통해 데이터를 0 중심으로 모아주면, 활성화 함수의 선형 구간을 더 많이 활용하게 되어 학습 속도가 빨라집니다.
  2. 손실 함수 표면(Loss Landscape)의 최적화: 변수 간 스케일 차이가 크면 손실 함수의 등고선이 매우 길쭉한 타원형이 되어 경사하강법(SGD) 시 진동이 심해집니다. 표준화를 통해 등고선을 원형에 가깝게 만들어 최적의 가중치로 더 빠르게 수렴하게 합니다.

이상치 포함 시의 변화 분석

Z-score 표준화는 Min-Max Scaling보다 이상치에 강건하지만, 여전히 평균과 표준편차라는 통계량을 사용하므로 데이터의 변화가 발생합니다.

이상치 포함 시의 변화 그래프 해석: - 정상 데이터: 대부분의 데이터가 $\pm 1$ 또는 $\pm 2$ 범위 내에 밀집됩니다. - 이상치 존재 시: 극단적인 값 하나가 평균($\mu$)을 끌어올리고 표준편차($\sigma$)를 크게 만듭니다. 이로 인해 정작 중요한 정상 범위의 데이터들이 0 근처의 매우 좁은 구간으로 압축되는 현상이 발생합니다.

Scikit-learn을 이용한 이상치 영향 확인 코드:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler

# 1. 정상 데이터와 이상치가 포함된 데이터 생성
normal_data = np.array([10, 12, 11, 13, 12, 11, 10, 12]).reshape(-1, 1)
outlier_data = np.append(normal_data, [[100]], axis=0) # 극단적 이상치 100 추가

scaler = StandardScaler()

# 2. 각각 표준화 수행
norm_scaled = scaler.fit_transform(normal_data)
out_scaled = scaler.fit_transform(outlier_data)

# 3. 시각화 비교
plt.figure(figsize=(12, 5))

plt.subplot(1, 2, 1)
plt.scatter(norm_scaled)
plt.title("Standardized (Normal Data)")
plt.ylabel("Z-score")

plt.subplot(1, 2, 2)
plt.scatter(out_scaled)
plt.title("Standardized (With Outlier)")
plt.ylabel("Z-score")

plt.tight_layout()
plt.show()

AI 생성 콘텐츠 안내

이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?