AI/머신러닝

[머신러닝] 스케일링(Scaling), 정규화(Normalization), 표준화(Standardization)

caramel-bottle 2023. 12. 28.

정규화(Normalization)와 표준화(Standardization)는 머신러닝에서 데이터 전처리 과정에 사용되는 기법이다. 데이터의 스케일을 조정하여 모델의 학습이나 예측에 미치는 영향을 최소화하고, 모델의 성능을 향상시키는 데 도움을 준다. 

 

정규화(Normalization)와 표준화(Standardization)과정에서 데이터 스케일을 조정하는 것을 스케일링(Scaling)이라고 부른다


스케일링(Scaling)

  • 데이터를 특정한 스케일로 통일하는 것
  • 다차원의 값들을 비교 분석하기 쉽게 만들어주며, 자료의 오버플로우나 언더플로우를 방지하여 최적화 과정에서의 안정성 및 수렴 속도를 향항
  • 데이터를 모델링하기 전에 거치는 것이 좋음(int, float)

스케일링의 종류

  • StandardScaler: 평균과 표준편차를 사용
  • MinMaxScaler: 최대, 최소값이 각각 1과 0이 되도록 스케일링
  • RobustScaler: 중앙값과 IQR사용(아웃라이어의 영향을 최소화)

0과 1사이의 숫자를 사용하는 것은 속도 측면에서 좋다.


스케일링 예제

pandas를 사용하여 각각 다른 스케일의 데이터를 MinMaxScaler 방식을 사용하여 스케일링해본다.

데이터 선언

import pandas as pd

# 서로 다른 스케일의 두 데이터
movie = {'naver':[2, 4, 6, 8, 10], 'nexflix':[1, 2, 3, 4, 5]}

# DataFrame으로 변환
movie = pd.DataFrame(data=movie)

output>>


스케일링

from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler

# 스케일러 객체 생성
min_max_scaler = MinMaxScaler()

# 스케일링
min_max_scaler = min_max_scaler.fit_transform(movie)

output>>

array([[0.  , 0.  ],
       [0.25, 0.25],
       [0.5 , 0.5 ],
       [0.75, 0.75],
       [1.  , 1.  ]])

 

데이터 프레임으로 만들기

# 데이터프레임으로 만들기
pd.DataFrame(min_max_scaler, columns=['naver', 'netflix'])

output>>


정규화(Normalization)

  • 값의 범위(scale)를 0 ~ 1 의 값으로 바꿔주는 것
  • 학습 전에 scaling하는 것
  • 머신러닝에서 scale이 큰 feature의 영향이 비대해지는 것을 방지
  • scikit-learn에서 MinMaxScaler 사용

표준화(Standardization)

  • 값의 범위(scale)를 평균 0, 분산 1이 되도록 바꿔주는 것
  • 학습 전에 scaling하는 것
  • 머신러닝에서 scaling이 큰 feature의 영향이 비대해지는 것을 방지
  • 정규분포를 표준정규분포로 변환하는 것과 같음
  • scikit-learn에서 StandardScaler 사용

댓글