특성 스케일링 (Feature Scaling)
1) 왜 특성 스케일링이 필요한가?
- 머신러닝 모델은 입력 특성 간의 스케일(값의 범위) 차이에 민감
| 특성 이름 | 값의 범위 |
| total_rooms | 6 ~ 39,320 |
| median_income | 0 ~ 15 |
- 이런 경우, total_rooms 특성의 영향력이 더 크게 작용하여 모델이 특정 특성에 편향될 위험이 있음.
해결 방법 → 특성 스케일링
→ 모든 수치형 특성의 스케일을 통일해주는 전처리 과정
→ **레이블(타깃 값)**에는 스케일링 적용 ❌
2) 대표적인 스케일링 방법
① Min-Max 스케일링 (정규화, Normalization)
- 값들을 0과 1 사이로 압축
변환 식

특징
- 값의 범위를 고정: [0, 1] (또는 feature_range로 지정 가능)
- 이상치에 매우 민감
예제 (Python + Scikit-learn)
import numpy as np
from sklearn.preprocessing import MinMaxScaler
data = np.array([[1000], [2000], [3000], [100000]]) # 이상치 포함
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)
print("정규화 결과:\n", scaled_data)
출력 결과
정규화 결과:
[[0. ]
[0.0102 ]
[0.0204 ]
[1. ]]
- 100000 같은 이상치 때문에 다른 값들이 0 근처로 몰림
② 표준화 (Standardization)
- 값들을 평균 0, 표준편차 1을 갖도록 변환
변환 식

- μ\mu: 평균값
- σ\sigma: 표준편차
특징
- 이상치에 덜 민감
- 선형 회귀, SVM, 로지스틱 회귀 등에서 잘 작동
예제 (Python + Scikit-learn)
from sklearn.preprocessing import StandardScaler
data = np.array([[1000], [2000], [3000], [100000]]) # 이상치 포함
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)
print("표준화 결과:\n", scaled_data)
출력 결과
표준화 결과:
[[-0.5001]
[-0.4922]
[-0.4843]
[ 1.4766]]
평균 기준으로 분산이 고려되어 이상치의 영향이 완화됨
'AI(ML & DL)' 카테고리의 다른 글
| [기계학습] ML 프로젝트 A - Z 까지 ( 6 ) (0) | 2025.05.12 |
|---|---|
| [기계학습] ML 프로젝트 A-Z까지 ( 5 ) (0) | 2025.05.05 |
| [기계학습] ML 프로젝트 A-Z까지 ( 3 ) (0) | 2025.04.28 |
| [기계학습] ML 프로젝트 A-Z까지 ( 2 ) (0) | 2025.04.21 |
| [기계학습] ML 프로젝트 A-Z 까지 ( 1 ) (0) | 2025.04.18 |