10일차 [ Scaling ] - votus777/AI_study GitHub Wiki

새로운 배게가 생겼다! 선생님은 배게가 아니라 냄비받침이라 하신다

           아무튼 모든 데이터는 반드시 스케일링 과정을 거쳐야 한다.    
           Condition number(조건수) 때문에 각 데이터의 결과값에 오차가 발생할 수 있기 때문이다.   
           조건수가 크면 작은 오차에도 전혀 다른 값을 가질 수 있다. 
  • 변수들의 단위가 달라서 숫자들 간의 스케일이 달라지거나,
  • 변수들 간의 상관관계가 너무 크거나

전자는 Scaling, 후자는 변수 선택이나 PCA를 사용한 차원 축소 등으로 해결한다.
특수한 경우에는 로그를 취해서 스케일링을 하기도 한다.

Standard scaler ( = Standardization, 표준화)

  • Standard scaler를 통해 데이터를 정규분포 형태로 변환

  • 평균 = 0, 표준편차 = 1이 되도록 하는 방법

  • 많은 데이터가 있는 경우 이는 각각 적용이 된다 ( each column of data, column, feature, variable) 서로 다른 단위를 가지고 있는 데이터들을 같은 기준으로 볼 때 사용

  • 특성의 최소값과 최대값 크기를 제한하지 않는다.

  • 그러나 이상치가 있는 경우 평균과 표준편차에 영향을 미쳐 값이 틀어질 수 있다.

  • 수식
    img

MinMax Scaler ( = Normallization, 정규화 )

  • MinMax scaler를 통해 데이터 변환

  • 최대값 = 1, 최소값 = 0 ( -1 ~ 1도 가능)으로 하여 그 사이에 값들이 위치할 수 있도록 하는 방법

  • 특정 데이터의 위치를 파악할 수 있다.

  • feature간 데이터 차이가 달라지면 각 데이터에 영향을 미치는 비중도 달라지게 되어 결과값이 부정확하게 나올 수 있기 때문

  • 2차원일 경우 y축도 0 ~ 1 사이에 위치하게 된다.

  • 역시 이상치가 있는 경우 스케일이 매우 압축이 될 수 있다.

  • 수식
    img2

MaxAbsScaler

  • 절대값이 0 ~ 1 사이에 위치하도록 한다. 즉 (-1 ~ +1) 사이로 재조정

  • 0을 기준으로 절대값이 가장 큰 수가 1 혹은 -1에 위치

  • 데이터가 모두 양수이면 MinMaxScaler와 비슷하게 동작하고 역시 큰 이상치에 민감할 수 있다.

Robust Scaler

  • 이상치 (Outlier)의 영향을 최소화 하는 스케일링 기법

  • 중앙값 (Median)이 0, IQR (Interquartile range, 사분범위)가 1이 되도록 변환

  • 참고로 모든 스케일은 훈련 셋과 테스트 셋에 같은 변환을 적용해야 한다.

  • 비슷하게 Quantile Transformer가 있다. 이건 1000등분을 해서 데이터를 각각 0 ~ 1 사이에 균등하게 위치시키는 방법이다.

이 외에 Normalizer 라고 특이한 놈도 있는데
지름이 1인 원에 데이터 포인트를 투영하는 방법이라고 한다.

치킨이 먹고 싶다.