기초지식

Data Scaling

cho.nii 2024. 5. 8. 17:29

Data Scaling ?

  • 데이터 전처리 과정 중 하나
  • feature들마다 제각각인 데이터값의 범위에 대해 범위 차이가 클 경우, 모델 학습 시 0 또는 무한으로 발산할 수 있는 문제점을 해결할 수 있는 한가지 방안
  • 데이터 스케일링을 거치면 모든 피처들의 데이터 분포나 범위를 동일하게 조정할 수 있게 된다. 

 

(1) StandardScaler()

  • 모든 피처들이 평균 0, 분산 1인 정규분포를 갖도록 표준화한다.
  • 단, 데이터 내에 이상치가 있는 경우, 평균과 분산에 큰 영향을 주므로 스케일링 방법으로 적절하지 않다. 

 

(2) MinMaxScaler()

  • 모든 피처들이 0과 1 사이의 데이터값을 갖도록 한다, 즉 피쳐별로 최솟값은 0이고 최댓값은 1이 된다.
  • StandardScaler와 동일하게 이상치가 존재한다면 이상치가 극값이 되어 데이터가 아주 좁은 범위에 분포하게 되므로 스케일링 방법으로 적절하지 않다.

 

(3) MaxAbsScaler()

  • 모든 피처들의 절댓값이 0과 1 사이에 놓이도록 만들어준다. 즉, 0을 기준으로 절댓값이 가장 큰 수가 1 또는 -1을 가지게 된다.
  • 마찬가지로, 이상치의 영향을 크게 받아 이상치가 존재하는 경우 해당 방법은 적절하지 않다. 

 

(4) RobustScaler()

  • StandardScaler와 비슷하나, 평균과 분산을 사용한 StandardScaler와는 달리 RobustScaler는 중간값(median)과 사분위값(quartile)을 사용한다. 
  • 따라서, 이상치의 영향을 최소화할 수 있다. 
    • 이상치를 제거하고, 그 나머지 데이터의 분포를 기반으로 . 각데이터를 스케일링하는 것과 유사함 

StandardScaler

 

RobustScaler

 

 

(5) Normalizer()

  • 각 피처(feature)의 통계치를 이용하는, 즉 열(columns)을 대상으로 하는 앞의 4가지 방법과는 달리, Normalizer의 경우 각 행(row)마다 정규화가 진행되는 방식이다.
  • 이로써 한 행의 모든 피쳐들 사이의 유클리디안 거리가 1이 되도록 데이터 값을 만들어주어 좀 더 빠르게 학습할 수 있고 과대적합 확률을 낮출 수 있다.

    ** 유클리디안 거리(Eucledian distance): 공간에서의 두 점 사이의 거리를 의미하며 수학적으로는 두 점 사이의 차이를 제곱하여 루트를 씌운 꼴이다. 

 

[참고] 정규화(Normalization)와 표준화(Standardization)

** 정규화: 값들을 특정 범위, 주로 [0, 1]로 스케일링하는 것

** 표준화: 평균을 0, 표준편차를 1이 되도록 값을 스케일링하는 것 

 

 

 

참고 자료

https://dacon.io/codeshare/4526

 

sklearn으로 데이터 스케일링(Data Scaling)하는 5가지 방법🔥

 

dacon.io

 

https://blog.naver.com/mrp/221672080759

 

정규화와 표준화 Normalization vs Standardization

데이터 처리를 하다보면 데이터들의 스케일링 이슈가 중요한 요소로 작용하다는 걸 쉽게 알 수 있을 것이다...

blog.naver.com

 

https://velog.io/@bbdbbdb337/Robust-Scaling-%EC%9D%B4%EB%9E%80