모델 학습에서 데이터 과학자가 시간의 70~80%를 쓰는 곳은 화려한 알고리즘 튜닝이 아니라 특성 공학(feature engineering)이다. raw 데이터는 결측치가 뚫려 있고, 단위가 제각각이며, "서울/부산/대구" 같은 문자열이 섞여 있다. 모델은 이걸 그대로 못 읽는다. 특성 공학은 이 raw 데이터를 알고리즘이 패턴을 학습할 수 있는 수치 표현으로 변환하는 작업 전체를 말한다.
MLA-C01 시험은 "이 데이터에 어떤 변환을 적용해야 하는가"를 시나리오로 끊임없이 묻는다. 알고리즘 이름보다 언제 어떤 변환을 고르는가가 핵심이다. 오늘은 스케일링, 인코딩, 결측치, 이상치라는 4대 변환을 본다.
연봉(예: 50,000,000)과 나이(예: 35)를 같은 모델에 넣으면, 거리 기반 알고리즘(KNN, K-Means)이나 경사하강법 기반 모델(선형회귀, 신경망)은 단위가 큰 연봉에 압도된다. 두 점 사이 유클리드 거리를 계산하면 나이 차이는 무시되고 연봉 차이만 반영된다. 스케일링은 모든 수치 특성을 비슷한 범위로 맞추는 작업이다.
from sklearn.preprocessing import StandardScaler, MinMaxScaler
# 표준화(Standardization): 평균 0, 표준편차 1로 변환
# z = (x - mean) / std
scaler = StandardScaler()
X_std = scaler.fit_transform(X_train)