에듀테크 프로젝트 대시보드
최소제곱법 (Least Squares)
흩어진 점들 사이를 지나는 가장 좋은 직선은 무엇일까? "좋다"를 각 점에서 직선까지의
세로 거리(잔차)를 제곱해 모두 더한 값 SSE 가 가장 작은 직선이라고 정의하면,
자를 대고 눈대중할 필요 없이 공식 한 줄로 정답이 나온다. 이게 최소제곱법이고,
데이터로 추세를 예측하는 선형 회귀의 핵심이다. 아래 판을 클릭해 점을 찍고,
분홍 직선을 슬라이더로 움직여 파란 최적 직선보다 SSE를 더 줄일 수 있는지 시도해 보자.
● 점을 클릭으로 추가한다. 파란 직선은 최소제곱법이 계산한 SSE 최소 직선, 분홍 직선은 네가 슬라이더로 직접 맞추는 직선이다. 세로로 뻗은 주황 선분이 각 점의 잔차(예측 오차)이고, 그 정사각형 넓이의 합이 바로 최소화 대상이다.
점 (xᵢ, yᵢ)에서 직선의 예측값은 ŷᵢ = a·xᵢ + b.
오차(잔차)는 eᵢ = yᵢ − ŷᵢ, 즉 세로 거리다.
위로 벗어난 +오차와 아래로 벗어난 −오차가 서로 지워져 엉터리 직선도 합이 0이 된다. 그래서 부호를 없애야 한다.
제곱은 큰 오차에 더 큰 벌점을 주고, 매끄러운(미분 가능) 함수라 미분해서 최솟값을 한 번에 구할 수 있다.
SSE(a,b) = Σ(yᵢ − a·xᵢ − b)² 를 가장 작게 만드는
a, b 를 찾는 것.
a, b 두 변수의 함수로 보면
아래로 볼록한 그릇 모양이다. 바닥은 딱 한 곳 — 그래서 최적해가 유일하고,
반복 없이 공식으로 떨어진다.
SSE를 a로, b로 각각 편미분해 0으로 두면 연립방정식이 나오고,
풀면 이렇게 정리된다. x̄, ȳ 는 각각 x와 y의 평균이다.
(x̄, ȳ) 를 지난다. 기울기 a 만
"x가 1 늘 때 y는 평균 몇 늘더라"를 재고, 절편 b 는 그 점을 지나도록 맞춰 준다.
y = a₁x₁ + a₂x₂ + … + b)면 이 공식이 행렬식
β = (XᵀX)⁻¹ Xᵀy 로 확장된다 — 이름이 정규방정식(normal equation)인 이유.
데이터가 아주 크면 역행렬 대신 경사 하강법으로 같은 바닥을 찾아 내려간다.
R² = 1 − SSE / SST (SST = Σ(yᵢ − ȳ)², y를 그냥 평균으로만 예측했을 때의 오차).
1에 가까울수록 직선이 데이터의 흩어짐을 잘 설명한 것이고, 0이면 "평균으로 찍는 것과
다를 바 없다"는 뜻이다. 위 데모의 읽기 창에도 실시간 R² 가 표시된다.
오차를 제곱하므로 멀리 떨어진 점 하나가 직선을 통째로 끌어당긴다. 데모에서 구석에 점 하나 찍어 보면 파란 선이 휙 기운다.
데이터 범위 바깥을 직선으로 늘려 예측하면 크게 빗나갈 수 있다. "키 3m인 사람의 몸무게" 같은 값은 믿을 수 없다.
기울기가 뚜렷해도 x가 y의 원인이라는 보장은 없다. 숨은 제3의 변수(교란 변수)일 수 있다.
포물선·주기 패턴에 억지로 직선을 대면 R²가 낮다.
잔차 그래프에 패턴이 보이면 모델을 바꿔야 한다는 신호.
R² 가 똑같은 네 데이터셋이
그래프로는 완전히 다르게 생겼다. 숫자만 보지 말고 반드시 그림을 그려 보라는 교훈.