학습 자료

특성 스케일링과 전처리

머신러닝에서 모델 성능은 데이터 전처리(Preprocessing)에 크게 좌우됩니다.

일반적인 전처리 방법

  • 범주형 변수 인코딩: 문자열 레이블을 숫자 값으로 변환
  • 결측값 처리: 누락된 값을 대체하거나 제거
  • 특성 변환: 로그 변환, 다항식 변환 등 수학적 변환을 적용해 데이터 분포를 개선
  • 특성 스케일링: 데이터를 정규화(Normalization) 또는 표준화(Standardization)해 비슷한 범위로 변환

특히 특성 스케일링(Feature Scaling)은 서로 다른 단위를 가진 데이터를 동일한 스케일로 맞추어 모델이 더 효율적으로 학습하도록 돕습니다.

예를 들어, 다음과 같은 데이터가 있다고 가정해 봅시다.

예시 데이터프레임
import numpy as np import pandas as pd # 예시 데이터프레임 df = pd.DataFrame({ "height": [150, 160, 170, 180, 190], "weight": [50, 65, 80, 90, 120] }) print(df) # 출력 # height weight # 0 150 50 # 1 160 65 # 2 170 80 # 3 180 90 # 4 190 120

위 데이터에서 키는 cm 단위로 측정되었고, 몸무게는 kg 단위로 측정되었습니다.

이 데이터를 사용해 모델을 학습하려면 두 특성을 동일한 단위로 맞춰야 합니다.

이를 위해 특성 스케일링을 사용할 수 있습니다.

특성 스케일링 적용
from sklearn.preprocessing import StandardScaler, MinMaxScaler X = df[["height", "weight"]] # 표준화 (평균=0, 표준편차=1) scaler_standard = StandardScaler() X_standard = scaler_standard.fit_transform(X) # 정규화 (범위 [0, 1]) scaler_minmax = MinMaxScaler() X_minmax = scaler_minmax.fit_transform(X) print("표준화 결과:", X_standard) print("정규화 결과:", X_minmax)

표준화 결과 (StandardScaler)

키(cm)몸무게(kg)
0-1.414-1.152
1-0.707-0.577
20.0000.000
30.7070.385
41.4141.345

평균을 0, 표준편차를 1로 맞추어 분포를 유지하면서 스케일을 조정합니다.


정규화 결과 (MinMaxScaler)

키(cm)몸무게(kg)
00.000.00
10.250.23
20.500.46
30.750.62
41.001.00

모든 값을 0과 1 사이로 압축해 특성 간 스케일을 동일하게 맞춥니다.


올바른 스케일링 선택하기

  • 표준화(Standardization)

    • 평균을 0, 표준편차를 1로 맞추어 데이터의 분포를 정규화
    • 정규분포를 가정하는 알고리즘에서 주로 사용
    • 예: 로지스틱 회귀, 선형 회귀, SVM
  • 정규화(Normalization)

    • 데이터 값을 [0, 1] 범위로 압축
    • 거리 기반 알고리즘에서 주로 사용
    • 예: KNN, 신경망
Quiz
0 / 1

머신러닝 모델에서 특성 스케일링을 적용하는 핵심 이유는 무엇인가요?

특성 스케일링이 없으면, KNN이나 경사하강법 기반 알고리즘 같은 모델은 숫자 범위가 특성에 편향될 수 있습니다.
더 작은
더 큰
동일한
무작위

학습 자료

AI 튜터

디자인

업로드

수업 노트

즐겨찾기

도움말