특성마다 다른 범위를 가지는 경우 머신러닝 모델들이 제대로 학습되지 않을 가능성이 있음 (KNN, SVM, Neural network 모델, Clustering 모델 등)
2. 데이터 스케일링 장점
설명 특성들을 비교 분석하기 쉽게 만들어 준다
Linear Model, Neural network Model 등에서 학습의 안정성과 속도를 개선
하지만 특성에 따라 원래 범위를 유지하는게 좋을 경우는 scaling을 하지 않아도 된다
3. 데이터 스케일링 종류
StandardScaler
변수의 평균,표준편차를 이용해 정규분포 형태로 변환 (평균 0, 분산 1)
이상치(Outlier)에 민감
RobustScaler
변수의 사분위수를 이용해 변환
이상치(Outlier)가 있는 데이터 변환시 사용
MinMaxScaler
변수의 Max 값, Min 값을 이용해 변환 (0 ~ 1 사이 값으로 변환)
이상치(Outlier)에 민감
Normalizer
특성 벡터의 길이가 1이 되도록 조정 (행마다 정규화 진행)
특성 벡터의 길이는 상관 없고 데이터의 방향(각도)만 중요할 때 사용
4. 데이터 스케일링 주의점
훈련세트와 테스트세트에 같은 변환을 적용해야 함
예를 들어 StandardScaler의 경우 훈련세트의 평균과 표준편차를 이용해 훈련세트를 변환하고, 테스트세트의 평균과 표준편차를 이용해 테스트세트를 변환하면 잘못된 결과가 나옴
5. code
# preprocessing에서 scaler 불러오기
from sklearn.preprocessing import StandardScaler
# scaler 객체 생성 후 데이터 스케일 변환
scaler = StandardScaler()
scaler.fit(X_train)
transform_X_train = scaler.transform(X_train)
transform_X_test = scaler.transform(X_test)
# 모델 학습 진행
model.fit(transform_X_train , y_train)