[ML] 전처리 SCALER 고르기

Hyunjun Kim·2024년 12월 24일

Machine Learning

목록 보기
5/7

데이터 전처리(preprocessing)에서 스케일링(scaling)은 머신러닝 모델의 성능과 학습 속도를 높이는 데 중요한 역할을 합니다. 데이터의 특성과 모델의 요구사항에 따라 적절한 스케일러를 선택해야 합니다. 아래는 주요 스케일러와 사용 상황을 정리한 내용입니다.

1. StandardScaler

기능: 데이터를 평균이 0, 분산이 1인 정규 분포 형태로 변환합니다.

사용 상황:

  • 데이터가 정규 분포에 가깝거나, 정규 분포를 가정하는 알고리즘 (예: 선형 회귀, 로지스틱 회귀, SVM, PCA).
  • 대부분의 피처들이 비슷한 범위를 가지지만 단위가 다를 때.

적합한 모델:

SVM, PCA, k-NN, 로지스틱 회귀 등.

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)

2. MinMaxScaler

기능: 데이터를 지정된 범위(기본적으로 0~1)로 스케일링합니다.

사용 상황:

  • 데이터의 분포가 정규 분포가 아니거나, 특정 범위(0~1)로 제한해야 하는 경우.
  • 피처 값의 최소/최대 범위를 유지해야 할 때 (예: 이미지 픽셀 값).
  • 이상치(outlier)가 거의 없는 경우.

적합한 모델:

  • 신경망 (딥러닝) 모델, k-평균 클러스터링.
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)

3. RobustScaler

기능: 중앙값(median)과 IQR(Interquartile Range, 사분위 범위)을 사용하여 스케일링합니다.

사용 상황:

  • 이상치(outlier)가 많아서 평균과 표준편차를 기준으로 스케일링하면 데이터 왜곡이 발생할 때.

적합한 모델:

  • 선형 회귀, 로지스틱 회귀, SVM 등.
from sklearn.preprocessing import RobustScaler
scaler = RobustScaler()
scaled_data = scaler.fit_transform(data)

4. MaxAbsScaler

기능: 각 피처의 절대 최대값이 1이 되도록 스케일링합니다.

사용 상황:

  • 데이터가 양수와 음수를 모두 포함하지만 0을 기준으로 대칭적일 때.
  • 희소 행렬(sparse matrix)처럼 데이터가 매우 희소할 때.

적합한 모델:

  • 선형 모델, 희소 데이터를 다루는 알고리즘.
from sklearn.preprocessing import MaxAbsScaler
scaler = MaxAbsScaler()
scaled_data = scaler.fit_transform(data)

5. Normalizer

기능: 각 데이터 포인트(샘플)의 벡터 크기가 1이 되도록 변환합니다 (L1, L2 정규화).

사용 상황:

  • 데이터 포인트 간의 방향(코사인 유사도)이 중요한 경우.
  • 피처 간의 상대적 크기가 중요하지 않을 때.

적합한 모델:

  • k-NN, 군집화 (예: k-평균), 텍스트 데이터나 추천 시스템에서 벡터 크기가 다를 때.
from sklearn.preprocessing import Normalizer
scaler = Normalizer()
scaled_data = scaler.fit_transform(data)

선택 가이드
정규 분포 기반 모델: StandardScaler
범위 조정 필요: MinMaxScaler
이상치가 많은 경우: RobustScaler
희소 데이터: MaxAbsScaler
벡터 정규화: Normalizer

profile
Data Analytics Engineer 가 되

0개의 댓글