상세 컨텐츠

본문 제목

MinMaxScaler의 정의와 사용 이유에 대해서

머신러닝/함수, 라이브러리

by byoelcardi 2023. 7. 24. 21:32

본문

MinMaxScaler 데이터의스케일을 조정하는 데 사용하는 데이터 전처리 기법 하나입니다. 주로 0 1 사이의 범위로 스케일링하는데 활용됩니다. 스케일링 범위는 유동적으로 정할 수 있지만 통상적으로 0과 1 사이가 계산이 쉽기 때문에 0과 1 사이로 범위를 지정합니다. 사용이유는 다음과 같습니다.

  • 알고리즘 수렴 속도 개선: 일부 머신러닝 알고리즘(예: 경사하강법 기반 알고리즘)은 데이터의 스케일이 크게 차이 나면 수렴 속도가 느려질 수 있습니다. 이를 방지하기 위해 데이터를 일정한 범위로 스케일링하면 수렴 속도가 개선될 수 있습니다.
  • 상관 계수 등의 영향 최소화: 일부 머신러닝 알고리즘은 변수들 사이의 스케일 차이로 인해 영향력이 큰 변수에 편향될 수 있습니다. MinMaxScaler를 사용하여 변수들의 스케일을 동일하게 조정하면 이러한 영향을 최소화할 수 있습니다.
  • 이상치 영향 완화: 데이터에 이상치가 있을 때 이상치가 모델에 큰 영향을 미치는 경우가 있습니다. MinMaxScaler를 사용하면 이상치의 영향을 상대적으로 줄여줄 수 있습니다.
  • 비교적 직관적인 스케일링: MinMaxScaler 사용하면 스케일링된 데이터가 0 1 사이의 범위로 변환되기 때문에 상대적으로 직관적으로 이해하기 쉽습니다.

코드로 적용하면 다음과 같습니다.

from sklearn.preprocessing import MinMaxScaler
#범위를 0부터 1로 정하기
sc = MinMaxScaler(feature_range = (0,1))
정한 범위에 맞춰서 preprocessing 진행
training_scaled = sc.fit_transform(dataset)

여기서 training_scaled를 출력했을 때 0.00206576767와 같은 소수점 값이 나올 수 도 있지만 "2.06576767 e-03"와 같은 지수표기법으로 나올 수도 있습니다. 같은 숫자이고 제대로 처리된 것입니다.

관련글 더보기