스케일링 하는 이유

  • 데이터간 범위가 다르다면 머신이 동작하면서 오류값이 가장 낮은 곳으로 수렴하는 과정에서 속도 차이가 발생
  • 예를 들어 나이, 몸무게, 키 데이터가 있다면 나이와 몸무게는 키 데이터보다 숫자가 작아서 오류 역전파 과정에서 가중치가 크게 변하지 않음 하지만 키 데이터는 숫자가 커서 크게 변함..
  • 이를 해결하기 위해 모든 데이터들의 범위를 똑같이 맞춰주는 과정이 scaling
  • 분포의 모양을 바꾸는것은 아니다.

 


1. Min - Max Scaling

 

  • 수치형 데이터를 0~1 사이로 변경시켜줌
  • 언제나 0과 1의 값은 존재하게된다.
  • 코드 예시

우선 필요한 라이브러리 import 스케일러는 sklearn.preprocessing에 있다

 

 

랜덤 정수값으로 dataFrame 생성해서 확인을 한다. ( 1~100사이의 정수로 이루어진 size [200,5] df )

 

scaler 불러와서 우선 fit을 한다. fit은 통계값을 계산하는 과정이라 생각하면된다 여기서는 최대 최소값 찾는정도. 이후 transform을 통해 minMax Scaling수행하여 dataframe으로 확인한다.

 

최대 최소가 모두 0,1 이 된것을 확인 할 수 있다.

 


2. Standard Scaling 

  • 표준 정규분포화 하여서 평균이 0이고 표준편차가 1이 되도록 scaling을 하는 방법이다.
  • z-score 정규화라고도 말한다.
  • 코드 예시

standardScaler는 sklearn.preprocessing에 있다.

 

위의 minMax scaler와 똑같이 사용하면 된다.

 

mean이 정확한 0이 아닌 아주 작은 수로 되긴했지만 이는 컴퓨터의 표현의 한계이므로 넘어가자 std인 표준편차도 1로 수렴한것을 볼 수 있다.

 

+ Recent posts