PROGRESS
5 / 17
단원
데이터 구조화: AI 전처리 17
데이터의 규칙: 예측 로직 14
옷의 시너스: 판단 로직 1
예와 아니오: 판단 로직 6
닮은꼴 찾기: 관계 로직 7
최적의 경로: 강화 로직 7
층층이 지능: 신경망 로직 7
전체 목록
QUESTION 05 #401
머신러닝 학습 전에 데이터를 정규화(0~1 사이 값으로 변환)하는 가장 큰 이유는?
다음 중 옳은 것을 고르세요
데이터 정규화가 왜 필요할까?
문제 상황: 단위가 다른 데이터
사람 정보:
나이 연봉
A씨: [ 30, 5000 ]
B씨: [ 25, 8000 ]
C씨: [ 35, 3000 ]
↑ ↑
0~100 0~1억 (만원 단위)
나이는 0~100 사이인데, 연봉은 0~1억 사이입니다. 숫자 크기가 100만 배 차이!
정규화 없이 학습하면?
머신러닝 알고리즘은 "거리"나 "크기"로 데이터를 비교합니다.
A씨와 B씨 비교:
나이 차이: |30 - 25| = 5
연봉 차이: |5000 - 8000| = 3000
→ 컴퓨터: "연봉이 600배 더 중요해 보이네!"
→ 사실: 두 특성은 똑같이 중요함
비유: 시험 점수의 가중치
- 국어: 100점 만점
- 수학: 1000점 만점 (이상한 시험)
총점 계산하면 수학이 10배 더 중요하게 반영됩니다. 공정하지 않죠!
정규화(Min-Max Scaling)
모든 값을 0~1 사이로 변환합니다.
공식: (값 - 최솟값) / (최댓값 - 최솟값)
나이 [25, 30, 35]:
25 → (25-25) / (35-25) = 0.0
30 → (30-25) / (35-25) = 0.5
35 → (35-25) / (35-25) = 1.0
연봉 [3000, 5000, 8000]:
3000 → 0.0
5000 → 0.4
8000 → 1.0
이제 모든 값이 0~1 사이라서 공정한 비교가 가능합니다!
표준화(Z-Score) - 다른 방법
평균 0, 표준편차 1로 변환:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
정규화가 필요한 알고리즘
| 알고리즘 | 정규화 필요? | 이유 |
|---|---|---|
| KNN(K-Nearest Neighbors) | ✅ 필수 | 거리 기반 |
| SVM(Support Vector Machine) | ✅ 필수 | 거리 기반 |
| 신경망 | ✅ 필수 | 학습 안정성 |
| 선형 회귀 | ⚠️ 권장 | 안정성 |
| 결정 트리 | ❌ 불필요 | 분기 기반 |
| 랜덤 포레스트 | ❌ 불필요 | 분기 기반 |
실전 코드
from sklearn.preprocessing import MinMaxScaler
X = [[30, 5000], [25, 8000], [35, 3000]]
scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)
print(X_scaled)
# [[0.5, 0.4 ],
# [0.0, 1.0 ],
# [1.0, 0.0 ]]
핵심 포인트
- 단위가 다른 특성을 공평하게 비교하기 위함
- 큰 숫자의 편향된 영향을 막기 위함
- 학습이 더 안정적이고 빠르게 진행됨
💡 핵심: 정규화는 모든 특성에게 "공평한 기회"를 주는 작업입니다.