에듀테크 프로젝트 대시보드
선형 회귀 (Linear Regression)
공부 시간과 시험 점수, 집 크기와 집값처럼 두 값 사이에 대략 비례하는 관계가 있어 보일 때,
가장 먼저 시도하는 모델이 선형 회귀입니다. 데이터를 가장 잘 지나가는 직선 하나
ŷ = wx + b 를 찾아, 새로운 x 가 오면 그 직선 위의 값으로 예측합니다.
단순하지만 "모델이 데이터에 얼마나 맞는지를 어떻게 재고, 그 오차를 어떻게 줄이는가"라는
머신러닝 전체의 핵심 질문이 이미 이 안에 다 들어 있습니다.
직선의 기울기 w 와 절편 b 를 정하면, 각 데이터 점 (xᵢ, yᵢ) 에 대해
예측값 ŷᵢ = w·xᵢ + b 를 얻습니다. 실제값과 예측값의 차이
eᵢ = yᵢ − ŷᵢ 를 잔차(residual)라고 부릅니다. 좋은 직선일수록 잔차들이 전체적으로 작습니다.
잔차를 그냥 다 더하면 양수·음수가 서로 상쇄돼 버립니다. 그래서 각 잔차를 제곱해 더한 뒤 평균을 낸 평균제곱오차(Mean Squared Error, MSE)를 손실로 씁니다. 제곱을 쓰면 부호 문제가 해결될 뿐 아니라, 큰 오차에 더 무거운 벌점을 줘서 직선이 이상치 하나 때문에 크게 틀리는 것을 억제합니다.
선형 회귀 학습이란 결국 이 MSE(w, b) 를 가장 작게 만드는 (w, b) 를 찾는 최적화 문제입니다.
| 방법 | 아이디어 | 특징 |
|---|---|---|
| 최소제곱법(정규방정식) | MSE를 w, b로 미분해 0이 되는 지점을 대수적으로 한 번에 계산 | 특성이 적을 때 빠르고 정확 (이 페이지 데모가 사용하는 방식) |
| 경사 하강법 | MSE 곡면 위에서 기울기 반대 방향으로 조금씩 반복해서 내려감 | 특성이 아주 많거나 신경망처럼 닫힌 해가 없을 때 사용 |
경사 하강법이 실제로 한 걸음씩 손실을 줄여나가는 과정은 경사 하강법 페이지에서 애니메이션으로 직접 확인할 수 있습니다.
# 최소제곱법(정규방정식) — 데이터가 있으면 w, b를 한 번에 계산 x_bar = mean(xs) y_bar = mean(ys) w = sum((x - x_bar) * (y - y_bar) for x, y in zip(xs, ys)) \ / sum((x - x_bar) ** 2 for x in xs) b = y_bar - w * x_bar
캔버스를 클릭하면 점이 추가되고, 그 즉시 최소제곱법으로 계산한 직선이 다시 그려집니다. 점을 하나씩 늘려가며 직선과 잔차(빨간 세로선)가 어떻게 변하는지 관찰해 보세요.
입력이 x 하나가 아니라 방 개수·평수·역까지 거리처럼 여러 개면, 직선 대신
초평면 ŷ = w₁x₁ + w₂x₂ + ... + wₙxₙ + b 를 찾는 다중 선형 회귀가 됩니다.
수식의 형태와 MSE 손실, 학습 방법(경사 하강법)은 완전히 동일하며, 가중치가 하나에서 여러 개로 늘어날 뿐입니다.