move84

머신러닝에서의 정규화(Normalization)와 표준화(Standardization) 본문

머신러닝

머신러닝에서의 정규화(Normalization)와 표준화(Standardization)

move84 2025. 4. 10. 07:35
반응형

머신러닝 모델을 훈련시키기 전에 데이터를 전처리하는 것은 매우 중요하다. 그중에서도 정규화(Normalization)와 표준화(Standardization)는 데이터의 스케일을 조정하여 모델의 성능을 향상시키는 데 필수적인 기술이다. 이 두 방법은 데이터의 분포를 조정하여 특정 알고리즘이 더 잘 작동하도록 돕는다.


정규화 (Normalization)
정규화는 데이터의 값을 0과 1 사이의 범위로 조정하는 방법이다. 이는 데이터의 최소값과 최대값을 사용하여 스케일을 변경한다. 정규화는 특히 데이터의 범위가 다를 때 유용하며, 몇몇 알고리즘에서는 더 나은 성능을 보이게 한다. Min-Max 스케일링이라고도 한다.


📝 정규화 방법 (Normalization Methods)

  1. Min-Max 스케일링 (Min-Max Scaling): 가장 일반적인 정규화 방법으로, 데이터의 최소값과 최대값을 이용하여 값을 0과 1 사이로 조정한다.

    • 수식: X_scaled = (X - X_min) / (X_max - X_min)
  2. Robust 스케일링 (Robust Scaling): 이상치(Outlier)의 영향을 최소화하면서 데이터를 조정한다. 중앙값(Median)과 사분위수(Quartile)를 사용한다.

    • 수식: X_scaled = (X - Q1) / (Q3 - Q1) 여기서 Q1은 1사분위수, Q3은 3사분위수이다.

💻 Python 예제 (Python Example)
다음은 Python의 scikit-learn 라이브러리를 사용하여 Min-Max 스케일링을 적용하는 예제이다.

from sklearn.preprocessing import MinMaxScaler
import numpy as np

data = np.array([[1, 2], [3, 4], [5, 6]])

scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)

print(scaled_data)

이 코드는 2개의 특성을 가진 3개의 데이터 포인트를 정규화한다. 결과적으로 모든 값은 0과 1 사이의 범위로 변환된다.


📊 표준화 (Standardization)
표준화는 데이터의 평균을 0으로, 표준편차를 1로 만드는 방법이다. 이는 데이터가 정규 분포를 따르도록 변환하며, 이상치의 영향을 줄이는 데 도움이 된다. 표준화는 많은 머신러닝 알고리즘에서 데이터를 더 잘 처리할 수 있게 한다. Z-score 정규화라고도 한다.


📝 표준화 방법 (Standardization Methods)

  1. Z-score 표준화 (Z-score Standardization): 데이터의 평균과 표준편차를 사용하여 값을 조정한다.

    • 수식: X_scaled = (X - mean) / std 여기서 mean은 평균, std는 표준편차이다.
  2. Sklearn의 StandardScaler: scikit-learn 라이브러리에서 제공하는 표준화 클래스이다. Z-score 표준화를 쉽게 구현할 수 있다.


💻 Python 예제 (Python Example)
다음은 Python의 scikit-learn 라이브러리를 사용하여 Z-score 표준화를 적용하는 예제이다.

from sklearn.preprocessing import StandardScaler
import numpy as np

data = np.array([[1, 2], [3, 4], [5, 6]])

scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)

print(scaled_data)

이 코드는 데이터의 평균을 0으로, 표준편차를 1로 조정한다. 결과적으로 데이터는 표준 정규 분포에 가깝게 변환된다.


🤔 정규화 vs 표준화 (Normalization vs Standardization)

  • 정규화 (Normalization):

    • 데이터를 0과 1 사이의 범위로 조정한다.
    • 데이터 분포가 균등할 때 유용하다.
    • 이상치에 민감하다.
  • 표준화 (Standardization):

    • 데이터의 평균을 0, 표준편차를 1로 조정한다.
    • 데이터가 정규 분포를 따를 때 유용하다.
    • 이상치의 영향을 줄인다.

어떤 방법을 선택할지는 데이터의 특성과 사용하는 알고리즘에 따라 달라진다. 일반적으로는 표준화를 더 많이 사용하지만, 특정 알고리즘(예: 신경망)에서는 정규화가 더 나은 성능을 보일 수 있다.


💡 어떤 것을 선택해야 할까? (Which one should you choose?)

  • 데이터 분포 (Data Distribution): 데이터가 정규 분포에 가깝다면 표준화를, 그렇지 않다면 정규화를 고려한다.
  • 알고리즘 (Algorithm): 일부 알고리즘은 특정 스케일링 방법에 더 민감하게 반응한다. 예를 들어, K-means는 스케일에 민감하므로 정규화가 필요할 수 있다.
  • 이상치 (Outliers): 데이터에 이상치가 많다면 표준화 또는 Robust 스케일링을 사용한다.

📌 핵심 용어 정리 (Summary of Key Terms)

  • 정규화 (Normalization): 데이터를 특정 범위(예: 0과 1 사이)로 조정하는 과정. (Data scaling to a specific range, e.g., between 0 and 1)
  • 표준화 (Standardization): 데이터의 평균을 0으로, 표준편차를 1로 만드는 과정. (Transforming data to have a mean of 0 and a standard deviation of 1)
  • Min-Max 스케일링 (Min-Max Scaling): 최소값과 최대값을 사용하여 데이터를 0과 1 사이로 조정하는 정규화 방법. (A normalization method that scales data between 0 and 1 using minimum and maximum values)
  • Z-score 표준화 (Z-score Standardization): 평균과 표준편차를 사용하여 데이터를 조정하는 표준화 방법. (A standardization method that scales data using mean and standard deviation)
  • Robust 스케일링 (Robust Scaling): 중앙값과 사분위수를 사용하여 이상치의 영향을 줄이는 스케일링 방법. (A scaling method that reduces the impact of outliers using median and quartiles)
  • 이상치 (Outlier): 다른 데이터와 크게 다른 값. (A value that is significantly different from other data points)
반응형