Lecture 16. 투영행렬과 최소제곱
Projection Matrices and Least Squares — 서술
점 세 개를 지나는 직선을 그으라는 문제가 있다. 그런데 세 점이 한 직선 위에 있지 않다.
방정식은 세 개, 미지수는 두 개. 해가 없다.
그러나 답을 내야 한다. 실험을 세 번 했고 데이터가 세 개 있는데 "직선이 없습니다"라고
보고할 수는 없다.
이번 강의는 해가 없는 방정식에 답하는 법이다. 그리고 그 답은 지난 강의에서 이미
만들어 두었다. 투영이다.
그리고 이것은 이미 수없이 써 온 계산이기도 하다. 표 계산 프로그램의 추세선, 통계학의
회귀분석, 기계학습의 선형 모델이 전부 같은 계산이다.
1. 해가 없다는 것부터 확인한다¶
데이터가 세 개 있다고 하자.
(t1,y1)=(1,1),(t2,y2)=(2,3),(t3,y3)=(3,2) 여기에 직선 y=C+Dt 를 맞추고 싶다. 세 점을 전부 지나려면 다음 세 식이 동시에
성립해야 한다.
C+1⋅DC+2⋅DC+3⋅D=1=3=2 미지수는 C 와 D 둘뿐인데 식이 셋이다. 행렬로 옮겨 쓰자.
A=⎣⎡111123⎦⎤,x=[CD],b=⎣⎡132⎦⎤ 정말 해가 없는지 확인하자. 앞의 두 식을 빼면 D=2 이고 C=−1 인데, 세 번째 식에
넣으면 −1+6=5 이지 2가 아니다.
L8에서 배운 방법으로도 같은 결론이 나온다. 해가 있으려면 좌영공간의 모든 y 에 대해
yTb=0 이어야 했다(L8의 (6)). 이 A 의 좌영공간은
N(AT)=span⎩⎨⎧⎣⎡1−21⎦⎤⎭⎬⎫ 인데 (y 의 성분 합이 0이고 t 를 가중치로 준 합도 0이어야 한다는 두 식을 풀면 나온다),
yTb=1−6+2=−3=0 이므로 해가 없다. b 가 열공간 밖에 있다는 뜻이다.
2. 같은 계산의 두 얼굴¶
이 강의에서 가장 중요한 것은 계산이 아니라 두 개의 그림이 같다는 것이다.

Figure 1:왼쪽은 데이터 평면, 오른쪽은 R3 의 열공간이다. 빨간 숫자 셋이 양쪽에 똑같이 나타난다.
왼쪽 그림은 익숙하다. 가로축이 t, 세로축이 y 이고 점 세 개와 직선 하나가 있다.
점에서 직선까지의 세로 간격이 잔차이다.
오른쪽 그림은 R3 이다. 데이터 b=(1,3,2) 가 벡터 하나이고, A 의 두 열이
평면을 만들며, b 를 그 평면에 떨어뜨린 것이 p 이다.
두 그림은 완전히 달라 보이지만 같은 숫자를 쓴다.
| 데이터 평면 (왼쪽) | 열공간 (오른쪽) |
|---|
| 데이터 점 yi | 벡터 b 의 i 번째 성분 |
| 직선 위의 값 C+Dti | 투영 p 의 i 번째 성분 |
| 잔차, 곧 세로 막대의 길이 | 오차 벡터 e 의 i 번째 성분 |
| 잔차 제곱합이 최소 | ∣e∣ 가 최소, 곧 투영 |
| 점의 개수 m | 벡터가 사는 공간 Rm |
| 모델의 항 개수 n | 열의 개수, 곧 열공간의 차원 |
이 대응을 붙잡고 있으면 나머지는 계산일 뿐이다.
3. 정규방정식으로 푼다¶
L15에서 조건은 하나였다. 오차가 열공간과 직교할 것, 곧 ATe=0.
그것을 풀어 쓴 것이 정규방정식이었다(L15의 (11)).
ATAx^=ATb 양쪽을 계산하자. ATA 의 성분은 열끼리의 내적이다.
ATA=[1⋅1t⋅11⋅tt⋅t]=[m∑ti∑ti∑ti2]=[36614] ATb=[∑yi∑tiyi]=[1+3+21+6+6]=[613] 2×2 연립이 되었으니 손으로 풀린다.
3C+6D6C+14D=6=13 첫 식을 3으로 나누면 C+2D=2, 곧 C=2−2D 이다. 둘째 식에 넣으면
6(2−2D)+14D=12+2D=13⟹D=21,C=1 맞춘 직선은 y=1+21t 이다. 직선 위의 값과 잔차를 적어 보자.
p=Ax^=⎣⎡1.522.5⎦⎤,e=b−p=⎣⎡−0.51−0.5⎦⎤,∥e∥2=1.5 검산은 수직인지 보는 것이다.
ATe=[−0.5+1−0.5−0.5+2−1.5]=[00]
4. 미적분으로 풀어도 같은 곳에 도착한다¶
3절은 기하에서 출발했다. 오차가 수직이라는 조건이었다. 그런데 최소제곱을 처음 배울 때는
보통 미적분으로 배운다. 잔차 제곱합을 미분해서 0으로 놓는 것이다. 두 길이 만나는지 보자.
f(C,D)=i=1∑3(yi−C−Dti)2 C 로 편미분한다. 각 항이 제곱이므로 연쇄법칙으로 안쪽 미분 -1 이 곱해진다.
∂C∂f=i∑2(yi−C−Dti)⋅(−1)=−2i∑(yi−C−Dti) 0으로 놓고 정리하면
i∑yi=mC+Di∑ti⟹6=3C+6D 이다. D 로 편미분하면 안쪽 미분이 −ti 이므로
∂D∂f=−2i∑ti(yi−C−Dti)=0⟹i∑tiyi=Ci∑ti+Di∑ti2 13=6C+14D (9)의 두 식과 글자 하나까지 같다.

Figure 2:두 편미분을 0으로 놓은 것이 두 직선이고, 그 교점이 답이다. 등고선은 잔차 제곱합이다.
왜 두 길이 만나는가¶
우연이 아니다. 일반적인 경우를 계산해 보면 이유가 보인다.
f(x)=∥b−Ax∥2=∑i(bi−∑jaijxj)2 를
xk 로 편미분하면
∂xk∂f=i∑2(bi−j∑aijxj)⋅(−aik)=−2i∑aik(b−Ax)i 인데, 오른쪽의 합은 A 의 k 번째 열과 오차 벡터의 내적이다. 그러므로
∂xk∂f=−2(AT(b−Ax))k 이고, 모든 k 에 대해 0으로 놓는 것이 곧 AT(b−Ax)=0 이다.
5. 언제 풀리는가 — 수학의 조건과 데이터의 상식¶
ATA 가 가역이어야 x^ 가 하나로 정해진다. L14에서 그 조건은
A 의 열이 독립인 것이었다(L14의 Theorem 5).
이 A 의 두 열은 1=(1,1,…,1) 과 t=(t1,…,tm) 이다.
두 열이 종속이라는 것은 t 가 1 의 배수라는 뜻이고, 곧 모든 ti 가 같다는 뜻이다.
열이 종속⟺t1=t2=⋯=tm 데이터의 말로 옮기면 이렇다. 같은 시각에서만 측정했다면 기울기를 정할 수 없다.
t 축의 한 자리에 점이 쌓여 있을 뿐이니 어떤 기울기의 직선을 그어도 마찬가지이다.
6. 열이 곧 모델의 항이다¶
직선만 맞출 수 있는 것이 아니다. 포물선을 맞추고 싶으면 y=C+Dt+Et2 로 두고
열을 하나 더 붙이면 된다.
A=[1tt2],x=⎣⎡CDE⎦⎤ 변수가 둘인 y=C+D1s+D2u 도 마찬가지이다.
A=[1su] 바뀐 것은 A 의 열뿐이고 정규방정식 (6)의 모양은 그대로이다.
7. 자주 하는 오해¶
잔차는 세로 거리이지 점과 직선 사이의 최단거리가 아니다¶
가장 흔한 오해이다. 최소제곱이 줄이는 것은 yi−(C+Dti) 이고, 이것은 세로 방향의
간격이다. 점에서 직선에 내린 수선의 길이가 아니다.

Figure 3:왼쪽이 최소제곱이 줄이는 양이고, 오른쪽은 다른 문제이다.
왜 세로인가. t 는 정확히 알고 y 에만 오차가 있다고 보기 때문이다. 시각은 정확히 쟀고
측정값이 흔들렸다는 상황이다. 양쪽 모두에 오차가 있다고 보면 다른 문제가 되고 답도 달라진다.
오차가 0이 아닌 것이 정상이다¶
e=0 인 것이 이 강의의 존재 이유이다. e=0 이면 애초에
Ax=b 에 해가 있었다는 뜻이라 투영할 일이 없다.
x^ 와 p 는 다른 것이다¶
x^ 는 계수 (C,D) 이고 Rn 에 산다. p=Ax^ 는 직선 위의
예측값들이고 Rm 에 산다. 크기부터 다르다.
(ATA)−1 을 실제로 계산하는 것은 좋은 방법이 아니다¶
식으로 쓸 때는 x^=(ATA)−1ATb 가 편하지만,
컴퓨터로 풀 때 역행렬을 만드는 것은 권할 만한 일이 아니다.
Figure 2에서 두 직선이 거의 나란하고 등고선이 길쭉한 타원인 것이 그 신호이다.
이 이야기는 L33에서 마무리한다.
마치며...¶
이번 강의에서 다룬 것을 정리하면 다음과 같다.
| 대상 | 내용 |
|---|
| 문제 | 점이 m 개, 미지수가 n 개. m>n 이면 대개 해가 없다 |
| 답 | 도달할 수 없는 b 대신 열공간 위의 가장 가까운 점 |
| 정규방정식 | ATAx^=ATb, 성분은 ∑ti, ∑ti2, ∑yi, ∑tiyi |
| 미적분 경로 | 편미분이 곧 열과 오차의 내적이라 같은 식이 나온다 |
| 풀릴 조건 | 열이 독립, 곧 t 값이 전부 같지는 않을 것 |
| 열의 뜻 | 모델의 항. 열을 늘리면 재료가 는다 |
| 두 개의 그림 | 잔차 막대와 오차 벡터는 같은 숫자이다 |
가장 중요한 것은 두 개의 그림이었다. 산점도에 그은 직선과 잔차 막대, 그리고 3차원에서
평면에 떨어지는 그림자. 완전히 달라 보이지만 같은 숫자이고 같은 계산이다.
회귀분석을 볼 때 두 번째 그림이 보이는가 아닌가가 선형대수를 배운 값어치이다.
그런데 찜찜한 것이 하나 남는다. 우리는 ATA 를 뒤집었다. 이 계산은 안전한가.
(7)의 행렬을 다시 보면 [36614] 인데,
두 행이 꽤 비슷하다. 열들이 서로 더 닮으면 어떻게 되는가.
이 물음은 지금 답하지 않는다. 다만 힌트를 하나 남긴다.
만약 A 의 열들이 애초에 서로 직교했다면 ATA 는 대각행렬이 되고,
역행렬을 구하는 일이 나눗셈 몇 번으로 끝난다.
그렇다면 아무 열이나 직교로 만들어 버리면 되지 않을까. 다음 강의의 주제이다.
이번 강의의 내용을 파이썬으로 확인해 보려면 L16 실습 노트북으로 넘어가면 된다.
두 그림을 나란히 그려 같은 숫자가 양쪽에 나타나는 것을 보고, 계수를 손으로 흔들어 잔차 제곱합이
정말 커지는지 확인하며, 포물선과 다변수로 확장해 볼 수 있다.