이 강의의 목표는 직선으로 데이터를 설명하고 오차제곱합을 줄이는 법을 아주 기초부터 이해하는 것입니다.
먼저 오늘의 핵심 식을 봅니다.
β^=(XTX)−1XTy
이 식을 외우기 전에, 식 안의 말과 기호를 먼저 하나씩 풀어야 합니다.
| 말 |
뜻 |
| 선형회귀 |
숫자를 예측하는 기본 모델 |
| 특징행렬 |
입력값을 모아 놓은 표 |
| 계수 |
각 입력의 영향 크기 |
| 예측값 |
모델이 계산한 출력 |
| 잔차 |
실제값과 예측값의 차이 |
| 최소제곱 |
잔차 제곱합을 줄이는 방법 |
수학에서 어려운 부분은 계산보다 읽기입니다. 뜻을 모르고 계산하면 공식이 암호처럼 보입니다.
키로 몸무게를 예측한다고 합시다. 모든 사람을 완벽히 맞히는 직선은 없지만, 전체적으로 가장 덜 틀리는 직선은 고를 수 있습니다.
핵심 식을 다시 봅니다.
β^=(XTX)−1XTy
이 식의 기호를 하나씩 말로 바꿉니다.
- y는 실제값을 세로로 모은 벡터입니다. 예를 들어 사람 세 명의 몸무게라면 y=⎣⎢⎡y1y2y3⎦⎥⎤입니다.
- X는 특징행렬입니다. 각 행이 한 사람의 입력이고, 절편을 위해 보통 첫 열을 1로 둡니다. 즉 X=⎣⎢⎡111x1x2x3⎦⎥⎤입니다.
- β는 계수 벡터입니다. 절편 β0와 기울기 β1을 담아 β=[β0β1]입니다.
- Xβ는 예측값 벡터입니다. 각 행에서 β0+β1xi를 계산한 결과입니다.
- XT는 X를 전치한 것입니다. 행과 열을 서로 바꿉니다.
- XTX는 (입력개수)×(입력개수) 크기의 정사각행렬입니다. 여기서는 2×2입니다.
- (XTX)−1은 그 행렬의 역행렬입니다. 곱하면 단위행렬이 되는 행렬입니다.
- β^는 오차제곱합을 가장 작게 만드는 계수, 즉 우리가 찾는 답입니다.
그래서 이 식은 "실제값 y와 특징행렬 X만 있으면, 정해진 행렬 계산으로 최선의 계수 β^가 바로 나온다"는 뜻입니다. 왜 이 계산이 최선을 주는지는 아래에서 유도합니다.
데이터가 직선 위에 정확히 놓이는 경우는 거의 없습니다. 그래서 Xβ=y를 정확히 만족하는 β는 대개 존재하지 않습니다.
정확한 해가 없을 때는 "완전히 맞는 답" 대신 "가장 덜 틀리는 답"을 찾아야 합니다. 틀린 정도를 재는 자연스러운 방법이 잔차 벡터 y−Xβ의 길이 제곱, 즉 오차제곱합입니다.
S(β)=∥y−Xβ∥2
이 값을 가장 작게 만드는 β를 찾는 문제가 최소제곱입니다. 그리고 그 답을 손으로 하나하나 시도하지 않고 한 번에 주는 것이 정규방정식 XTXβ=XTy입니다. 이 절을 이해하면 큰 모델에서 손실을 미분해 최소점을 찾는 방식도 같은 구조로 보입니다.
오차제곱합을 풉니다.
S(β)=∥y−Xβ∥2=(y−Xβ)T(y−Xβ)
괄호를 전개하면 다음과 같습니다.
S(β)=yTy−2βTXTy+βTXTXβ
가장 작은 지점에서는 기울기(그래디언트)가 0입니다. β에 대해 미분하면 다음과 같습니다.
∂β∂S=−2XTy+2XTXβ
이것을 0으로 두면 다음이 됩니다.
−2XTy+2XTXβ=0
양변을 정리하면 정규방정식이 나옵니다.
XTXβ=XTy
XTX가 역행렬을 가지면 양변에 (XTX)−1을 곱해 계수를 구합니다.
β^=(XTX)−1XTy
즉 핵심 식은 오차제곱합을 미분해 0으로 둔 결과일 뿐입니다.
- 입력을 특징행렬 X로 모으고, 절편을 위해 첫 열을 1로 둔다.
- XTX와 XTy를 계산한다.
- 정규방정식 XTXβ=XTy를 세운다.
- (XTX)−1을 곱해 β^를 구한다.
- Xβ^로 예측하고 잔차를 확인한다.
문제: 다음 세 점에 가장 잘 맞는 직선 y=β0+β1x를 최소제곱으로 구하라.
(x,y)=(1,2), (2,2), (3,4)
풀이: 먼저 특징행렬과 실제값 벡터를 만듭니다.
X=⎣⎢⎡111123⎦⎥⎤,y=⎣⎢⎡224⎦⎥⎤
XTX를 계산합니다.
XTX=[36614]
여기서 3은 데이터 개수, 6=1+2+3은 x의 합, 14=1+4+9는 x2의 합입니다.
XTy를 계산합니다.
XTy=[2+2+41⋅2+2⋅2+3⋅4]=[818]
이제 정규방정식은 다음과 같습니다.
[36614][β0β1]=[818]
역행렬을 구합니다. 2×2 행렬의 행렬식은 3⋅14−6⋅6=42−36=6입니다.
(XTX)−1=61[14−6−63]
따라서 계수는 다음과 같습니다.
β^=(XTX)−1XTy=61[14−6−63][818]
곱을 계산합니다.
β^=61[14⋅8−6⋅18−6⋅8+3⋅18]=61[112−108−48+54]=61[46]=[2/31]
그래서 최적 직선은 다음과 같습니다.
y=32+x
앞에서 구한 직선 y=32+x로 예측값과 잔차를 확인합니다.
- x=1: 예측 32+1=35≈1.67, 실제 2, 잔차 \tfrac{1}
- x=2: 예측 32+2=38≈2.67, 실제 2, 잔차 -\tfrac{2}
- x=3: 예측 32+3=311≈3.67, 실제 4, 잔차 \tfrac{1}
잔차의 합은 31−32+31=0입니다. 최소제곱 해에서 잔차의 합이 0이 되는 것은 첫 열이 모두 1이라 잔차가 그 열과 직교하기 때문입니다. 오차를 제곱해 더하면 부호가 사라져 위아래 잔차가 상쇄되지 않고, 전체적으로 가장 작은 값을 갖는 직선이 선택됩니다.
- 오늘 배운 핵심은 직선으로 데이터를 설명하고 오차제곱합을 줄이는 법입니다.
- 정확한 해가 없을 때 잔차 제곱합 ∥y−Xβ∥2을 가장 작게 만드는 계수를 찾습니다.
- 이 값을 β로 미분해 0으로 두면 정규방정식 XTXβ=XTy가 나옵니다.
- 역행렬을 곱하면 핵심 식이 됩니다.
β^=(XTX)−1XTy
- 잔차는 무엇이고, 왜 제곱해서 더하는가?
- 오차제곱합을 미분해 0으로 두면 어떤 식이 나오는가?
- 정규방정식 XTXβ=XTy에서 계수를 어떻게 푸는가?
- 특징행렬의 첫 열을 1로 두는 이유는 무엇인가?