Menu

회귀직선과 최소제곱법

흩어진 점들을 지나는 직선 중 최소제곱의 기준으로 점들을 가장 적게 빗나가는 직선은 정확히 하나입니다. 점을 끌면 그 직선이 계속 최적이 되도록 움직입니다.

작성: Nethanel Bar, 공동 창업자 겸 CEO

마지막 업데이트

실제 데이터를 점으로 찍으면 점들은 한 직선 위에 놓이려 하지 않습니다. 그래도 구름을 지나며 추세를 잡아내는 직선을 그을 수는 있는데, 자를 든 사람마다 조금씩 다른 직선을 긋게 됩니다. 회귀직선은 이 논쟁을 끝냅니다. 정확한 기준으로 가장 좋은 직선은 하나이고, 그것을 찾는 공식이 있습니다.

아래의 아무 점이나 끌어 보세요. 직선이 계속 최적이 되도록 움직입니다. 점 하나를 다른 점들에서 멀리 끌어내면, 그 점이 직선을 자기 쪽으로 얼마나 세게 당기는지 보일 것입니다.

y = x + 1기울기1절편1

아무 점이나 끌면 직선이 계속 최적이 되도록 움직입니다. 나머지에서 멀리 떨어진 점일수록 직선을 세게 당깁니다.

"가장 좋다"의 뜻

직선은 각 점을 세로 거리만큼 빗나갑니다. 점의 실제 y에서 그 x에서 직선이 예측한 y를 뺀 값입니다. 이 거리가 그 점의 잔차입니다. 좋은 직선이라면 잔차가 작아야 하지만, 잔차를 그냥 더할 수는 없습니다. 직선 위쪽으로 빗나간 것은 양수, 아래쪽은 음수여서 서로 상쇄되기 때문입니다.

그래서 각 잔차를 먼저 제곱합니다. 그러면 모든 오차가 빠짐없이 세어지고, 큰 오차가 작은 오차보다 훨씬 무겁게 세어집니다. 회귀직선은 잔차의 제곱의 합을 가장 작게 만드는 직선입니다. 그래서 최소제곱 직선이라고 부르며, x 값이 모두 같지만 않다면 어떤 점들에 대해서도 정확히 하나뿐입니다.

두 공식

직선을 y = mx + b로 쓰고, 데이터의 평균을 x̄와 ȳ로 씁니다. 제곱의 합을 최소로 만들면 기울기와 절편이 바로 나옵니다.

m = Σ(x - x̄)(y - ȳ) / Σ(x - x̄)²

b = ȳ - m x̄

기울기 공식의 분자는 상관계수의 분자에 있는 것과 같은 곱의 합입니다. 그래서 기울기와 r의 부호는 언제나 같습니다. 분모는 x만 다룹니다. x 값들이 얼마나 퍼져 있는지를 잽니다.

풀이 예제

점 다섯 개입니다. x = 2, 4, 6, 8, 10, y = 3, 7, 8, 12, 15. x의 평균은 6, y의 평균은 9입니다.

xyx - 6y - 9곱(x - 6)²
23-4-62416
47-2-244
680-100
8122364
1015462416
합계5840

기울기는 m = 58/40 = 29/20, 곧 1.45입니다. 절편은 평균점을 직선에 넣고 b에 대해 풀어 구합니다.

따라서 b = 3/10이고, 회귀직선은 y = 1.45x + 0.3입니다. 선형회귀 계산기는 누적 합 꼴의 공식으로 같은 일을 하고 각 합을 보여 줍니다.

회귀직선은 언제나 평균점을 지난다

절편 공식을 정리하면 ȳ = m x̄ + b가 됩니다. 데이터가 무엇이든 점 (x̄, ȳ)이 정확히 직선 위에 있다는 뜻입니다. 예제에서 1.45 × 6 + 0.3 = 9입니다.

이것은 계산한 직선을 확인하는 좋은 방법이고, 눈대중으로 그을 때도 좋은 출발점입니다. 먼저 평균점을 찍고, 그 점을 중심으로 자를 돌려 양쪽의 점들이 균형을 이루게 하세요.

그렇지만 평균점을 지나는 것만으로는 부족합니다. x = 1, 2, 3, 4, 5와 y = 2, 4, 5, 4, 5의 평균점은 (3, 4)이고, 최소제곱 직선은 y = 0.6x + 2.2, 잔차제곱합은 2.4입니다. 직선 y = 0.5x + 2.5와 y = x + 1도 (3, 4)를 지나지만, 그 제곱의 합은 2.5와 4입니다. 그 점을 지나는 모든 직선 가운데 2.4까지 내려가는 것은 기울기 0.6뿐입니다.

직선으로 예측하기

직선을 구하고 나면 예측은 대입일 뿐입니다. y = 1.45x + 0.3에서 x = 7이면 1.45 × 7 + 0.3 = 10.45입니다.

이 예측은 내삽입니다. 7은 데이터 안, 6과 8의 점 사이에 있으므로 거기서 추세가 유지된다는 근거가 양쪽에 있습니다. 데이터 범위 밖의 예측은 외삽이고, 데이터 어디에도 그것을 뒷받침하는 근거가 없습니다.

구체적인 예를 봅시다. 학생 여섯 명이 1시간부터 6시간까지 공부해 52, 58, 61, 67, 70, 76점을 받았습니다. 회귀직선은 y = 162/35x + 47.8이고, 기울기는 시간당 약 4.63점, r ≈ 0.9959입니다. 데이터 안에서는 잘 예측합니다. 4.5시간이면 약 68.63점입니다. 12시간으로 외삽하면 100점 만점 시험에서 약 103.34점을 예측합니다. 직선에는 잘못이 없습니다. 직선이 설명하는 추세가 데이터 너머 어딘가에서 멈출 뿐이고, 직선은 그곳이 어디인지 알 수 없습니다.

직선이 틀린 모양일 때

직선이 틀린 모형일 때도 회귀직선은 언제나 존재합니다. x = 0부터 5에서 제곱수 0, 1, 4, 9, 16, 25의 회귀직선은 y = 5x - 10/3, r ≈ 0.9599로 아주 좋아 보이는데, 점들은 곡선 위에 있습니다. 잔차가 그것을 드러냅니다. 양 끝에서 양수, 가운데서 음수입니다. 잔차 페이지에서 그 패턴을 읽는 법을 볼 수 있고, 이차회귀 계산기는 대신 곡선을 맞춥니다.

하나 풀어 보기

x = 4에 있는 실제 점은 (4, 7)이므로 직선은 이 점을 0.9만큼 빗나갑니다. 그 오차가 이 점의 잔차이고, 다섯 오차의 제곱을 모두 더한 1.9는 이 점들에 대해 어떤 직선도 이보다 작게 만들 수 없는 값입니다.

자주 묻는 질문

회귀직선이란 무엇인가요?
산점도의 점들이 보이는 추세를 요약하려고 그은 직선입니다. 엄밀한 뜻의 회귀직선은 최소제곱 회귀직선입니다. 가능한 모든 직선 가운데, 점들에서 직선까지의 세로 오차를 제곱해 더한 합이 가장 작은 직선입니다.
회귀직선은 어떻게 구하나요?
x의 평균과 y의 평균을 구합니다. 기울기는 (x에서 x의 평균을 뺀 값) 곱하기 (y에서 y의 평균을 뺀 값)의 합을 (x에서 x의 평균을 뺀 값)의 제곱의 합으로 나눈 것입니다. 절편은 y의 평균에서 기울기와 x의 평균의 곱을 뺀 값입니다. x = 2, 4, 6, 8, 10과 y = 3, 7, 8, 12, 15라면 기울기는 58/40 = 1.45, 절편은 9에서 1.45 × 6을 뺀 0.3이므로 y = 1.45x + 0.3입니다.
회귀직선은 원점을 지나야 하나요?
아닙니다. 회귀직선은 원점이 아니라 평균점을 지납니다. 직선을 억지로 (0, 0)에 지나게 하는 것은 다른 모형이고, x가 0일 때 y가 0이어야 할 이유가 있을 때만 쓰며, 대개 점들에 더 나쁘게 맞습니다.
회귀직선은 데이터 점 중 어느 것을 지나야 하나요?
아닙니다. 대개는 어느 점도 지나지 않습니다. 언제나 지나는 점은 (x의 평균, y의 평균) 하나뿐이고, 그 점은 흔히 데이터 점이 아닙니다. 되도록 많은 점에 닿게 그은 직선은 최소제곱 직선이 아닙니다.
내삽과 외삽은 어떻게 다른가요?
내삽은 데이터 범위 안의 x에 대해 y를 예측하는 것으로, 양쪽에 점이 있어 직선을 뒷받침합니다. 외삽은 그 범위 밖을 예측하는 것으로, 데이터 어디에도 추세가 계속된다는 근거가 없습니다. 직선이 잘 맞으면 내삽은 대체로 믿을 만하지만, 외삽은 r이 1에 가까워도 크게 틀릴 수 있습니다.
회귀직선과 선형회귀는 같은 것인가요?
보통의 뜻으로는 그렇습니다. 선형회귀는 방법이고, 그 방법이 만드는 최소제곱 직선이 회귀직선입니다. 학교에서는 그래프 위에 눈대중으로 그은 직선도 추세선이라고 부르지만, 그것은 회귀직선을 어림한 것이지 회귀직선 자체는 아닙니다.

관련 개념

Coddy 프로그래밍 언어 일러스트

Coddy와 함께 수학 배우기

시작하기