Data Scaling이란?
데이터 스케일링이란 데이터 전처리 과정의 하나이다
데이터 스케일링을 해주는 이유는 데이터의 값이 너무 크거나 혹은 작은 경우에 모델 알고리즘 학습과정에서 0으로 수렴하거나 무한으로 발산해버릴 수 있기 때문이다
따라서, scaling은 데이터 전처리 과정에서 굉장히 중요한 과정이다
Scaler의 종류
StandardScaler (데이터의 최소, 최대 값을 모를 경우)
기존 변수의 범위를 평균값과 표준편차를 사용해 정규 분포로 변환
각 feature의 평균을 0, 분산을 1로 변경
모든 특성들이 같은 스케일을 가짐
이상치가 있을 때 평균과 표준편차에 영향을 미쳐 균형 잡힌 척도를 보장할 수 없음
RobustScaler (이상치를 포함하는 데이터를 표준화하는 경우)
standard scaler에 의한 표준화보다 동일한 값을 더 넓게 분포
모든 특성들이 같은 크기를 갖는다는 점에서 StandardScaler와 비슷하지만, 평균과 분산 대신 median과 quartile을 사용해 이상치에 영향을 받지 않음
MinMaxScaler (데이터의 최소, 최대 값을 알 경우)
데이터를 0-1 사이 값으로 변환
이상치가 있는 경우 변환된 값이 매우 좁은 범위로 압축될 수 있음 (이상치 존재에 민감)
데이터가 2차원 셋일 경우, 모든 데이터는 x축의 0과 1 사이에, y축의 0과 1사이에 위치하게 됩니다.
Normalizer
StandardScaler, RobustScaler, MinMaxScaler가 각 columns의 통계치를 이용한다면 Normalizer는 row마다 각각 정규화됨
Normalizer는 유클리드 거리가 1이 되도록 데이터를 조정함 (유클리드 거리는 두 점 사이의 거리를 계산할 때 쓰는 방법, L2 Distance)
Normalize를 하게 되면 Spherical contour(구형 윤곽)을 갖게 되는데, 이렇게 하면 좀 더 빠르게 학습할 수 있고 과대적합 확률을 낮출 수 있음
Scaler 사용 시 주의할 점
scaler는 fit과 transform 메서드를 지니고 있다. fit 메서드로 데이터 변환을 학습하고, transform 메서드로 실제 데이터의 스케일을 조정한다.
이때, fit 메서드는 데이터 변환을 학습하는 과정이기 때문에 학습용 데이터에만 적용해야 한다. 그 후, transform 메서드를 학습용 데이터와 테스트 데이터에 적용한다.
scaler는 fit_transform()이란 단축 메서드를 제공한다. 학습용 데이터에는 fit_transform() 메서드를 적용하고, 테스트 데이터에는 transform() 메서드를 적용한다