본문 바로가기

배우기/복습노트[Python과 분석]

[복습] Python | 분석 | 스케일링(scaling) + 하루끝(20240201)

728x90
반응형

SVM, KNN, KMEANS 등 모델은 스케일링에 민감하다.

또한 회귀 분석 시, 회귀계수를 비교해야 할 때에는 스케일링이 반드시 선행되어야 한다.

딥러닝의 경우는 전부 스케일링이 되어야 한다.

즉, 거리기반 모델(KNN, KMEANS), (회귀 자체는 문제가 없으나) 회귀 계수를 구할 시, SVM, 딥러닝 시 필수

 

 

 

1. standard scale

  - 음수 출력

  - 평균은 0, 표준편차는 1 (표준화 작업)

(X - X.mean()) / X.std()

 

 

 

2. min_max_scale

  - 0 ~ 1사이에 분포

(X - X.min()) / (X.max() - X.min())

 

 

 

3. robust scale

  - 사분위수를 사용한 스케일링

(X - q2) / (q3 - q1)

 

 

 

예제) iris data set을 사용한 변수 스케일링

변수를 변환하는 과정(라벨 인코딩도 변수를 변환하는 것)은 preprocessing에 있다.

 

from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler

 

 

1) standard scale

 

 

2) min max scale

직접 계산

 

 

MinMax 스케일러 사용

 

두 결과가 같다.

 

각 컬럼의 최대/최소가 각각 1, 0임을 확인할 수 있다.

 

 

 

반응형

 

 

 

잘 된 스케일링과 잘못된 스케일링 방법의 비교

 

 

train data / test data 가 이미 나뉜 상황일 때!

 

1) 같은 기준으로(제대로 된 방식)

 

 

 

2) 서로 다른 기준으로(잘못된 방식)

 

시각화를 통하여 1)이 왜 잘 된 방식이고, 2)가 잘못된 방식인지 설명하고자 한다.

 

 

** 시각화를 통한 비교

 

 

 

결론적으로, train과 test를 합칠 수만 있다면 두 데이터 셋을 합쳐서 fitting한 결과를 다시 분리하여 transform 하는 것이 좋으나, 현실적으로 불가능하다면 train으로 fitting한 결과를 test data set에도 적용하여야 한다.

 

2) 처럼 수행한 경우 기존 데이터가 가지고 있는 특성(포인트들까지의 거리, 치우침 정도)이 왜곡된다. 특성을 잃어버려서 왜곡이 발생하는 것이다. 즉 잘못된 스케일링을 진행하면 원래 데이터가 가진 특성을 리턴해 줄 수가 없다.

728x90
반응형