Python으로 배우는 머신러닝 데이터 준비
머신러닝 모델은 숫자로 학습하며, 특성들의 스케일이 비슷할수록 더 잘 배웁니다. 정규화와 표준화는 데이터의 스케일을 조정하고, 행렬 곱셈은 모델이 여러 특성을 한 번에 결합하는 방법입니다.
쉬운 말로 이해하는 개념
머신러닝 모델은 숫자로 학습하며, 특성들의 스케일이 비슷할수록 더 잘 배웁니다. 정규화와 표준화는 데이터의 스케일을 조정하고, 행렬 곱셈은 모델이 여러 특성을 한 번에 결합하는 방법입니다.
Min-max 정규화와 z-점수 표준화로 특성의 스케일을 맞추고, 행렬 곱셈을 직접 계산합니다.
핵심 아이디어
- 스케일이 매우 다른 특성이 있으면 큰 숫자가 모델을 지배합니다.
- Min-max는 값을 0과 1 사이로 유지하고, z-점수는 분포 모양을 유지한 채 중심을 0으로 옮깁니다.
- 스케일링 값은 학습 데이터에서 계산하고 새 데이터에도 그대로 사용합니다.
- 행렬 곱 A × B를 하려면 A의 열 수와 B의 행 수가 같아야 합니다.
언제 사용하나요?
- 신경망과 AI 라이브러리 내부에서 무슨 일이 일어나는지 이해합니다.
- 해당 챌린지에서 직접 구현하기 전에 아이디어를 익힙니다.
- 머신러닝 강의, 면접, 프로젝트를 준비합니다.
직접 움직여 보기
x5를 움직여 이상값을 만들고 min-max와 z-점수가 어떻게 반응하는지 비교해 보세요. A·B의 칸을 가리키면 어떤 행과 열을 쓰는지 보입니다.
예제 코드
main.py
import statistics
heights = [150, 160, 170, 180, 190]
# Min-max scaling squeezes values into the range 0..1.
low, high = min(heights), max(heights)
print("min-max:", [round((h - low) / (high - low), 2) for h in heights])
# Z-score standardization centres values on 0 with a spread of 1.
mean = statistics.mean(heights)
std = statistics.pstdev(heights)
print("z-scores:", [round((h - mean) / std, 2) for h in heights])
# Matrix multiplication: each output is a row of A dotted with a column of B.
A = [[1, 2], [3, 4]]
B = [[5, 6], [7, 8]]
product = [[sum(A[i][k] * B[k][j] for k in range(2)) for j in range(2)] for i in range(2)]
print("A x B:", product)
예상 출력
min-max: [0.0, 0.25, 0.5, 0.75, 1.0]
z-scores: [-1.41, -0.71, 0.0, 0.71, 1.41]
A x B: [[19, 22], [43, 50]]
작동 원리
Min-max 스케일링은 가장 작은 키를 0으로, 가장 큰 키를 1로 바꿉니다. z-점수는 평균을 빼고 표준편차로 나누므로 값들이 0을 중심으로 놓입니다. 행렬 곱에서 각 칸은 A의 한 행과 B의 한 열을 원소별로 곱해 더한 값입니다.
값을 변경하고 Python 설치 없이 CodeUtility 온라인 Python 컴파일러에서 실행하세요.
연습 문제
입력값과 경계 조건을 바꾸고 더 큰 데이터에서도 동작을 확인하세요.
- 입력이나 가중치를 바꾸고 실행하기 전에 출력을 예상해 보세요.
- 중간 값을 출력해 계산의 각 단계를 따라가 보세요.
- 아래에 연결된 챌린지를 풀며 아이디어를 직접 구현해 보세요.
챌린지로 연습하기
이 레슨에서 배운 내용으로 실제 문제를 풀어 보세요. 모든 챌린지는 브라우저에서 실행되며 즉시 테스트와 AI 리뷰를 받을 수 있습니다.
- 행렬 곱셈 두 행렬을 곱합니다. 신경망의 모든 레이어 뒤에 있는 연산입니다. 쉬움
- 최소-최대 정규화 특성의 최솟값이 0, 최댓값이 1이 되도록 스케일을 조정합니다. 쉬움
- Z-점수 표준화 특성을 평균 0, 표준편차 1로 맞춥니다. 쉬움