특성 스케일링과 전처리
머신러닝에서 특성 스케일링과 전처리는 모든 특성이 모델에 균등하게 기여하도록 하고, 학습하기 좋은 데이터 형식을 갖추도록 도와줍니다.
스케일링을 하지 않으면 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 강의를 등록해 주세요!