코딩 다이어리

표준화(Standardization)와 정규화(Normalization) 본문

머신러닝/이론

표준화(Standardization)와 정규화(Normalization)

yc7764 2022. 11. 25. 15:46

Data Scaling

  • 각 변수들의 범위 혹은 분포를 같게 만드는 작업
  • 다차원의 값들을 비교 분석하기 쉬워짐
  • 데이터의 overflow나 underflow를 방지
  • 독립변수의 공분산 행렬의 조건수(condition number)를 감소시켜 최적화 과정에서의 안정성 및 수렴 속도를 향상

표준화(Standardization)

데이터의 평균을 0, 분산 및 표준편차를 1로 스케일링하는 것, 즉 특성들을 표준정규분포로 만드는 작업

  • 평균은 각각의 특성을 고려하지 않고 전체를 대표하는 값
  • 분산은 데이터가 평균으로부터 얼마나 떨어져 있는가의 척도(각 데이터에서 평균을 뺀 차이값의 제곱)
  • 분산은 제곱을 사용하여 값이 커져버려 분산에 루트를 씌운 표준편차를 이용
  • 데이터(X)에서 평균(m)을 빼고 표준편차(σ)로 나누어 표준화된 데이터(Z)를 구함
  • 이상치가 있다면 평균과 표준편차에 영향을 미쳐 데이터의 확산이 달라지므로 만약 이상치가 있는 경우 균형 잡힌 척도를 보장할 수 없음

정규화(Normalization)

정규화 공식

데이터의 값 범위를 0~1 사이의 값으로 스케일링하는 것, 즉 최대값은 1, 최소값은 0으로 데이터의 범위를 조정하는 작업

  • 데이터(X)에서 최솟값(Xmin)을 빼고 데이터의 전체 범위(Xmax - Xmin)로 나누어 정규화된 데이터(Xnew)를 구함
  • 표준화와 마찬가지로 이상치에 민감하며, 변환된 값이 매우 좁은 범위로 압축될 수 있음

Scikit-Learn의 Scaler 종류

python의 Scikit-Learn에서는 다양한 종류의 Scaler를 제공하고 있으며 대표적인 기법들은 아래의 표와 같음

종류 설명
StandardScaler - 기본적으로 사용하는 scaler로 평균과 표준편차를 사용하여 scaling
MinMaxScaler - 최대값이 1이고 최소값이 0이 되도록 scaling
MaxAbsScaler - 최대절대값 1이고 최소절대값이 0이 되도록 scaling
RobustScaler - 중앙값(median)과 IQR(interquartile range)를 사용하여 scaling
- 이상치의 영향을 최소화함