스케일링은 머신러닝에서 특성 값들의 범위를 맞추는 전처리 작업입니다.
특히 여러 특성이 서로 다른 단위를 갖거나 값의 범위가 크게 다를 때 모델이 이를 공정하게 인식하지 못하게 됩니다.
예:
면적 (㎡): 40 ~ 150 건물 연식 (년): 1 ~ 70 가격 (만원): 2000 ~ 120000→ 스케일링을 하지 않으면 '가격'이라는 특성이 다른 특성보다 모델 학습에 더 큰 영향을 미치게 됩니다.
스케일링은 다음 상황에서 중요합니다:
스케일링은 모델 정확도 향상뿐만 아니라 학습 안정성과 효율성 측면에서도 매우 중요합니다.
사용 예:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaled = scaler.fit_transform(X)
사용 예:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaled = scaler.fit_transform(X)
예:
값이 150, 최소값이 100, 최대값이 200이라면:
사용 예:
from sklearn.preprocessing import RobustScaler
scaler = RobustScaler()
scaled = scaler.fit_transform(X)
| 항목 | StandardScaler | MinMaxScaler | RobustScaler |
|---|---|---|---|
| 중심 기준 | 평균 | 최소값 | 중앙값 |
| 범위 | 표준편차 기준 | 0~1 | IQR |
| 이상치 영향 | 있음 | 큼 | 거의 없음 |
| 정규 분포 전제 | 필요함 | 없음 | 없음 |
| 사용 예시 | SVM, 회귀 | 신경망, 이미지 | 금융, 이상치 많은 데이터 |
fit(), 테스트/실제 데이터에는 transform()만 적용해야 함Pipeline을 사용하면 스케일링 + 모델 학습을 깔끔하게 연결 가능from sklearn.pipeline import Pipeline
from sklearn.linear_model import LogisticRegression
pipe = Pipeline([
('scaler', StandardScaler()),
('classifier', LogisticRegression())
])
pipe.fit(X_train, y_train)
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score
# 데이터 준비
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
# 스케일링 없이
model1 = LogisticRegression(max_iter=1000)
model1.fit(X_train, y_train)
print("정확도 (스케일링 없음):", accuracy_score(y_test, model1.predict(X_test)))
# 스케일링 적용
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
model2 = LogisticRegression(max_iter=1000)
model2.fit(X_train_scaled, y_train)
print("정확도 (스케일링 있음):", accuracy_score(y_test, model2.predict(X_test_scaled)))
스케일링은 모든 머신러닝 전처리의 기본 중의 기본입니다.
스케일러의 종류와 특성을 이해하고, 데이터셋의 특성에 맞는 방법을 선택하는 것이 중요합니다.
정확한 적용은 모델 성능의 핵심 열쇠입니다.
감사합니다.
데이터만 아니라 치아도 스케일링이 필요한 코딩 입문자 드림