머신 러닝을 적용할 데이터의 feature A과 feature B가 있다고 하자. feature A의 데이터는 범위가 1~100이고, feature B의 데이터는 범위가 1~5이다. 즉, 두 데이터의 범위가 크게 다른 경우이다. 특정 모델을 사용할 때, 두 feature의 중요도가 비슷함에도 불구하고 두 데이터의 범위가 크게 다르면 중요도가 다르게 반영될 수 있다. 이를 방지하고자 데이터의 범위를 비슷하게 조정하는 작업이 데이터 스케일링 (Data Scaling) 이다. 데이터 스케일링을 통해, 머신 러닝의 성능을 개선할 수 있다.
스케일링의 기법에는 여러 가지가 있는데, 대표적으로 standard scaling과 min-max scaling이 있다.
데이터의 통계값을 조정하는 방법이다. 데이터의 평균을 0, 분산을 1이 되도록 스케일링 한다.
scikit-learn에서 standard scaling을 할 수 있다.
from sklearn.preprocessing import StandardScaler
scaled = StandardScaler().fit_transform(x_train) # x_train = training set data frame
데이터의 최소값을 0, 최대값을 1이 되도록 스케일링 한다.
scikit-learn에서 min-max scaling을 할 수 있다.
from sklearn.preprocessing import MinMaxScaler
# feature_range = (min, max)로 최소값/최대값을 다른 값으로 설정할 수도 있는 듯.
scaled = MinMaxScaler(feature_range=(0,1)).fit_transform(x_train) # x_train = training set data frame
https://syj9700.tistory.com/56
https://zephyrus1111.tistory.com/218
https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html