Simple Linear Regression: Least Squares — A Mathematical Solution

분포 가정 없는 순수 최적화로서의 최소제곱 (Casella §11.3.1)

단순 선형 회귀의 최소제곱 해를 통계적 가정(정규성, 독립성) 없이 순수한 수학적 최적화 문제로 유도한다. 왜 제곱 손실인가, 미적분·선형대수·기하 세 경로의 유도, 정규방정식과 사영행렬, 해의 유일성 조건, 수치적으로 안정한 계산법(QR/SVD), 다른 손실함수(L1, Huber)와의 철학적 비교까지 Casella & Berger §11.3.1 의 “수학적 해법” 관점을 완전히 풀어낸다.

Statistics
Regression
저자

Kwangmin Kim

공개

2026년 04월 06일

1 개요

이전 포스트에서 단순 선형 회귀(SLR)의 전체 지형을 조망했다. 이 포스트는 그 지형의 첫 건축물인 최소제곱 추정량을 통계적 가정 없이 순수한 수학적 최적화 문제로서 엄밀히 유도한다.

Casella & Berger(2002, §11.3.1)의 제목 “A Mathematical Solution” 이 시사하는 바는 중요하다. 이 절에서는 확률도, 분포도, 오차의 성질도 가정하지 않는다. 단지 점들의 집합 \((x_i, y_i)\) 가 주어졌을 때 “이 점들을 가장 잘 지나는 직선은 무엇인가” 라는 결정론적 질문을 던지고, 그 답을 구한다. 확률적 해석(BLUE, 분포, 검정)은 후속 포스트(SLR 추론)에서 다룬다.

분포 가정 없이 유도하는 것의 이점은 두 가지다. 첫째, 추정과 추론의 논리적 분리를 명확히 한다 — 같은 \(\hat\beta\) 가 다양한 확률적 가정 하에서 재해석된다. 둘째, 최소제곱이 통계학 밖에서도 신호 처리, 수치 해석, 기하학적 피팅 등 다양한 분야에서 쓰이는 이유를 이해할 수 있다.


2 문제의 결정론적 정식화

2.1 데이터와 목표

\(n\) 개의 점 \((x_1, y_1), (x_2, y_2), \ldots, (x_n, y_n)\) 이 주어졌다. 여기서 \(x_i, y_i \in \mathbb{R}\) 는 단순히 실수 쌍이다. 확률변수도, 표본도 아니고, 관측 노이즈에 대한 어떤 가정도 없다.

목표: 직선 \(y = a + bx\) 중에서 “점들에 가장 잘 맞는” 것을 찾는다.

2.2 “가장 잘 맞는” 의 정의가 필요하다

“가장 잘 맞는다” 는 개념은 수학적으로 정의되어 있지 않다. 우리는 이를 손실 함수(loss function)로 정의해야 한다. 가장 흔한 네 가지 정의:

이름 목적함수 이름
L2 (제곱) \(\sum_{i=1}^n (y_i - a - b x_i)^2\) Ordinary Least Squares
L1 (절대값) \(\sum_{i=1}^n \lvert y_i - a - b x_i \rvert\) Least Absolute Deviations (LAD)
L\(\infty\) (최대값) \(\max_i \lvert y_i - a - b x_i \rvert\) Chebyshev / minimax
수직 거리 \(\sum_{i=1}^n \frac{(y_i - a - b x_i)^2}{1 + b^2}\) Total Least Squares

이 중 어느 것도 “자연의 법칙” 이 아니다. 각자 장단점이 있다. 그런데 L2(제곱) 가 역사적·수학적으로 압도적으로 많이 쓰인다. 왜 그런가?


3 왜 L2 (제곱 손실) 인가

L2 가 지배적인 이유는 세 겹으로 쌓여 있다. 첫째, 수학적 편의 — 미분 가능하여 닫힌 해가 존재한다. 둘째, 통계적 연결 — 정규분포 오차를 가정하면 MLE 가 L2 최소화와 일치한다. 셋째, 기하학적 자연스러움 — 유클리드 거리가 곧 L2 이다. 이 세 이유가 독립적으로 L2 를 지지하므로, 어느 하나가 무너져도 나머지 둘이 버틴다.

3.1 이유 1: 미분 가능성

제곱 함수 \(f(r) = r^2\) 은 모든 점에서 미분 가능하고, 도함수 \(f'(r) = 2r\) 도 연속이다. 반면 절대값 \(|r|\)\(r = 0\) 에서 미분 불가능하다. 미분 가능성은 닫힌 해(closed-form)의 존재를 가능하게 한다 — 미분 = 0 의 1계 조건을 풀면 명시적 공식이 나온다.

3.2 이유 2: 큰 잔차에 큰 페널티

제곱 함수는 \(r\) 이 커질수록 기울기가 급격히 증가한다(\(f'(r) = 2r\)). 이는 “큰 오차를 작은 오차보다 훨씬 심각하게 본다” 는 철학이다. 한 점이 10 떨어져 있다면 한 점이 1 떨어져 있는 것의 \(10^2 = 100\) 배로 페널티를 준다.

이 성질이 양날의 검이다. 장점은 “큰 편차를 줄이려는 강한 유인”, 단점은 “이상치에 매우 민감”.

3.3 이유 3: 유클리드 기하학과의 일치

\(\sum (y_i - \hat{y}_i)^2 = \|\mathbf{y} - \hat{\mathbf{y}}\|_2^2\)\(n\) 차원 유클리드 공간에서의 거리의 제곱이다. 따라서 최소제곱은 “예측 벡터를 관측 벡터에 유클리드적으로 가장 가까이 놓는” 문제로 재해석된다. 이는 피타고라스 정리, 직교 투영 등 유클리드 기하학의 도구 전체를 사용 가능하게 만든다.

3.4 이유 4: 평균의 최적성

상수 \(c\)\(n\) 개 점 \(y_i\) 를 근사할 때:

  • L2 최소화 → $c = $ 평균 \(\bar{y}\)
  • L1 최소화 → $c = $ 중앙값 median
  • L\(\infty\) 최소화 → \(c = (\max y + \min y)/2\) — midrange

평균이 수학적으로 가장 다루기 쉬운 요약 통계이므로, L2는 자연스럽게 선호된다.

3.5 이유 5: 볼록성과 유일성

\(f(r) = r^2\)엄밀하게 볼록(strictly convex)하다. 볼록 함수의 합도 볼록이므로, \(\sum (y_i - a - b x_i)^2\)\((a, b)\) 의 엄밀 볼록 함수이다. 이는 전역 최솟값이 유일하게 존재함을 보장한다 (\(S_{xx} > 0\) 조건 하에서).

반면 L1 은 볼록하지만 엄밀 볼록이 아니다 — 해가 유일하지 않을 수 있고, 닫힌 해도 없다 (선형계획법 또는 반복 알고리즘으로 풀어야 함).

3.6 반박: 그래도 L1 이 나은 경우

이상치가 많은 데이터에서는 L1 이 훨씬 강건하다. 한 점이 극단값이라도 L1 은 영향을 받지 않지만, L2 는 전체 직선이 끌려간다. “제곱이 항상 옳다”가 아니라 “제곱이 수학적으로 편리하고 정규 오차 가정과 맞다” 로 이해해야 한다.

핵심 통찰

제곱 손실의 우위는 자연의 선택이 아니라 수학적 편의성 + 유클리드 기하학 + 평균 통계량 이라는 세 가지 수학적 매력의 합성이다. 19세기 Legendre 와 Gauss 가 L2 를 선택한 것은 부분적으로 해의 존재성과 계산 가능성 때문이었다.

현대에는 L1(LASSO), Huber, quantile regression, 비대칭 손실 등이 각자의 목적에 맞게 사용된다. OLS 는 기본값일 뿐 유일한 정답이 아니다.


4 유도 1: 미적분 (스칼라 형태)

4.1 목적함수

\[ S(a, b) = \sum_{i=1}^{n} (y_i - a - b x_i)^2 \]

이를 \((a, b)\) 에 대해 최소화한다.

4.2 편미분과 1계 조건

\[ \frac{\partial S}{\partial a} = -2 \sum_{i=1}^{n} (y_i - a - b x_i) = 0 \]

\[ \frac{\partial S}{\partial b} = -2 \sum_{i=1}^{n} x_i (y_i - a - b x_i) = 0 \]

상수 \(-2\) 를 제거하면 정규방정식(normal equations):

\[ \sum_{i=1}^{n} y_i = n a + b \sum_{i=1}^{n} x_i \tag{1} \]

\[ \sum_{i=1}^{n} x_i y_i = a \sum_{i=1}^{n} x_i + b \sum_{i=1}^{n} x_i^2 \tag{2} \]

4.3 닫힌 해의 유도

식 (1)을 \(n\) 으로 나누면:

\[ \bar{y} = a + b \bar{x} \quad \Rightarrow \quad a = \bar{y} - b \bar{x} \tag{3} \]

이는 이미 중요한 결과다: 회귀직선은 반드시 점 \((\bar{x}, \bar{y})\) 를 지난다. 이는 기울기 \(b\) 가 얼마이든 관계없이 성립한다.

식 (3)을 (2)에 대입:

\[ \sum x_i y_i = (\bar{y} - b\bar{x}) \sum x_i + b \sum x_i^2 \]

\[ \sum x_i y_i - \bar{y} \sum x_i = b\!\left(\sum x_i^2 - \bar{x} \sum x_i\right) \]

\(\sum x_i = n\bar{x}\) 를 사용하면:

\[ \sum x_i y_i - n \bar{x} \bar{y} = b\!\left(\sum x_i^2 - n\bar{x}^2\right) \]

양변을 \(S_{xx}, S_{xy}\) 표기로 정리:

\[ S_{xy} = b \cdot S_{xx} \]

여기서:

\[ S_{xx} = \sum_{i=1}^{n} (x_i - \bar{x})^2 = \sum x_i^2 - n\bar{x}^2 \]

\[ S_{xy} = \sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y}) = \sum x_i y_i - n \bar{x} \bar{y} \]

따라서:

\[ \boxed{\hat{b} = \frac{S_{xy}}{S_{xx}}, \quad \hat{a} = \bar{y} - \hat{b} \bar{x}} \]

\(S_{xx} > 0\) 이 필요하다. 이는 \(x\) 값들이 모두 같지 않다 는 조건과 동치이다. 모든 \(x_i\) 가 같으면 기울기를 정의할 수 없다 — 기하학적으로 수직선이 되기 때문이다.

4.4 2계 조건 (최소임을 확인)

Hessian 행렬:

\[ \mathbf{H} = \begin{pmatrix} 2n & 2\sum x_i \\ 2\sum x_i & 2\sum x_i^2 \end{pmatrix} \]

대각 원소 \(2n > 0\), 행렬식:

\[ 4 n \sum x_i^2 - 4 \left(\sum x_i\right)^2 = 4 n \sum (x_i - \bar{x})^2 = 4 n S_{xx} > 0 \]

양의 정부호(positive definite)이므로 \(S\) 는 엄밀 볼록, \((\hat{a}, \hat{b})\) 는 유일한 전역 최솟값.


5 유도 2: 선형대수 (행렬 형태)

5.1 행렬 표기

관측 벡터와 설계행렬을 정의한다:

\[ \mathbf{y} = \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{pmatrix}, \quad \mathbf{X} = \begin{pmatrix} 1 & x_1 \\ 1 & x_2 \\ \vdots & \vdots \\ 1 & x_n \end{pmatrix}, \quad \boldsymbol{\beta} = \begin{pmatrix} a \\ b \end{pmatrix} \]

목적함수는:

\[ S(\boldsymbol{\beta}) = \|\mathbf{y} - \mathbf{X}\boldsymbol{\beta}\|_2^2 = (\mathbf{y} - \mathbf{X}\boldsymbol{\beta})^\top (\mathbf{y} - \mathbf{X}\boldsymbol{\beta}) \]

5.2 벡터 미분

\[ \nabla_{\boldsymbol{\beta}} S = -2 \mathbf{X}^\top (\mathbf{y} - \mathbf{X}\boldsymbol{\beta}) = \mathbf{0} \]

이를 정리하면 행렬 형태 정규방정식:

\[ \mathbf{X}^\top \mathbf{X} \boldsymbol{\beta} = \mathbf{X}^\top \mathbf{y} \]

\(\mathbf{X}^\top \mathbf{X}\) 가 가역이면:

\[ \boxed{\hat{\boldsymbol{\beta}} = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}} \]

이 역행렬이 존재하려면 \(\mathbf{X}\) 의 열들이 선형독립이어야 한다. 직관적으로: 설계행렬의 열은 상수 열 \(\mathbf{1}\)\(x\) 값 열이다. 만약 모든 \(x_i\) 가 같다면 \(x\) 열이 상수 열의 상수배가 되어 두 열이 같은 방향을 가리킨다 — 두 방향이 합쳐지면 하나의 방향만 남으므로 절편과 기울기를 동시에 결정할 수 없다. 이것이 ’ \(x\) 에 변동이 있어야 회귀가 가능하다’의 수학적 근거이다.

5.3 스칼라 해와의 동치 확인

\(\mathbf{X}^\top \mathbf{X}\) 를 전개하면:

\[ \mathbf{X}^\top \mathbf{X} = \begin{pmatrix} n & \sum x_i \\ \sum x_i & \sum x_i^2 \end{pmatrix} \]

\[ \mathbf{X}^\top \mathbf{y} = \begin{pmatrix} \sum y_i \\ \sum x_i y_i \end{pmatrix} \]

\(2 \times 2\) 역행렬:

\[ (\mathbf{X}^\top \mathbf{X})^{-1} = \frac{1}{n S_{xx}} \begin{pmatrix} \sum x_i^2 & -\sum x_i \\ -\sum x_i & n \end{pmatrix} \]

곱셈을 전개하면 정확히 \(\hat{a} = \bar{y} - \hat{b}\bar{x}, \hat{b} = S_{xy}/S_{xx}\) 가 나온다.

5.4 일반화의 이점

행렬 형태는 변수가 몇 개이든 같은 공식으로 작동한다:

\[ \hat{\boldsymbol{\beta}} = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y} \]

\(\mathbf{X}\)\(n \times 1\) (절편 없음), \(n \times 2\) (SLR), \(n \times p\) (다중회귀) 이든 무관하다. 스칼라 유도는 SLR 에만 국한되지만, 행렬 유도는 모든 선형 모형의 통합 해법이다.


6 유도 3: 기하학 (직교 투영)

6.1 열공간과 투영

\(\mathbf{X}\)열공간(column space)은 \(\mathbf{X}\) 의 열벡터들로 생성되는 \(\mathbb{R}^n\) 의 부분공간이다. SLR 에서는 \(\text{Col}(\mathbf{X}) = \text{span}(\mathbf{1}, \mathbf{x})\), 차원 2.

이 부분공간에 속하는 모든 벡터는 \(\mathbf{X}\boldsymbol{\beta}\) 형태이다. 최소제곱 문제는:

\(\mathbf{y}\)가장 가까운 \(\text{Col}(\mathbf{X})\) 의 원소를 찾아라.

유클리드 공간에서 부분공간에 가장 가까운 점은 직교 투영이다.

6.2 직교성 조건

잔차 \(\mathbf{e} = \mathbf{y} - \mathbf{X}\hat{\boldsymbol{\beta}}\)\(\text{Col}(\mathbf{X})\)직교해야 한다:

\[ \mathbf{X}^\top \mathbf{e} = \mathbf{0} \]

\[ \mathbf{X}^\top (\mathbf{y} - \mathbf{X}\hat{\boldsymbol{\beta}}) = \mathbf{0} \]

이것이 정규방정식이다. 미분도, 편미분도 사용하지 않고 기하학적 직교성만으로 같은 결과를 얻는다.

왜 직교가 최소 거리를 보장하는가? 유클리드 기하에서, 외부 점에서 평면까지의 최단 경로는 수선(perpendicular)이다. 잔차 벡터 \(\mathbf{e}\) 가 열공간에 수직이 아니라면, 열공간 방향의 성분이 남아 있어 그 방향으로 \(\hat{\mathbf{y}}\) 를 조금 움직이면 \(\|\mathbf{e}\|\) 를 더 줄일 수 있다. 수직이면 이런 개선 여지가 없다 — 이것이 피타고라스 정리의 최적성 버전이다.

6.3 사영행렬 (Hat Matrix)

예측값:

\[ \hat{\mathbf{y}} = \mathbf{X}\hat{\boldsymbol{\beta}} = \mathbf{X}(\mathbf{X}^\top\mathbf{X})^{-1}\mathbf{X}^\top \mathbf{y} = \mathbf{H}\mathbf{y} \]

\(\mathbf{H} = \mathbf{X}(\mathbf{X}^\top\mathbf{X})^{-1}\mathbf{X}^\top\)사영행렬(projection matrix, hat matrix). 이 행렬은 세 가지 성질을 가진다:

  1. 대칭: \(\mathbf{H}^\top = \mathbf{H}\)
  2. 멱등: \(\mathbf{H}^2 = \mathbf{H}\) (한 번 투영한 것을 다시 투영해도 같다)

멱등성( \(\mathbf{H}^2 = \mathbf{H}\) )의 의미: 사영을 두 번 해도 한 번 한 것과 같다. 점을 평면 위에 내려놓으면 이미 평면 위에 있으므로, 다시 내려놓아도 움직이지 않는다. 이 성질이 ’사영(projection)’이라는 이름의 이유이다.

  1. \(\text{Col}(\mathbf{X})\) 에 투영: \(\mathbf{H}\mathbf{X} = \mathbf{X}\)

잔차 생성행렬 \(\mathbf{M} = \mathbf{I} - \mathbf{H}\) 도 같은 성질을 가지며, \(\mathbf{M}\mathbf{y} = \mathbf{y} - \hat{\mathbf{y}} = \mathbf{e}\) 를 생성한다.

\(\mathbf{H}\)\(\mathbf{M}\) 은 상호 직교 보완(orthogonal complement) 관계:

\[ \mathbf{H} + \mathbf{M} = \mathbf{I}, \quad \mathbf{H}\mathbf{M} = \mathbf{0} \]

이 분해가 131 포스트의 Cochran 정리와 제곱합 분해의 기초이다.

6.4 기하학적 유도가 주는 통찰

미적분 유도는 “미분 = 0” 이라는 공식적 절차이지만, 기하학 유도는 해가 유일하게 존재하는 이유 를 직관적으로 보여준다. 부분공간에 가장 가까운 점은 항상 유일하고, 그것은 직교 투영이라는 사실은 유한차원 힐베르트 공간에서 기본 정리이다.

또한 이 관점에서 OLS 는 “가장 좋은 선형 근사” 라는 자연스러운 의미를 획득한다. 통계적 해석(BLUE, 정규 오차 하의 MLE)은 이 기하학적 사실의 이차적 해석이며, 최소제곱 자체는 분포 가정 없이 독립적으로 존재한다.


7 해의 대수적 성질

다음 성질들은 모두 분포 가정 없이 성립하며, 순전히 최소제곱 최적화의 1계 조건에서 나온다.

7.1 성질 1: 잔차의 합은 0

정규방정식의 첫 식 \(\sum (y_i - \hat{a} - \hat{b} x_i) = 0\) 에서:

\[ \sum_{i=1}^{n} e_i = 0 \]

의미: 회귀직선은 잔차를 평균적으로 0이 되도록 배치한다. 이는 절편을 포함한 모든 모형에서 성립하며, 절편 없는 모형(\(y = bx\))에서는 일반적으로 성립하지 않는다.

7.2 성질 2: 잔차와 설명변수의 내적 0

정규방정식의 두 번째 식:

\[ \sum_{i=1}^{n} x_i e_i = 0 \]

의미: 잔차는 \(x\) 와 선형 상관이 0이다. 즉, 잔차에 \(x\) 의 선형 정보가 남아 있지 않다. 이것이 “최적 선형 적합” 의 의미다. 비선형 정보는 여전히 남을 수 있다.

7.3 성질 3: 회귀직선은 평균점 통과

\(\hat{a} = \bar{y} - \hat{b}\bar{x}\) 에서 바로:

\[ \bar{y} = \hat{a} + \hat{b}\bar{x} \]

즉, \((\bar{x}, \bar{y})\) 는 회귀직선 위에 있다. 이는 데이터의 “중심” 을 회귀선이 지난다는 직관과 일치한다.

7.4 성질 4: 예측값의 평균 = 관측값의 평균

\(\sum e_i = 0\) 이므로 \(\sum \hat{y}_i = \sum y_i\), 따라서 \(\bar{\hat{y}} = \bar{y}\). 예측값들의 평균은 관측값들의 평균과 같다.

7.5 성질 5: 제곱합 분해

잔차가 열공간과 직교이므로 (피타고라스):

\[ \|\mathbf{y} - \bar{y}\mathbf{1}\|^2 = \|\hat{\mathbf{y}} - \bar{y}\mathbf{1}\|^2 + \|\mathbf{e}\|^2 \]

\[ \mathrm{SST} = \mathrm{SSR} + \mathrm{SSE} \]

131 포스트에서 다룬 이 분해는 분포 가정 없는 순수 기하학이다.

7.6 성질 6: \(R^2\) 의 정의

\[ R^2 = 1 - \frac{\mathrm{SSE}}{\mathrm{SST}} = \frac{\mathrm{SSR}}{\mathrm{SST}} \]

\(0 \leq R^2 \leq 1\) 이며, 이 부등식은 피타고라스에서 바로 나온다. 확률론이 전혀 필요 없다.

분포 가정 없이 얻는 것과 못 얻는 것
얻는 것 (순수 수학) 못 얻는 것 (분포 필요)
점추정 \(\hat\beta\) 표준오차
예측값 \(\hat{y}\) 신뢰구간, 예측구간
잔차 \(e_i\) \(t\), \(F\), \(\chi^2\) 검정
\(R^2\) p-value
SST 분해 BLUE, UMVUE 주장
기하학적 직교성 최대가능도 해석

OLS 는 “확률적 추정” 이 아니라 결정론적 최적화 이다. 확률 언어는 이 결과를 재해석 할 때 도입된다.


8 해의 유일성 조건

8.1 스칼라 형태

\(\hat{b} = S_{xy}/S_{xx}\) 의 유일성은 \(S_{xx} > 0\) 에 달려 있다.

\[ S_{xx} = 0 \iff x_1 = x_2 = \cdots = x_n \]

즉, 모든 \(x_i\) 가 같으면 해가 유일하지 않다. 기하학적으로: 수직선 \(x = \bar{x}\) 위에 점들이 쌓여 있을 때, 어떤 기울기의 직선도 같은 오차를 낸다.

8.2 행렬 형태

\(\hat{\boldsymbol{\beta}} = (\mathbf{X}^\top\mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}\)\(\mathbf{X}^\top\mathbf{X}\)가역해야 한다. 이는 \(\mathbf{X}\)전열 랭크(full column rank)인 것과 동치이다.

다중회귀에서는 이 조건이 “설명변수들이 선형 독립” 과 동치이다. 완전 다중공선성 (perfect multicollinearity)이 있으면 \(\mathbf{X}^\top\mathbf{X}\) 가 비가역이 되어 유일한 해가 없다.

8.3 준-유일성: 최소 노름 해

\(\mathbf{X}\) 가 랭크 부족일 때도 해 집합은 존재한다(비가역이 해 없음을 뜻하지 않음). 무한히 많은 해 중 노름이 가장 작은 해는 유일하며, 이는 Moore-Penrose 유사역행렬 \(\mathbf{X}^+\) 를 통해 표현된다:

\[ \hat{\boldsymbol{\beta}} = \mathbf{X}^+ \mathbf{y} \]

SLR 에서는 \(x\) 값이 모두 같지 않으면 이 문제가 생기지 않지만, 다중회귀와 고차원 통계학 에서 필수 개념이다.


9 수치적 고려사항

9.1 정규방정식을 직접 풀면 안 되는 이유

\[ \hat{\boldsymbol{\beta}} = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y} \]

이 공식은 수학적으로 정확하지만 수치적으로 불안정하다. 이유:

\[ \kappa(\mathbf{X}^\top\mathbf{X}) = \kappa(\mathbf{X})^2 \]

조건수(condition number)는 행렬이 얼마나 ‘찌그러져’ 있는지를 측정한다. 조건수가 큰 행렬을 역산하면, 입력의 작은 반올림 오차가 출력에서 크게 증폭된다. \(\mathbf{X}^\top\mathbf{X}\) 를 형성하면 조건수가 제곱되므로, 원래 약간 찌그러진 문제가 심하게 찌그러진 문제로 변한다. QR 분해는 \(\mathbf{X}\) 를 직접 분해하여 이 제곱을 피한다.

\(\mathbf{X}^\top\mathbf{X}\) 의 조건수는 \(\mathbf{X}\) 의 조건수의 제곱이다. \(\mathbf{X}\) 의 조건수가 \(10^4\) 이면 \(\mathbf{X}^\top\mathbf{X}\) 의 조건수는 \(10^8\) — 배정밀도 부동소수점의 정밀도 한계에 가까워진다. 역행렬 계산에서 유효숫자가 대량으로 손실될 수 있다.

9.2 QR 분해

수치적으로 안정한 방법은 QR 분해를 사용하는 것이다:

\[ \mathbf{X} = \mathbf{Q}\mathbf{R} \]

여기서 \(\mathbf{Q}\) 는 직교 행렬(\(\mathbf{Q}^\top\mathbf{Q} = \mathbf{I}\)), \(\mathbf{R}\) 은 상삼각행렬이다.

\[ \mathbf{X}^\top\mathbf{X} = \mathbf{R}^\top\mathbf{Q}^\top\mathbf{Q}\mathbf{R} = \mathbf{R}^\top\mathbf{R} \]

\[ \mathbf{R}^\top\mathbf{R}\hat{\boldsymbol{\beta}} = \mathbf{R}^\top\mathbf{Q}^\top\mathbf{y} \]

\(\mathbf{R}\) 이 삼각행렬이므로 역대입(back-substitution)으로 해를 구한다. 조건수 손실이 없다.

numpy.linalg.lstsq, scipy.linalg.lstsq, R 의 lm() 은 모두 내부적으로 QR 을 사용한다.

9.3 SVD

더욱 강건한 방법은 특이값 분해(SVD):

\[ \mathbf{X} = \mathbf{U}\mathbf{\Sigma}\mathbf{V}^\top \]

유사역행렬:

\[ \mathbf{X}^+ = \mathbf{V}\mathbf{\Sigma}^+\mathbf{U}^\top \]

\(\mathbf{X}^+ \mathbf{y}\) 는 랭크 부족 상황에서도 최소 노름 해를 반환한다. 계산 비용은 QR 보다 높지만, 공선성이 심한 데이터에서 안정성이 가장 높다.

손으로 정규방정식을 풀면 안 된다

교육 목적으로는 \((\mathbf{X}^\top\mathbf{X})^{-1}\) 을 명시적으로 쓰지만, 실제 구현에서는 절대 사용하지 않는다. numpy.linalg.inv + 행렬곱 방식은 조건수 문제로 인해 정밀도가 떨어진다. 항상 lstsq 또는 solve 계열을 사용한다.


10 다른 손실 함수와의 비교

제곱 손실 외의 대안을 이해하면 OLS 의 위치를 더 잘 파악할 수 있다.

10.1 L1 (Least Absolute Deviations, LAD)

\[ \min_{a, b} \sum_{i=1}^n |y_i - a - b x_i| \]

  • 장점: 이상치에 강건, 중앙값 모형
  • 단점: 닫힌 해 없음, 선형계획법 필요, 해가 유일하지 않을 수 있음
  • 통계적 해석: 오차가 라플라스 분포일 때의 MLE
  • 수단: quantile regression 의 중앙값(50% 분위수) 버전

10.2 Huber 손실

\[ \rho(r) = \begin{cases} r^2/2 & |r| \leq k \\ k|r| - k^2/2 & |r| > k \end{cases} \]

작은 잔차는 L2, 큰 잔차는 L1. 미분 가능하면서 이상치에 강건. 현대 강건 통계학의 기본 도구.

10.3 기하학적 거리 (Total Least Squares)

\[ \min \sum_i d((x_i, y_i), \text{직선})^2 \]

점에서 직선까지의 수직 거리를 최소화한다. \(y\) 방향이 아닌 \((x, y)\) 평면에서의 거리. \(x\) 도 측정오차를 가질 때 적합하다. 주성분분석(PCA)과 깊이 연관된다.

10.4 정규화된 손실

\[ \min_{\boldsymbol{\beta}} \|\mathbf{y} - \mathbf{X}\boldsymbol{\beta}\|^2 + \lambda \|\boldsymbol{\beta}\|_2^2 \quad (\text{Ridge}) \]

\[ \min_{\boldsymbol{\beta}} \|\mathbf{y} - \mathbf{X}\boldsymbol{\beta}\|^2 + \lambda \|\boldsymbol{\beta}\|_1 \quad (\text{LASSO}) \]

고차원에서 계수에 제약을 추가. Ridge 는 닫힌 해, LASSO 는 볼록 최적화.

“최소제곱” 은 단일 알고리즘이 아니다

현대 통계학·머신러닝에서 “최소제곱” 은 OLS, WLS, GLS, Ridge, LASSO, Elastic Net, Robust regression, Total Least Squares 등을 포괄하는 가족(family) 이다. §11.3.1 의 OLS 는 이 가족의 원점이자 특수 경우다.

어떤 변형을 선택할 것인가는 데이터의 성질, 목적(예측/추론/해석), 계산 자원에 달려 있다. “OLS 가 기본값” 이라는 관행을 기계적으로 따르기 전에, 각 대안의 전제를 검토하는 습관이 필요하다.


11 코드 예시

11.1 Step 1: 세 가지 경로로 같은 해 확인

import numpy as np

np.random.seed(20260406)
n = 30
x = np.linspace(0, 10, n) + np.random.normal(0, 0.2, n)
y = 1.5 + 0.7 * x + np.random.normal(0, 1.0, n)

# ─── 경로 1: 스칼라 공식 ───
x_bar, y_bar = x.mean(), y.mean()
Sxx = np.sum((x - x_bar) ** 2)
Sxy = np.sum((x - x_bar) * (y - y_bar))
b1_scalar = Sxy / Sxx
a1_scalar = y_bar - b1_scalar * x_bar
print(f"[스칼라]  a = {a1_scalar:.6f}, b = {b1_scalar:.6f}")

# ─── 경로 2: 정규방정식 (행렬) ───
X = np.column_stack([np.ones(n), x])
XtX = X.T @ X
Xty = X.T @ y
beta_matrix = np.linalg.solve(XtX, Xty)  # inv 대신 solve — 수치 안정
print(f"[행렬]    a = {beta_matrix[0]:.6f}, b = {beta_matrix[1]:.6f}")

# ─── 경로 3: QR 분해 (수치적으로 가장 안정) ───
Q, R = np.linalg.qr(X)
beta_qr = np.linalg.solve(R, Q.T @ y)
print(f"[QR]      a = {beta_qr[0]:.6f}, b = {beta_qr[1]:.6f}")

# ─── 경로 4: lstsq (SVD 기반) ───
beta_lstsq, *_ = np.linalg.lstsq(X, y, rcond=None)
print(f"[lstsq]   a = {beta_lstsq[0]:.6f}, b = {beta_lstsq[1]:.6f}")

# 네 경로 모두 거의 같은 결과

11.2 Step 2: 대수적 성질 검증

# 앞 코드의 변수를 계속 사용
a_hat, b_hat = beta_lstsq
y_hat = a_hat + b_hat * x
residuals = y - y_hat

# 성질 1: 잔차의 합은 0
print(f"sum(e)         = {residuals.sum():.2e}")   # 0 에 매우 가까움

# 성질 2: 잔차와 x 의 내적 0
print(f"sum(x * e)     = {(x * residuals).sum():.2e}")

# 성질 3: 회귀직선이 평균점 통과
print(f"a + b*x_bar    = {a_hat + b_hat * x_bar:.6f}")
print(f"y_bar          = {y_bar:.6f}")

# 성질 4: 예측값 평균 = 관측값 평균
print(f"mean(y_hat)    = {y_hat.mean():.6f}")
print(f"mean(y)        = {y.mean():.6f}")

# 성질 5: 제곱합 분해
SST = np.sum((y - y_bar) ** 2)
SSR = np.sum((y_hat - y_bar) ** 2)
SSE = np.sum(residuals ** 2)
print(f"\nSST = {SST:.4f}")
print(f"SSR = {SSR:.4f}")
print(f"SSE = {SSE:.4f}")
print(f"SSR + SSE       = {SSR + SSE:.4f}  (= SST?)")

# 성질 6: R²
R2 = 1 - SSE / SST
print(f"R^2 = {R2:.4f}")

11.3 Step 3: 사영행렬과 직교 투영 시각화

import numpy as np

X = np.column_stack([np.ones(n), x])
H = X @ np.linalg.inv(X.T @ X) @ X.T   # Hat matrix
M = np.eye(n) - H                       # Residual maker

# 멱등성 확인: H² = H
print(f"|H² - H|_F  = {np.linalg.norm(H @ H - H):.2e}")
# 대칭성: H^T = H
print(f"|H^T - H|_F = {np.linalg.norm(H.T - H):.2e}")
# H + M = I
print(f"|H + M - I|_F = {np.linalg.norm(H + M - np.eye(n)):.2e}")
# H * M = 0
print(f"|H·M|_F     = {np.linalg.norm(H @ M):.2e}")

# 대각 원소 (레버리지) 확인
leverages = np.diag(H)
print(f"\nmean(h_ii) = {leverages.mean():.4f}  (이론값 = p/n = {2/n:.4f})")
print(f"max(h_ii)  = {leverages.max():.4f}")
print(f"sum(h_ii)  = {leverages.sum():.4f}  (= rank = 2)")

11.4 Step 4: L1 회귀와 비교

from scipy.optimize import linprog
import numpy as np

# L1 회귀를 선형계획법으로 풀기
# minimize sum(u_i + v_i)
# s.t.    y_i - a - b*x_i = u_i - v_i,  u_i, v_i >= 0
# 변수: [a, b, u_1, ..., u_n, v_1, ..., v_n]
c = np.concatenate([[0, 0], np.ones(n), np.ones(n)])
A_eq = np.zeros((n, 2 + 2*n))
for i in range(n):
    A_eq[i, 0] = 1           # a
    A_eq[i, 1] = x[i]        # b
    A_eq[i, 2 + i] = -1      # u_i
    A_eq[i, 2 + n + i] = 1   # v_i
b_eq = y
bounds = [(None, None), (None, None)] + [(0, None)] * (2 * n)

result = linprog(c, A_eq=A_eq, b_eq=b_eq, bounds=bounds, method="highs")
a_l1, b_l1 = result.x[0], result.x[1]

print(f"L2 (OLS): a = {a_hat:.4f}, b = {b_hat:.4f}")
print(f"L1 (LAD): a = {a_l1:.4f},  b = {b_l1:.4f}")

# 이상치 하나 추가 후 재적합 — L1 의 강건성 확인
y_outlier = y.copy()
y_outlier[5] += 20  # 큰 이상치

# OLS 재적합
X_full = np.column_stack([np.ones(n), x])
beta_ols_out = np.linalg.lstsq(X_full, y_outlier, rcond=None)[0]

# LAD 재적합
b_eq_out = y_outlier
result_out = linprog(c, A_eq=A_eq, b_eq=b_eq_out, bounds=bounds, method="highs")
a_l1_out, b_l1_out = result_out.x[0], result_out.x[1]

print(f"\n이상치 추가 후:")
print(f"L2 (OLS): a = {beta_ols_out[0]:.4f}, b = {beta_ols_out[1]:.4f} — 크게 흔들림")
print(f"L1 (LAD): a = {a_l1_out:.4f}, b = {a_l1_out:.4f} — 안정")

12 핵심 정리

관점 핵심
문제 정의 \((x_i, y_i)\) 점들에 직선 적합 — 분포 가정 없음
손실 선택 L2 (제곱) — 미분 가능, 유클리드, 평균, 볼록
스칼라 해 \(\hat{b} = S_{xy}/S_{xx}\), \(\hat{a} = \bar{y} - \hat{b}\bar{x}\)
행렬 해 \(\hat{\boldsymbol{\beta}} = (\mathbf{X}^\top\mathbf{X})^{-1}\mathbf{X}^\top\mathbf{y}\)
기하학 \(\mathbf{y}\)\(\text{Col}(\mathbf{X})\) 직교 투영
유일성 \(S_{xx} > 0\) 또는 \(\mathbf{X}\) 전열 랭크
성질 (분포 무관) \(\sum e_i = 0\), \(\sum x_i e_i = 0\), 평균점 통과, SST = SSR + SSE
수치 안정 QR 또는 SVD — 정규방정식 직접 금지
대안 손실 L1 (LAD), Huber, TLS, Ridge, LASSO
§11.3.1 의 위치

Casella 가 이 절에 “A Mathematical Solution” 이라는 제목을 붙인 이유는 명확하다: 최소제곱 자체는 통계학이 아니다. 이는 Legendre(1805)와 Gauss(1809)가 천문학과 측지학에서 개발한 순수 최적화 방법이며, 후에 통계적 해석이 덧붙여진 것이다.

이 관점을 이해하면 회귀분석 전체가 명확해진다:

  1. §11.3.1 (이 포스트): 최소제곱은 무엇인가 — 순수 수학
  2. §11.3.2: 최소제곱 해의 성질 — 여전히 분포 최소한
  3. §11.3.3: 분포 가정 추가 — 오차의 정규성
  4. §11.3.4: 추론 — t, F, 신뢰구간
  5. §11.3.5: 예측 구간
  6. §11.3.6: 동시 추론, 신뢰밴드

분포 가정은 점점 더해지는 층이다. 가장 기본인 §11.3.1 을 이 위에서 구분하여 이해하는 것이 회귀를 깊이 있게 다루는 출발점이다.


13 관련 주제

선행 지식

후속 주제

관련 개념

Subscribe

Enjoy this blog? Get notified of new posts by email: