본문으로 건너뛰기
실습하기

특성 스케일링과 전처리

머신러닝에서 특성 스케일링과 전처리는 모든 특성이 모델에 균등하게 기여하도록 하고, 학습하기 좋은 데이터 형식을 갖추도록 도와줍니다.

스케일링을 하지 않으면 KNN이나 경사하강법 기반 알고리즘 같은 모델은 값의 범위가 큰 특성에 편향될 수 있습니다.


흔한 전처리 단계

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

예제: 표준화와 정규화

아래 예제는 Scikit-learn에서 특성 스케일링을 수행하는 방법을 보여줍니다.

Scikit-learn에서 특성 스케일링
import numpy as np
from sklearn.preprocessing import StandardScaler, MinMaxScaler

# 예시 데이터셋
X_features = np.array([[1.0, 200.0],
[2.0, 300.0],
[3.0, 400.0]])

# 표준화 (평균=0, 표준편차=1)
scaler_standard = StandardScaler()
X_standard = scaler_standard.fit_transform(X_features)

# 정규화 (범위 [0, 1])
scaler_minmax = MinMaxScaler()
X_minmax = scaler_minmax.fit_transform(X_features)

print("표준화된 데이터:", X_standard)
print("최소-최대 스케일된 데이터:", X_minmax)

올바른 스케일링을 선택하려면?

  • 표준화(Standardization): 데이터가 정규분포에 가깝거나, 가우시안 분포 가정을 가진 알고리즘에서 사용 (예: 로지스틱 회귀, 선형 회귀, SVM)
  • 정규화(Normalization): 거리 기반 알고리즘에서 주로 사용 (예: KNN, 신경망)

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!