데이터 스케일링

J. Hwang·2024년 2월 3일
0

머신 러닝을 적용할 데이터의 feature A과 feature B가 있다고 하자. feature A의 데이터는 범위가 1~100이고, feature B의 데이터는 범위가 1~5이다. 즉, 두 데이터의 범위가 크게 다른 경우이다. 특정 모델을 사용할 때, 두 feature의 중요도가 비슷함에도 불구하고 두 데이터의 범위가 크게 다르면 중요도가 다르게 반영될 수 있다. 이를 방지하고자 데이터의 범위를 비슷하게 조정하는 작업이 데이터 스케일링 (Data Scaling) 이다. 데이터 스케일링을 통해, 머신 러닝의 성능을 개선할 수 있다.

스케일링의 기법에는 여러 가지가 있는데, 대표적으로 standard scaling과 min-max scaling이 있다.

Standard scaling

데이터의 통계값을 조정하는 방법이다. 데이터의 평균을 0, 분산을 1이 되도록 스케일링 한다.
scikit-learn에서 standard scaling을 할 수 있다.

from sklearn.preprocessing import StandardScaler

scaled = StandardScaler().fit_transform(x_train)  # x_train = training set data frame

Min-max scaling

데이터의 최소값을 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

References

https://syj9700.tistory.com/56
https://zephyrus1111.tistory.com/218
https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html

profile
Let it code

0개의 댓글