17강 / 20강

최소제곱법 — 못 맞추는 방정식에 답하기

데이터에 직선을 얹는 일

최소제곱법 — 못 맞추는 방정식에 답하기
모두를 만족시킬 수 없다면, 가장 덜 틀린 답을 찾습니다.

실험을 해서 점 여섯 개를 얻었습니다. 직선으로 설명하고 싶어요. 그런데 직선은 미지수가 둘(기울기, 절편)인데 조건은 여섯 개입니다. 식이 미지수보다 많으니 대개 해가 없습니다.

그럼 포기할까요? 아니요. 질문을 바꿉니다.

❌ "모든 점을 정확히 지나는 직선은?" → 없습니다

✅ "가장 덜 틀린 직선은?" → 있습니다. 그것도 딱 하나

"덜 틀렸다"를 재는 자로 오차의 제곱의 합을 씁니다. 이것을 가장 작게 만드는 답이 최소제곱해예요. 데이터 분석·회귀분석·기계학습이 매일 하는 일이 이겁니다.

이 공식은 외울 필요가 없습니다 — 정규방정식에서 저절로 나옵니다.
Python 브라우저에서 실행

🎮 직접 직선을 맞춰 보세요

점을 눌러 더하거나 지우고, 슬라이더로 내 직선을 움직여 보세요. 오차의 제곱합이 최소제곱 직선보다 작아지는 일이 절대 없습니다. 세로 주황 선분이 각 점의 오차예요.

최소제곱 직선과 오차 — 아무리 맞춰도 이길 수 없습니다
불러오는 중…

정사영으로 다시 보기

16강의 눈으로 보면 최소제곱법은 정사영 그 자체입니다.

점 여섯 개를 맞추는 문제를 Ax = b 로 적어 봅시다. A 는 각 점의 [x, 1] 을 쌓은 6×2 행렬, b 는 y 값 여섯 개, x 는 우리가 찾는 [기울기, 절편] 입니다.

b 는 6차원 벡터이고, A 의 열공간은 6차원 안의 2차원 평면입니다. b 가 그 평면 위에 있을 확률은 거의 없어요 — 그래서 해가 없습니다.

그러면 b 를 그 평면 위로 정사영합니다. 그 그림자에 대한 방정식은 반드시 풀리고, 그 답이 최소제곱해예요. "해가 없다"를 "가장 가까운 곳에 대한 해"로 바꾼 것입니다.

회귀분석의 공식은 정규방정식 한 줄에서 전부 나옵니다.
Python 브라우저에서 실행

직선만이 아니다

최소제곱법은 직선 맞추기 전용이 아닙니다. Ax = b 꼴로 적을 수만 있으면 무엇이든 됩니다.

포물선을 맞추고 싶다면 A 의 열을 [x², x, 1] 로 하면 돼요. y = ax² + bx + c 에서 미지수 a, b, c 에 대해서는 여전히 일차이기 때문입니다. 곡선이라고 비선형인 게 아니에요 — 무엇에 대해 일차인가가 기준입니다.

변수가 여러 개인 경우(다중회귀), 주기함수 맞추기(푸리에), 심지어 신경망의 마지막 층도 전부 같은 틀입니다.

곡선이어도 미지수에 대해 일차면 최소제곱법이 그대로 통합니다.
Python 브라우저에서 실행
🤔 확인 문제
최소제곱법이 최소화하는 것은?
🤔 확인 문제
Ax = b 에 해가 없을 때 최소제곱법이 실제로 푸는 식은?
🤔 확인 문제
최소제곱법의 약점으로 자주 지적되는 것은?