아래 내용들은 제가 혼자 학습하면서 정리한 내용들입니다.
'부족한 내용' 혹은 '잘못된 내용'이 있을 수 있습니다.
댓글 남겨주시면 더욱 공부하고 수정하도록 하겠습니다.
감사합니다.
Data Scaling
- 데이터 전처리 과정 중 하나인 데이터 스케일링을 다룹니다.
- 데이터 간의 거리에 영향을 받는 알고리즘을 사용할 때, 특성들의 스케일이 차이가 많이 나면 머신러닝 모델이 잘 작동하지 않을 수 있습니다.
- 이때, 데이터의 스케일을 일정한 기준으로 맞춰 주는 방법으로 Data Scaling 을 하게됩니다.
대표적인 Scaling 개념
- Standardization(표준화)
- 특성들의 평균을 0, 분산을 1로 스케일링
- 표준점수(z-Score)를 활용해 Numpy로 표준화하기
mean = mp.mean(train_input, axis=0)
std = mp.std(train_imput, axis=0)
train_scaled = (train_input - mean) / std
- Normalization(정규화)
- 특성들을 특정 범위(주로 0~1)로 스케일링 하는 것
Scikit-Learn Scaler 사용하기
- scaler 는 fit 과 transform 메서드를 가진다
- fit 메서드는 훈련 데이터에 적용해서 훈련 데이터의 분포를 먼저 학습
- tranform 메서드를 이용해 훈련 데이터와 테스트 데이터에 적용
- fit 과 transform이 결합된 fit_transform() 메서드가 있다. 사용시 주의(훈련데이터에만 적용할 것)
- 테스트 데이터는 훈련 데이터와 같은 Scale로 변환을 해주어야 한다.
- 특성에 따라 각기 다른 스케일링을 적용하는 것이 유리할 수 있음
StandardScaler()
- 특성들의 평균을 0, 분산을 1로 스케일링
- 이상치에 매우 민감하다
- 회귀보다는 분류에 유용하다
from sklearn.preprocessing import StandardScaler
class sklearn.preprocessing.StandardScaler(*, copy=True, with_mean=True, with_std=True)
# Scaler 객체 생성
# Scaler 종류가 달라져도 학습방법은 비슷하다.
scaler = StandardScaler()
# 훈련 데이터로 학습시키기
scaler.fit(X_train)
# 훈련 데이터스케일링
X_train_Scaled = scaler.transform(X_train)
# 테스트 데이터 스케일링
Y_test_Scaled = scaler.transform(X_test)
# 훈련 - 스케일링 같이 하기
X_train_Scaled = scaler.fit_transform(X_train)
X_test_Scaled = sclaer.transform(X_test)
MinMaxScaler()
- 가장 작은 값이 0, 가장 큰 값이 1로 변환되므로, 모든 특성들이 [0, 1]의 범위를 갖게 스케일링
- 이상치에 매우 민감
- 분류보다 회귀에 유용하다
from sklearn.preprocessing import MinMaxScaler
class sklearn.preprocessing.MinMaxScaler(feature_range=(0, 1), *, copy=True, clip=False)
MaxAbsScaler()
- 각 특성의 절대값이 0과 1사이가 되도록 스케일링
- 모든 값이 -1 ~ 1의 값으로 표현된다
- 이상치에 매우 민감
from sklearn.preprocessing import MaxAbsScaler
class sklearn.preprocessing.MaxAbsScaler(*, copy=True)
RobustScaler()
- 평균과 분산 대신에 중앙값과 사분위값을 사용
- 이상치의 영향을 최소화할 수 있다.
from sklearn.preprocessing import RobustScaler
class sklearn.preprocessing.RobustScaler(*, with_centering=True, with_scaling=True, quantile_range=(25.0, 75.0), copy=True, unit_variance=False)[source]
Normalizer()
- Normalizer 의 경우 각 샘플(행)마다 적용되는 방식
- 한 행의 모든 특성들 사이의 유클리드 거리가 1이 되도록 스케일링
- 일반적인 데이터 전처리의 상황에서 사용되는 것이 아니라 모델(특히나 딥러닝) 내 학습 벡터에 적용
from sklearn.preprocessing import Normalizer
class sklearn.preprocessing.Normalizer(norm='l2', *, copy=True)[source]
Reference
https://scikit-learn.org/stable/modules/preprocessing.html
...끝
'ML & DL > Machine Learning' 카테고리의 다른 글
[ML] Logistic Regression (0) | 2023.01.10 |
---|---|
[ML] 선형 회귀(Linear, Polynomial, Multiple) (0) | 2022.12.19 |
[ML] Encoding : Label & One Hot (0) | 2022.12.16 |
[ML] KNN(K-Nearest Neighbor) (2) | 2022.12.12 |
[ML] 지도 학습, 비지도 학습, 강화 학습 (3) | 2022.12.09 |
댓글