Home Project

Data Analyst's Home Project

[Legacy] Data/[Legacy] Machine Learning

데이터 스케일링 (Data Scaling)

Haeon 2019. 2. 13. 14:32
728x90


데이터 스케일링이란 데이터 전처리 과정의 하나입니다.

데이터 스케일링을 해주는 이유는 데이터의 값이 너무 크거나 혹은 작은 경우에 모델 알고리즘 학습과정에서 0으로 수렴하거나 무한으로 발산해버릴 수 있기 때문입니다.

따라서, scaling은 데이터 전처리 과정에서 굉장히 중요한 과정입니다.

가볍게 살펴보도록 하겠습니다.





1. What is Scaler?



(1) StandardScaler

각 feature의 평균을 0, 분산을 1로 변경합니다. 모든 특성들이 같은 스케일을 갖게 됩니다.


(2) RobustScaler

모든 특성들이 같은 크기를 갖는다는 점에서 StandardScaler와 비슷하지만, 평균과 분산 대신 median과 quartile을 사용합니다. RobustScaler는 이상치에 영향을 받지 않습니다.


(3) MinMaxScaler

모든 feature가 0과 1사이에 위치하게 만듭니다.

데이터가 2차원 셋일 경우, 모든 데이터는 x축의 0과 1 사이에, y축의 0과 1사이에 위치하게 됩니다.


(4) Normalizer

StandardScaler, RobustScaler, MinMaxScaler가 각 columns의 통계치를 이용한다면 Normalizer는 row마다 각각 정규화됩니다. Normalizer는 유클리드 거리가 1이 되도록 데이터를 조정합니다. (유클리드 거리는 두 점 사이의 거리를 계산할 때 쓰는 방법, L2 Distance)


why normalize input?에 대한 이미지 검색결과

(출처 : Andrew NG lecture)


Normalize를 하게 되면 Spherical contour(구형 윤곽)을 갖게 되는데, 이렇게 하면 좀 더 빠르게 학습할 수 있고 과대적합 확률을 낮출 수 있습니다.








2. Code

scikit-learn에 있는 유방암 데이터셋으로 데이터 스케일링을 해보겠습니다.


데이터를 학습용과 테스트용으로 분할했습니다.

scaler를 사용하기 이전에 주의해야될 점을 먼저 살펴보겠습니다.

scaler는 fit과 transform 메서드를 지니고 있습니다. fit 메서드로 데이터 변환을 학습하고, transform 메서드로 실제 데이터의 스케일을 조정합니다. 

이때, fit 메서드는 학습용 데이터에만 적용해야 합니다. 그 후, transform 메서드를 학습용 데이터와 테스트 데이터에 적용합니다. scaler는 fit_transform()이란 단축 메서드를 제공합니다. 학습용 데이터에는 fit_transform()메서드를 적용하고, 테스트 데이터에는 transform()메서드를 적용합니다.



(1) StandardScaler code

(오타가 났습니다. 제일 마지막 부분 '스케일 조정 후 feature Min value'에서 Min이 아니라 Max로 정정합니다.)





(2) RobustScaler code

(오타가 났습니다. 제일 마지막 부분 '스케일 조정 후 feature Min value'에서 Min이 아니라 Max로 정정합니다.)




(3) MinMaxScaler code

(오타가 났습니다. 제일 마지막 부분 '스케일 조정 후 feature Min value'에서 Min이 아니라 Max로 정정합니다.)





(4) Normalizer code

(오타가 났습니다. 제일 마지막 부분 '스케일 조정 후 feature Min value'에서 Min이 아니라 Max로 정정합니다.)






3. 적용해보기

SVC로 cancer 데이터셋을 학습해보겠습니다.

먼저, 데이터 스케일링을 적용하지 않은 채 진행하겠습니다.




다음은 데이터를 MinMaxScaler로 스케일을 조정하고 SVC모델로 학습시켜보겠습니다.


성능이 더 좋아졌습니다.





(참고 : introduction to MachineLearing with Python)





반응형
LIST