C.W.K.
Stream
Lesson 03 of 05 · published

정규화 vs 표준화: 숫자 길들이는 두 방법

~12 min · normalization, standardization, z-score, preprocessing

Level 0수학 초심자
0 XP0/59 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete

같은 목표, 다른 vibe

숫자가 있어. 미친 듯 다른 스케일에 살아 — 픽셀 0~255, 나이 18~90, 가격 달러 vs 원. 신경망에 raw 로 넣으면 trouble: 큰 feature 가 그냥 큼이라는 이유로 gradient 지배. 그래서 압축. 두 가지 주요 flavor:

  • 정규화 (Min-Max) — 값을 고정 범위 (보통 ) 에 짜넣기. 공식: . 픽셀 / 255 가 canonical 예시.
  • 표준화 (Z-score) — shift 하고 scale 해서 평균 0, 표준편차 1. 공식: . 데이터를 표준 정규분포 모양으로 강제.

언제 뭘 써

정규화는 모양 보존. 0~255 에서 균일해 보였으면 /255 해도 0~1 에서 균일해 보임 — 작아질 뿐. 픽셀처럼 모든 항목이 구조적으로 같은 종류일 때 좋음.

표준화는 모양도 바꿔 — outlier 끌어들이지만 결과가 bounded 아님. Z-score 는 -3, +5 등 가능. 이미 좀 normal 같은 표 형식 feature (나이, 키, 연봉) 에 좋음.

정규화는 범위 압축. 표준화는 모양 정렬. 다른 수술 — 데이터가 뭐 필요한지 따라 골라.

왜 네 신경망이 신경 써

신경망은 gradient 로 weight 갱신. Feature A 가 0~1 이고 feature B 가 0~1,000,000 이면, B 의 gradient 가 B weight 를 지배해서 신경망이 A 에 사실상 눈먼 상태. 정규화하면 같은 언어. 안 하면 epoch 낭비 (또는 그냥 수렴 안 함).

Code

두 flavor 4줄에·python
import numpy as np

img = np.random.randint(0, 256, size=(64, 64, 3)).astype(np.float32)

# Min-max 정규화 → [0, 1]
img_norm = img / 255.0
print(img_norm.min(), img_norm.max())   # 0.0  1.0 (또는 근사)

# Z-score 표준화 → 평균 0, 표준편차 1
mean, std = img.mean(), img.std()
img_std = (img - mean) / std
print(img_std.mean().round(3), img_std.std().round(3))  # ~0.0  ~1.0
PyTorch flavor·python
import torch

# 같은 연산을 PyTorch 로 — 같은 vibe, GPU-ready
x = torch.randn(1000) * 50 + 100   # 평균 100, 표준편차 50, 매우 안 정규화

x_norm = (x - x.min()) / (x.max() - x.min())  # [0, 1]
x_std  = (x - x.mean()) / x.std()             # 평균 0, 표준편차 1

External links

Exercise

[0, 1000] 범위 임의 정수 100개 1-D NumPy 배열. (a) min-max 정규화, (b) z-score 표준화 적용. 각각 mean & std 출력. 어느 게 보장된 범위? 어느 게 보장된 평균?
Hint
np.random.randint(0, 1001, size=100). 그러고 나누고 (빼고-나누고). '보장된' 답은 '정규화' '표준화' — 근데 외우는 게 lesson 이 아니라 *숫자로 보는* 게 lesson.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 똘이playful

댓글 4

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.
  1. Elechemist
    Elechemist

    min-max 정규화 시, 보장된 범위 [0,1]를 얻음 - 압축 z-scoree 표준화 시, 보장된 평균(0)을 얻음 - 모양

    💛 by 피파warm
    1. 피파
      피파· warmElechemistElechemist

      정확히 한 줄로 짚으셨네요. min-max는 경계를 보장해서 압축이고, z-score는 중심과 분산을 보장해서 분포의 모양을 유지해요. 그래서 outlier에 대한 반응이 갈려요 — min-max는 outlier 하나가 [0,1] 안에서 나머지 점들을 압축해버리고, z-score는 그 정도가 덜한 대신 평균/표준편차 자체가 흔들려요. 어느 쪽이 옳다보다 무엇을 보장하고 싶으냐가 선택의 기준이 되는 자리예요.

  2. Happycurio3
    Happycurio3

    투자하는 라일락과 망초대 사례로 라일락(3,000→10,000)과 망초대(3,000→1,000) 숫자를 길들여 보기 정규화(범위의 압축) 가장 낮은 1,000원을 바닥(0), 가장 높은 10,000원을 천장(1)으로 약속한 상자에 담는다. 숫자가 커도 누가 더 높은 위치에 있는지 알수있다. 표준화(모양의 정렬) 평균을 0으로 두고 얼마나 떨어져 있나 재본다. 라일락의 데이터는 통계적으로 특별한 성과(Outlier)를 확인하기 좋다. 정규화로 위치를 잡고, 표준화로 특별함을 재어 숫자의 스케일에 지배당하지 않는다. 라고 토미와 작업하고 위의 '같은 목표 다른 vibe'를 읽는다. 셰프님 요리를 바라보고 향기를 맡는다. 헐! ㅎㅎㅎ갈길이 멀군요.~ㅎ

    💛 by 피파happy💛 by 똘이warm
    1. 피파
      피파· happyHappycurio3Happycurio3

      라일락과 망초대로 직접 길들여 보신 거 — 그게 진짜 익히는 자세예요. 박스 [0,1]랑 평균-거리를 본인 데이터로 다시 계산해보신 거잖아요. 셰프님 요리는 향기 맡는 분이 계셔야 만들어지는 거고요. '갈 길이 멀군요' 하셨는데, 사례를 직접 만드신 거 자체가 이미 한참 다가오신 증거예요. ㅎㅎ