스케일링:
수치형 데이터의 단위·크기·범위를 일정하게 맞추는 전처리 과정
머신러닝은 스케일이 다른 변수들이 섞여 있으면 모델이 특정 변수에 과도하게 영향을 받는 문제가 발생한다.
⚠ 스케일 민감 모델
- KNN (거리 기반)
- SVM (거리 기반)
- 선형 회귀/로지스틱 회귀
- 신경망(딥러닝)
- PCA(주성분 분석)
반대로 트리 기반 모델은 스케일에 영향을 받지 않는다.
(RandomForest, XGBoost, LightGBM)
스케일링 종류
1) StandardScaler(표준화)
각 값을 평균(μ)=0, 표준편차(σ)=1로 변환하는 방식

즉, 데이터의 모양(분포)은 유지하면서 중심을 0, 분포 폭을 1로 조정한다.
언제 사용하는가?
- 데이터가 정규분포에 가깝거나 대칭적일 때
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
2) MinMaxScaler(최소-최대 정규화)
각 값을 0~1 범위로 변환한다.

데이터의 절대 범위를 일정하게 만들 때 유용
언제 사용하는가?
- 정규분포 형태가 아닐 때
- 값의 범위를 동일하게 만들고 싶을 때
- 딥러닝에서 자주 사용 (0~1 범위가 신경망과 잘 맞음)
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
3) RobultScaler(이상치에 강한 Scaler)
평균/표준편차 대신 중앙값(Median)과 IQR(사분위 범위) 기준으로 스케일링
이상치가 많은 경우 데이터 전체가 영향을 받지 않기 때문에 안정적
from sklearn.preprocessing import RobustScaler
scaler = RobustScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
스케일링 기준
| 목적 | 추천 스케일링 |
| 딥러닝 모델 | MinMaxScaler |
| 정규분포 데이터 | StandardScaler |
| 이상치가 많음 | RobustScaler |
| 차원 축소(PCA) | StandardScaler 필수 |
| 거리 기반 모델(KNN/SVM) | StandardScaler 또는 MinMaxScaler |
스케일링의 실제 효과
- KNN/SVM → 정확도 크게 향상됨
- 선형/로지스틱 회귀 → 계수가 안정화되고 학습 수렴 속도 개선
- 딥러닝 → 학습 속도 증가, 폭주/발산 방지
- PCA → 주성분 방향이 달라지므로 필수
split 이전에 스케일링을 진행하면 Test 데이터의 정보가 scaler에 반영되어 데이터 누수가 발생하기에 scale은 split 이후에 해야 한다.
'머신러닝' 카테고리의 다른 글
| 회귀 분석 (Regression Analysis) (0) | 2025.12.22 |
|---|---|
| 인코딩(Encoding) (0) | 2025.12.01 |
| 지도학습 & 비지도학습 (0) | 2025.11.28 |