16강 / 20강

직교와 정사영 — 그림자를 내리는 법

가장 가까운 점의 표식은 직각이다

직교와 정사영 — 그림자를 내리는 법
가장 가까운 점에서는 오차가 반드시 직각으로 남습니다.

직선 위에 있지 않은 점 b 가 있습니다. 그 직선 위에서 b 에 가장 가까운 점은 어디일까요?

답은 누구나 압니다 — 수직으로 내린 발이에요. 그런데 왜 하필 수직일까요? 그리고 그것을 어떻게 계산할까요?

3강에서 이미 답의 절반을 봤습니다. b 를 a 방향으로 정사영하면

p = (a·b / a·a) · a

이고, 남은 오차 e = b − p 는 a 와 직교합니다. 이 사실 하나가 17강 최소제곱법 전체를 떠받칩니다.

정사영 = 그림자. 오차는 언제나 직각으로 남습니다.
Python 브라우저에서 실행

🎮 정말 가장 가까운지 확인해 보세요

b 를 끌어 옮기고, 직선의 방향도 돌려 보세요. 그리고 슬라이더로 직선 위의 다른 점을 골라 거리를 재 보세요. 어디를 골라도 정사영보다 가깝지 않습니다.

가장 가까운 점과 직각의 관계
불러오는 중…

직선을 넘어 — 부분공간으로의 정사영

이제 직선이 아니라 평면(더 일반적으로 열공간) 위로 내려 봅시다. A 의 열들이 만드는 공간 위로 b 를 정사영하면 p = Ax̂ 꼴이고, 오차 e = b − Ax̂ 는 A 의 모든 열과 직교해야 합니다.

"모든 열과 직교" 를 한 줄로 적으면 Aᵀ(b − Ax̂) = 0

정리하면 AᵀA x̂ = Aᵀb — 이것을 정규방정식이라 부릅니다

이 식이 17강의 전부입니다. 그리고 놀랍게도 b 가 어디에 있든 이 방정식은 언제나 해를 가집니다 — 정사영은 항상 할 수 있으니까요.

정규방정식 AᵀAx̂ = Aᵀb. 17강의 핵심 도구입니다.
Python 브라우저에서 실행

정사영 행렬

정사영도 하나의 일차변환이므로 행렬로 적을 수 있습니다.

P = A(AᵀA)⁻¹Aᵀ

이 행렬에는 재미있는 성질이 있습니다. P² = P 예요 — 이미 그림자를 내린 것에 다시 그림자를 내려도 그대로라는 뜻입니다. 당연하죠. 그리고 Pᵀ = P, 즉 대칭입니다.

고윳값도 예측할 수 있습니다. 부분공간 안의 벡터는 그대로 있으니 λ = 1, 직교하는 벡터는 0으로 사라지니 λ = 0. 정사영 행렬의 고윳값은 0과 1 뿐이에요. 18강에서 이 예측을 직접 확인해 봅니다.

정사영 행렬 P 는 P² = P 이고 고윳값이 0 과 1 뿐입니다.
Python 브라우저에서 실행
🤔 확인 문제
b 를 a 방향으로 정사영한 벡터 p 에 대해 항상 참인 것은?
🤔 확인 문제
정규방정식 AᵀAx̂ = Aᵀb 는 어디서 나왔나요?
🤔 확인 문제
정사영 행렬 P 가 만족하는 것은?