Skip to Content
독학사독학사 2단계머신러닝07. 선형·다항 회귀의 원리와 해석

이번 문서의 목표: 선형회귀의 계수를 최소제곱 정규방정식과 경사하강법 두 방법으로 직접 손계산할 수 있고, MSE 손실을 구해 회귀계수의 의미와 가정·한계를 설명할 수 있게 된다.

1. 회귀란 무엇인가 — 왜 필요한가

집을 팔려는 상황을 생각해 봅시다. 면적이 넓을수록 가격이 높은 경향이 있다는 것은 직관적으로 압니다. 그런데 “면적이 10제곱미터 늘면 가격이 정확히 얼마나 오르는가”를 숫자로 답하려면 데이터로부터 그 관계를 추정해야 합니다. 이렇게 연속적인 숫자값을 예측하는 지도학습 문제를 07편에서 배운 대로 회귀(regression)라고 부릅니다.

쉽게 말하면: 회귀는 점들이 흩어져 있는 산점도에 “가장 잘 맞는 직선(또는 곡선)“을 긋는 작업입니다. 그 직선의 기울기와 절편이 바로 우리가 알고 싶은 정보입니다.

2. 단순 선형회귀 — 변수 하나로 예측하기

단순 선형회귀(simple linear regression)는 설명변수(원인이 되는 변수) 하나로 목표변수(예측하려는 값)를 예측하는 모형입니다.

y^=β0+β1x\hat{y} = \beta_0 + \beta_1 x
  • y^\hat{y} (와이 햇): 모형이 예측한 값
  • xx: 설명변수(입력값). 예: 공부 시간
  • β0\beta_0 (베타 제로): 절편. xx가 0일 때의 예측값
  • β1\beta_1 (베타 원): 기울기(회귀계수). xx가 1단위 늘어날 때 y^\hat{y}가 변하는 양

이 식은 03편에서 다룬 “1차 함수”와 형태가 같습니다. 다만 회귀에서는 이 직선을 데이터에 가장 잘 맞도록 계수 β0,β1\beta_0, \beta_1을 데이터로부터 추정한다는 점이 다릅니다.

예시 데이터

공부 시간(시간)과 시험 점수(점) 5개 관측치입니다.

학생공부 시간 xx점수 yy
A13
B24
C36
D47
E510

3. 손실함수(MSE) — “잘 맞는다”를 숫자로 재기

왜 필요한가

직선은 무수히 많이 그을 수 있습니다. 그중 어떤 직선이 “가장 잘 맞는” 직선인지 판단하려면, 잘 맞고 못 맞는 정도를 숫자 하나로 재는 기준이 필요합니다. 이 기준이 손실함수(loss function)이고, 회귀에서 가장 널리 쓰이는 손실함수가 평균제곱오차(Mean Squared Error, MSE)입니다.

쉽게 말하면: MSE는 “직선이 각 점에서 얼마나 빗나갔는지”를 제곱해서 평균 낸 값입니다. 값이 작을수록 직선이 점들에 잘 들어맞는다는 뜻입니다.

MSE=1ni=1n(yiy^i)2\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
  • nn: 데이터의 개수
  • yiy_i: ii번째 데이터의 실제값
  • y^i\hat{y}_i: ii번째 데이터에 대한 모형의 예측값
  • yiy^iy_i - \hat{y}_i: 잔차(residual, 실제값과 예측값의 차이)
  • 제곱을 하는 이유: 잔차가 양수든 음수든 상관없이 “틀린 정도”만 반영하고, 큰 오차에 더 큰 벌점을 주기 위함

4. 최소제곱법과 정규방정식 — 한 번에 정답 구하기

원리

최소제곱법(Least Squares Method, 최소자승법)은 MSE(정확히는 잔차 제곱의 합)를 가장 작게 만드는 β0,β1\beta_0, \beta_1을 미분을 이용해 한 번에 계산하는 방법입니다. 이렇게 구한 식을 정규방정식(normal equation)이라고 부릅니다. 단순 선형회귀에서 정규방정식은 다음과 같습니다.

β1=i=1n(xixˉ)(yiyˉ)i=1n(xixˉ)2\beta_1 = \frac{\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})}{\sum_{i=1}^{n}(x_i - \bar{x})^2}
  • xˉ\bar{x} (엑스 바): xx의 평균
  • yˉ\bar{y} (와이 바): yy의 평균
  • 분자: xxyy가 평균에서 함께 벗어난 정도(공분산과 비례)
  • 분모: xx가 평균에서 벗어난 정도의 제곱합(분산과 비례)
β0=yˉβ1xˉ\beta_0 = \bar{y} - \beta_1 \bar{x}

손계산 — 대입부터 답까지

1단계, 평균을 구합니다.

xˉ=1+2+3+4+55=3\bar{x} = \frac{1+2+3+4+5}{5} = 3 yˉ=3+4+6+7+105=6\bar{y} = \frac{3+4+6+7+10}{5} = 6

2단계, 각 값이 평균에서 벗어난 정도(편차)를 구합니다.

학생xixˉx_i - \bar{x}yiyˉy_i - \bar{y}
A-2-3
B-1-2
C00
D11
E24

3단계, 분자(편차의 곱의 합)를 구합니다.

(2)(3)+(1)(2)+(0)(0)+(1)(1)+(2)(4)=6+2+0+1+8=17(-2)(-3) + (-1)(-2) + (0)(0) + (1)(1) + (2)(4) = 6 + 2 + 0 + 1 + 8 = 17

4단계, 분모(xx 편차의 제곱합)를 구합니다.

(2)2+(1)2+02+12+22=4+1+0+1+4=10(-2)^2 + (-1)^2 + 0^2 + 1^2 + 2^2 = 4 + 1 + 0 + 1 + 4 = 10

5단계, 기울기를 구합니다.

β1=1710=1.7\beta_1 = \frac{17}{10} = 1.7

6단계, 절편을 구합니다.

β0=6(1.7)(3)=65.1=0.9\beta_0 = 6 - (1.7)(3) = 6 - 5.1 = 0.9

결과: 최소제곱법으로 구한 회귀식은 y^=0.9+1.7x\hat{y} = 0.9 + 1.7x 입니다.

결과 해석

기울기 β1=1.7\beta_1 = 1.7은 “공부 시간이 1시간 늘 때마다 예측 점수가 평균적으로 1.7점 오른다”는 뜻입니다. 절편 β0=0.9\beta_0 = 0.9는 “공부를 전혀 하지 않아도(x=0x=0) 예측 점수는 0.9점”이라는 뜻인데, 실제 데이터의 xx 범위(1~5)를 벗어난 외삽(extrapolation, 관측 범위 밖을 추정하는 것)이므로 그 값을 문자 그대로 신뢰하기는 어렵습니다.

이 회귀식의 MSE 계산

1단계, 각 xx에 대한 예측값을 구합니다.

y^A=0.9+1.7(1)=2.6\hat{y}_A = 0.9 + 1.7(1) = 2.6 y^B=0.9+1.7(2)=4.3\hat{y}_B = 0.9 + 1.7(2) = 4.3 y^C=0.9+1.7(3)=6.0\hat{y}_C = 0.9 + 1.7(3) = 6.0 y^D=0.9+1.7(4)=7.7\hat{y}_D = 0.9 + 1.7(4) = 7.7 y^E=0.9+1.7(5)=9.4\hat{y}_E = 0.9 + 1.7(5) = 9.4

2단계, 잔차를 구합니다.

학생yiy_iy^i\hat{y}_i잔차 yiy^iy_i-\hat{y}_i
A32.60.4
B44.3-0.3
C66.00.0
D77.7-0.7
E109.40.6

3단계, 잔차를 제곱해 더합니다.

0.42+(0.3)2+02+(0.7)2+0.62=0.16+0.09+0+0.49+0.36=1.100.4^2 + (-0.3)^2 + 0^2 + (-0.7)^2 + 0.6^2 = 0.16 + 0.09 + 0 + 0.49 + 0.36 = 1.10

4단계, 데이터 개수 5로 나눕니다.

MSE=1.105=0.22\text{MSE} = \frac{1.10}{5} = 0.22

결과 해석: 최소제곱법으로 구한 계수는 바로 이 데이터에서 MSE를 가장 작게 만드는 값입니다. 다른 어떤 β0,β1\beta_0, \beta_1 조합을 대입해도 이 데이터에서는 MSE가 0.22보다 작아지지 않습니다.

5. 경사하강법 — 조금씩 다가가서 정답 구하기

왜 필요한가

정규방정식은 변수가 적을 때는 한 번에 정확한 답을 주지만, 변수(설명변수)가 수백~수천 개로 늘어나면 행렬 연산의 비용이 매우 커집니다. 경사하강법(gradient descent)은 정답을 한 번에 구하는 대신, 손실함수가 줄어드는 방향으로 계수를 조금씩 반복해서 갱신하는 방법입니다. 신경망을 포함한 대부분의 현대 머신러닝은 정규방정식이 아니라 경사하강법 계열로 학습합니다.

쉽게 말하면: 안개 낀 산에서 눈을 가리고 정상(최솟값)을 찾는 상황을 떠올려 보세요. 한 번에 정상을 알 수는 없지만, 발밑의 기울기가 가장 가파르게 내려가는 방향으로 한 걸음씩 내딛으면 결국 골짜기(최솟값)에 가까워집니다.

기울기(그레이디언트) 구하기

MSE를 각 계수로 미분하면 다음과 같습니다.

MSEβ0=2ni=1n(yiy^i)\frac{\partial \text{MSE}}{\partial \beta_0} = -\frac{2}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i) MSEβ1=2ni=1n(yiy^i)xi\frac{\partial \text{MSE}}{\partial \beta_1} = -\frac{2}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)\, x_i
  • \partial (파셜, partial): 편미분 기호. 다른 변수는 고정하고 해당 변수에 대해서만 변화율을 구한다는 뜻
  • \nabla (나블라)로 두 편미분을 묶어 기울기 벡터(gradient)라고 부르기도 함
  • 이 값이 양수면 그 계수를 줄여야 손실이 작아지고, 음수면 그 계수를 늘려야 손실이 작아짐

계수를 갱신하는 규칙은 다음과 같습니다.

βnew=βoldηMSEβ\beta_{\text{new}} = \beta_{\text{old}} - \eta \cdot \frac{\partial \text{MSE}}{\partial \beta}
  • η\eta (에타): 학습률(learning rate). 한 걸음의 보폭을 정하는 값. 너무 크면 최솟값을 지나쳐 발산하고, 너무 작으면 수렴이 느려짐

1단계 손계산 — 초기값에서 출발

같은 데이터(공부 시간·점수 5개)로, 계수를 β0=0,β1=0\beta_0 = 0, \beta_1 = 0에서 출발해 학습률 η=0.01\eta = 0.01로 갱신해 봅니다.

현재 예측값과 잔차를 구합니다. β0=β1=0\beta_0=\beta_1=0이므로 모든 예측값 y^i=0\hat{y}_i = 0이고, 잔차는 실제값과 같습니다: 3,4,6,7,103, 4, 6, 7, 10.

β0\beta_0의 기울기를 구합니다.

i=15(yiy^i)=3+4+6+7+10=30\sum_{i=1}^{5}(y_i - \hat{y}_i) = 3+4+6+7+10 = 30 MSEβ0=25(30)=12\frac{\partial \text{MSE}}{\partial \beta_0} = -\frac{2}{5}(30) = -12

β1\beta_1의 기울기를 구합니다.

i=15(yiy^i)xi=3(1)+4(2)+6(3)+7(4)+10(5)=3+8+18+28+50=107\sum_{i=1}^{5}(y_i-\hat{y}_i)x_i = 3(1)+4(2)+6(3)+7(4)+10(5) = 3+8+18+28+50 = 107 MSEβ1=25(107)=42.8\frac{\partial \text{MSE}}{\partial \beta_1} = -\frac{2}{5}(107) = -42.8

계수를 갱신합니다.

β0(1)=0(0.01)(12)=0.12\beta_0^{(1)} = 0 - (0.01)(-12) = 0.12 β1(1)=0(0.01)(42.8)=0.428\beta_1^{(1)} = 0 - (0.01)(-42.8) = 0.428

1스텝 결과 해석: 두 기울기가 모두 음수였으므로, 갱신 규칙(빼기)에 따라 두 계수는 모두 증가하는 방향으로 움직였습니다. 아직 최소제곱법의 정답인 β0=0.9, β1=1.7\beta_0=0.9,\ \beta_1=1.7에는 한참 못 미치지만, 그 방향으로 한 걸음 다가간 것입니다.

2단계 손계산 — 갱신된 값으로 한 번 더

새 예측값을 구합니다. β0=0.12, β1=0.428\beta_0=0.12,\ \beta_1=0.428을 대입합니다.

y^A=0.12+0.428(1)=0.548\hat{y}_A = 0.12 + 0.428(1) = 0.548 y^B=0.12+0.428(2)=0.976\hat{y}_B = 0.12 + 0.428(2) = 0.976 y^C=0.12+0.428(3)=1.404\hat{y}_C = 0.12 + 0.428(3) = 1.404 y^D=0.12+0.428(4)=1.832\hat{y}_D = 0.12 + 0.428(4) = 1.832 y^E=0.12+0.428(5)=2.260\hat{y}_E = 0.12 + 0.428(5) = 2.260

새 잔차를 구합니다.

학생yiy_iy^i\hat{y}_i잔차
A30.5482.452
B40.9763.024
C61.4044.596
D71.8325.168
E102.2607.740

β0\beta_0의 기울기를 구합니다.

(yiy^i)=2.452+3.024+4.596+5.168+7.740=22.98\sum(y_i-\hat{y}_i) = 2.452+3.024+4.596+5.168+7.740 = 22.98 MSEβ0=25(22.98)=9.192\frac{\partial \text{MSE}}{\partial \beta_0} = -\frac{2}{5}(22.98) = -9.192

β1\beta_1의 기울기를 구합니다.

(yiy^i)xi=2.452(1)+3.024(2)+4.596(3)+5.168(4)+7.740(5)\sum(y_i-\hat{y}_i)x_i = 2.452(1)+3.024(2)+4.596(3)+5.168(4)+7.740(5) =2.452+6.048+13.788+20.672+38.700=81.66= 2.452+6.048+13.788+20.672+38.700 = 81.66 MSEβ1=25(81.66)=32.664\frac{\partial \text{MSE}}{\partial \beta_1} = -\frac{2}{5}(81.66) = -32.664

계수를 다시 갱신합니다.

β0(2)=0.12(0.01)(9.192)=0.212\beta_0^{(2)} = 0.12 - (0.01)(-9.192) = 0.212 β1(2)=0.428(0.01)(32.664)=0.755\beta_1^{(2)} = 0.428 - (0.01)(-32.664) = 0.755

2스텝 결과 해석: β0\beta_000.120.2120 \to 0.12 \to 0.212, β1\beta_100.4280.7550 \to 0.428 \to 0.755로 정규방정식의 정답(0.9, 1.70.9,\ 1.7)을 향해 계속 다가가고 있습니다. 이 과정을 수백~수천 번 반복하면 결국 정규방정식이 준 값에 가까워집니다. 정규방정식은 한 번에 정확한 답을 주고, 경사하강법은 여러 번 반복해 그 답에 가까워진다는 점이 두 방법의 핵심 차이입니다.

자주 틀리는 점: 학습률 η\eta가 지나치게 크면 계수가 최솟값 근처를 오히려 지나쳐 진동하거나 발산할 수 있습니다. “학습률은 클수록 빨리 수렴하니 무조건 크게 잡는 것이 좋다”는 오답입니다.

6. 다중 선형회귀 — 변수가 여러 개일 때

설명변수가 여러 개면 다중 선형회귀(multiple linear regression)라고 부릅니다.

y^=β0+β1x1+β2x2++βpxp\hat{y} = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p
  • x1,,xpx_1, \ldots, x_p: pp개의 설명변수
  • β1,,βp\beta_1, \ldots, \beta_p: 각 설명변수에 대응하는 회귀계수

각 계수 βj\beta_j“다른 모든 설명변수를 고정했을 때” xjx_j가 1단위 늘어남에 따른 y^\hat{y}의 변화량으로 해석합니다. “다른 변수를 고정했을 때”라는 전제를 빼고 “면적이 늘면 무조건 가격이 오른다”처럼 단순화해 해석하면, 다른 변수와의 상호작용을 놓치는 함정에 빠집니다.

7. 다항 회귀 — 곡선을 직선처럼 다루기

데이터가 직선이 아니라 곡선 형태를 띨 때는 다항 회귀(polynomial regression)를 씁니다. 설명변수의 거듭제곱 항을 새로운 변수처럼 추가합니다.

y^=β0+β1x+β2x2\hat{y} = \beta_0 + \beta_1 x + \beta_2 x^2
  • x2x^2: xx를 제곱한 항. 곡선의 휘어짐을 표현

중요한 점: 다항 회귀는 xx에 대해서는 곡선이지만, 계수 β0,β1,β2\beta_0, \beta_1, \beta_2에 대해서는 여전히 선형(계수들의 단순한 합)입니다. 그래서 다항 회귀도 선형회귀와 같은 최소제곱법·경사하강법으로 계수를 구할 수 있습니다. “다항 회귀는 비선형 모형이라 선형회귀의 계산 방법을 쓸 수 없다”는 오답입니다. 다만 차수를 지나치게 높이면 학습 데이터에는 완벽히 들어맞지만 새로운 데이터에는 성능이 떨어지는 과적합(overfitting)이 생기기 쉬운데, 이 문제는 09편(정규화)과 19편(과적합·교차검증)에서 자세히 다룹니다.

8. 회귀의 가정과 한계

선형회귀가 신뢰할 만한 추정을 하려면 몇 가지 가정이 성립해야 합니다.

가정깨졌을 때 문제
선형성설명변수와 목표변수 사이의 관계가 실제로 직선(또는 다항식) 형태곡선 관계를 직선으로 억지로 맞춰 예측이 부정확해짐
독립성각 관측치의 오차가 서로 관련 없음시계열처럼 오차가 이어지면 표준오차 추정이 왜곡됨
등분산성오차의 흩어진 정도가 xx 값과 관계없이 일정함xx가 커질수록 오차가 커지면 신뢰구간 추정이 부정확해짐
정규성오차가 정규분포를 따름가설검정·신뢰구간의 정확도가 떨어짐
다중공선성 없음(다중회귀)설명변수끼리 서로 강하게 상관되지 않음계수 추정이 불안정해지고 해석이 어려워짐

쉽게 말하면: 이 가정들은 “직선을 믿을 만한 상황”의 조건표입니다. 가정이 심하게 깨지면 계수 자체는 계산되더라도 그 해석과 신뢰구간은 믿기 어려워집니다.

핵심 정리

  • 단순 선형회귀는 y^=β0+β1x\hat{y}=\beta_0+\beta_1x 형태이며, MSE는 잔차 제곱의 평균으로 직선의 적합도를 숫자로 나타낸다.
  • 최소제곱 정규방정식은 미분을 이용해 MSE를 최소로 만드는 계수를 한 번에 계산하며, 이 편의 예시 데이터에서는 β0=0.9, β1=1.7\beta_0=0.9,\ \beta_1=1.7, MSE는 0.22였다.
  • 경사하강법은 기울기(그레이디언트) 방향으로 계수를 조금씩 갱신하며, 초기값 0에서 두 스텝을 거치며 β0,β1\beta_0,\beta_1이 정규방정식의 해를 향해 다가감을 직접 확인했다.
  • 다중 선형회귀의 계수는 “다른 변수를 고정했을 때”의 변화량으로 해석하며, 다항 회귀는 계수 기준으로는 여전히 선형이라 같은 최소제곱법·경사하강법을 쓸 수 있다.
  • 선형회귀는 선형성·독립성·등분산성·정규성·다중공선성 없음이라는 가정 위에서 신뢰할 수 있으며, 가정이 깨지면 해석과 신뢰구간이 왜곡될 수 있다.

마무리 복습

문제 14지선다
공부 시간(x)과 점수(y) 데이터에서 x의 평균이 3, y의 평균이 6이고, 편차곱의 합이 17, x 편차 제곱합이 10일 때 최소제곱법으로 구한 기울기와 절편은?
문제 24지선다
어떤 회귀모형의 잔차가 0.4, -0.3, 0, -0.7, 0.6일 때 MSE는?
문제 34지선다
경사하강법에서 β0=0, β1=0으로 시작해 학습률 0.01을 적용할 때, β0에 대한 기울기가 -12로 계산되었다면 한 스텝 후 β0의 값은?
문제 44지선다
정규방정식(최소제곱법)과 경사하강법의 관계에 대한 설명으로 옳은 것은?
문제 54지선다
다중 선형회귀에서 회귀계수 β_j의 해석으로 가장 적절한 것은?
문제 64지선다
다항 회귀에 대한 설명으로 옳지 않은 것은?
문제 74지선다
선형회귀의 가정 중 '등분산성'이 뜻하는 것은?
문제 84지선다
경사하강법의 학습률(η)에 대한 설명으로 옳지 않은 것은?

참고 자료

Last updated on