# 정상방정식(Normal Equation)의 유도

#### 최소제곱법과 곡선 근사의 기본 개념

오차를 최소화하는 곡선(또는 직선)을 찾는 문제에서 가장 많이 사용되는 방법이 최소제곱법이다. 이는 측정된 데이터가 있다고 할 때, 그 데이터가 어떤 함수적 관계로 표현된다고 가정하고, 그 함수가 실제 측정값들과 최대한 가깝도록 만드는 문제로 귀결된다. 예를 들어 하나의 독립변수와 하나의 종속변수가 있을 때, 독립변수를 $x$라 하고 종속변수를 $y$라 하면, 우리는 $n$개의 측정데이터 점

$$
(x\_1, y\_1),,(x\_2, y\_2),,\dots,,(x\_n, y\_n)
$$

을 가지고 특정 모형 함수

$$
f(x; \theta)
$$

를 적절한 파라미터(또는 계수) $\theta$에 대해 적합시킨다. 이때 대표적인 예가 직선근사 모형

$$
f(x; a, b) = ax + b
$$

이다. 더 일반적으로는 다항식 모형 등 다양한 형태가 가능하다. 최소제곱법의 핵심은 예측값 $f(x\_i; \theta)$와 실제측정값 $y\_i$ 사이의 오차 제곱합(Sum of Squared Errors, SSE)을 최소화하는 문제로 정리된다.

#### 일반화된 선형모형과 벡터표현

직선근사를 예로 들면 계수는 $a, b$이지만, 이를 조금 더 일반화하여 모형을

$$
f(x) = \beta\_0 + \beta\_1 x + \beta\_2 x^2 + \dots + \beta\_m x^m
$$

처럼 다항식 형태로 확장할 수 있다. 이를 $m$차 다항식이라고 할 때, 측정데이터 $n$개에 대해 모든 예측값을 정리하려면 벡터와 행렬을 사용하는 편이 훨씬 간단해진다.

파라미터(계수)들을

$$
\mathbf{\beta} =  \begin{pmatrix} \beta\_0 \ \beta\_1 \ \beta\_2 \ \vdots \ \beta\_m \end{pmatrix}
$$

라고 하고, 독립변수 $x\_i$에 대한 각 항을 모은 벡터를

$$
\mathbf{x}(x\_i) =  \begin{pmatrix} 1 \ x\_i \ x\_i^2 \ \vdots \ x\_i^m \end{pmatrix}
$$

라고 정의한다. 그러면 $n$개의 데이터 점에 대해 이를 합친 행렬은

$$
\mathbf{X} =  \begin{pmatrix} - & \mathbf{x}(x\_1)^T & - \ - & \mathbf{x}(x\_2)^T & - \  & \vdots &  \ - & \mathbf{x}(x\_n)^T & - \end{pmatrix}
$$

가 된다. 실제 측정값들도 벡터로 표시하면

$$
\mathbf{y} =  \begin{pmatrix} y\_1 \ y\_2 \ \vdots \ y\_n \end{pmatrix}
$$

이 된다. 그러면 예측값들을 벡터로 묶은 것은

$$
\mathbf{\hat{y}} = \mathbf{X}\mathbf{\beta}
$$

가 된다.

이때 최소제곱법에서는 측정값 $\mathbf{y}$와 예측값 $\mathbf{\hat{y}}$의 오차 벡터

$$
\mathbf{r} = \mathbf{y} - \mathbf{X}\mathbf{\beta}
$$

에 대해 오차 제곱합 $|\mathbf{r}|^2$를 최소화하는 문제를 푼다. 즉

$$
|\mathbf{r}|^2 = |\mathbf{y} - \mathbf{X}\mathbf{\beta}|^2
$$

이 최소가 되어야 한다.

#### 정상방정식의 정의

최소제곱법에서 오차 제곱합을 정의하면, 이를 미분하여 0이 되도록 계수를 구한다. 이 과정을 통해 가장 일반적으로 나타나는 방정식의 형태가 바로 정상방정식(노멀방정식)이다.

정상방정식을 도출하기 위해서는

$$
S(\mathbf{\beta}) = |\mathbf{y} - \mathbf{X}\mathbf{\beta}|^2
$$

를 최소화하는 $\mathbf{\beta}$를 찾으면 된다. 먼저 $S(\mathbf{\beta})$를 구체적으로 적어보면

$$
S(\mathbf{\beta})  = (\mathbf{y} - \mathbf{X}\mathbf{\beta})^T (\mathbf{y} - \mathbf{X}\mathbf{\beta}).
$$

이를 전개하면

$$
S(\mathbf{\beta})  = \mathbf{y}^T \mathbf{y}  - 2,\mathbf{y}^T \mathbf{X}\mathbf{\beta} + \mathbf{\beta}^T \mathbf{X}^T \mathbf{X} \mathbf{\beta}.
$$

이제 $S(\mathbf{\beta})$를 $\mathbf{\beta}$에 대해 편미분한 다음, 그 결과를 0 벡터와 같게 놓으면 최소점을 구할 수 있다. 편미분을 위해서는 행렬미분의 기본공식을 사용한다.

#### 정상방정식의 유도

정확하게 편미분을 살펴보면,

$$
\frac{\partial}{\partial \mathbf{\beta}}  \Big( \mathbf{y}^T \mathbf{y}  - 2,\mathbf{y}^T \mathbf{X}\mathbf{\beta} + \mathbf{\beta}^T \mathbf{X}^T \mathbf{X} \mathbf{\beta} \Big) = \mathbf{0}.
$$

상수항인 $\mathbf{y}^T \mathbf{y}$는 편미분해도 0이고, $-2,\mathbf{y}^T \mathbf{X}\mathbf{\beta}$의 편미분은 $-2,\mathbf{X}^T \mathbf{y}$가 되며(차원을 주의 깊게 살펴보면 벡터 형태로 식이 정리됨), $\mathbf{\beta}^T \mathbf{X}^T \mathbf{X} \mathbf{\beta}$에 대한 편미분은 $2,\mathbf{X}^T \mathbf{X}\mathbf{\beta}$가 된다.

결과적으로,

$$
\mathbf{X}^T \mathbf{y} + 2,\mathbf{X}^T \mathbf{X}\mathbf{\beta} = \mathbf{0}
$$

가 되고, 이를 정리하면

$$
\mathbf{X}^T \mathbf{X}\mathbf{\beta} = \mathbf{X}^T \mathbf{y}.
$$

이 식이 바로 정상방정식이다.

#### 행렬연산 관점에서의 이해

$\mathbf{X}^T \mathbf{X}$와 $\mathbf{X}^T \mathbf{y}$는 각각 $\mathbf{\beta}$를 구하기 위한 핵심적인 항들이다. 만약 $\mathbf{X}^T \mathbf{X}$가 역행렬을 가질 수 있을 정도로 정규(Full Column Rank)라면

$$
\mathbf{\beta} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}
$$

와 같이 직접 구할 수 있다. 이것이 우리가 통상적으로 최소제곱해(LS solution)라고 부르는 해이다.

#### 기하학적 해석

$\mathbf{X}\mathbf{\beta}$는 $\mathbf{X}$가 만드는 열공간(Column Space) 위의 한 벡터이다. $\mathbf{y}$라는 벡터를 $\mathbf{X}$의 열공간 위로 직교사영(Orthogonal Projection)시킨 것이 $\mathbf{X}\mathbf{\beta}$이다. 왜냐하면 $\mathbf{r} = \mathbf{y} - \mathbf{X}\mathbf{\beta}$가 최소가 되려면, 그 잔차 벡터 $\mathbf{r}$가 $\mathbf{X}$의 열공간과 수직이 되어야 하기 때문이다. 즉

$$
\mathbf{X}^T \mathbf{r} = \mathbf{X}^T (\mathbf{y} - \mathbf{X}\mathbf{\beta}) = \mathbf{0}.
$$

이를 다시 쓰면 바로

$$
\mathbf{y} = \mathbf{X}^T \mathbf{X} \mathbf{\beta}
$$

가 되어, 정상방정식의 결과와 동일해진다.

이 관점에서 보면 최소제곱법은 결국 측정데이터의 벡터 $\mathbf{y}$를 $\mathbf{X}$ 행렬의 열공간 위로 올바르게 투영하기 위한 최적의 $\mathbf{\beta}$를 찾는 과정이 된다.

#### 조건수(Condition Number)와 수치적 안정성

$\mathbf{X}^T \mathbf{X}$가 조건수가 크다면(즉 수치적으로 좋지 못한 상태), $(\mathbf{X}^T \mathbf{X})^{-1}$을 직접 구해선 안 되는 상황이 발생할 수도 있다. 이런 경우에는 QR 분해나 SVD(특이값 분해) 같은 안정성이 좋은 방법을 활용하는 것이 일반적이지만, 그럼에도 불구하고 정상방정식은 최소제곱법을 설명할 때 가장 명확하고 단순한 형태로 나타나므로, 기초적인 이론 구조 파악에는 매우 유용하다.

#### 더 높은 차원의 일반화

지금까지 살펴본 과정은 선형모형, 다항모형 등에 국한된 것이 아니라, 행렬 $\mathbf{X}$로 표현될 수 있는 임의의 선형계수 문제에 일반화된다. 예컨대 여러 개의 독립변수를 사용하는 다변량 문제에서도 동일한 방식을 그대로 적용할 수 있으며, 행렬의 크기가 커질 뿐 기본 아이디어는 동일하다.

#### 정칙성(Full Rank) 가정과 해의 존재성

행렬 $\mathbf{X}$가 열벡터들 간에 선형독립성을 지니고 있다고 하면, 즉 $\mathbf{X}$가 full column rank를 갖고 있다면 $\mathbf{X}^T \mathbf{X}$는 정칙(Invertible)하게 된다. 이 경우, 정상방정식

$$
\mathbf{X}^T \mathbf{X}\mathbf{\beta} = \mathbf{X}^T \mathbf{y}
$$

를 만족하는 해 $\mathbf{\beta}$는 유일하며, 그 식은

$$
\mathbf{\beta} = (\mathbf{X}^T \mathbf{X})^{-1}\mathbf{X}^T \mathbf{y}
$$

로 표현된다. 그러나 실제로는 측정 오차나 데이터의 다중공선성(Multicollinearity) 때문에 완전한 독립성이 성립하지 않을 수도 있다. 그 경우 $\mathbf{X}^T \mathbf{X}$가 역행렬을 갖지 못하게 되기도 한다.

#### $\mathbf{X}^T \mathbf{X}$가 정칙이 아닐 때

측정데이터 수 $n$이 모형 차수 $m$보다 작거나, 특정 변수가 서로 매우 강한 상관관계를 가져 열공간에 중복성이 생길 경우, $\mathbf{X}^T \mathbf{X}$는 심각하게 열악한 조건수를 갖거나 역행렬이 존재하지 않을 수 있다. 이때는 정규방정식을 직접 풀어서 $\mathbf{\beta}$를 구하기 어려워지며, 다음과 같은 대안이 활용된다.

QR 분해를 통해 최소제곱해를 구한다.

SVD(특이값 분해)를 통해 유사역(Moore-Penrose 역)을 사용한다. Tikhonov 정규화(릿지 회귀, Ridge Regression) 또는 라쏘(Lasso) 기법 등으로 모형을 안정화한다.

이러한 대안들은 수치적인 안정성 면에서 훨씬 유리하지만, 최소제곱법 이론을 가장 간단한 형태로 설명하는 수단으로서는 정상방정식이 핵심이 된다.

#### 유사역(Moore-Penrose Inverse) 관점

$\mathbf{X}^T \mathbf{X}$가 가역이 아닐 때, 최소제곱 문제

$$
\min\_{\mathbf{\beta}} |\mathbf{y} - \mathbf{X}\mathbf{\beta}|^2
$$

의 해를 찾는 또 다른 관점은 유사역을 사용하는 것이다. $\mathbf{X}^\dagger$가 $\mathbf{X}$의 Moore-Penrose 역행렬이라고 할 때, 최소제곱해는

$$
\mathbf{\beta} = \mathbf{X}^\dagger,\mathbf{y}
$$

로 표현된다. 이때 $\mathbf{X}^\dagger = \mathbf{V}\mathbf{\Sigma}^\dagger \mathbf{U}^T$ (SVD에서 $\mathbf{X} = \mathbf{U}\mathbf{\Sigma}\mathbf{V}^T$)를 통해 계산한다. 만약 $\mathbf{X}^T \mathbf{X}$가 invertible 하면 $\mathbf{X}^\dagger = (\mathbf{X}^T \mathbf{X})^{-1}\mathbf{X}^T$가 되어 정상방정식 해와 동일해진다.

#### 직교사영 행렬과 최소제곱해

측정값 벡터 $\mathbf{y}$를 $\mathbf{X}$의 열공간(Column space)에 투영시킨 벡터가 최소제곱 추정치 $\mathbf{\hat{y}} = \mathbf{X}\mathbf{\beta}$이다.

이에 대응하는 직교사영 행렬을

$$
\mathbf{P} = \mathbf{X}(\mathbf{X}^T \mathbf{X})^{-1}\mathbf{X}^T
$$

라 하면, 이는 $\mathbf{y}$를 열공간으로 투영하는 연산자이므로

$$
\mathbf{\hat{y}} = \mathbf{P}\mathbf{y}
$$

가 성립한다. 행렬 $\mathbf{P}$는 대칭(symmetric)이고 멱등(idempotent)인 특성을 갖는다. 즉

$$
\mathbf{P}^T = \mathbf{P}
$$

와

$$
\mathbf{P}^2 = \mathbf{P}
$$

를 만족한다.

#### 가중 최소제곱법(Weighted Least Squares)

단순한 최소제곱법에서는 모든 오차 항에 동일한 가중을 부여하지만, 실제로는 측정값마다 신뢰도가 다르거나 오차 분산이 달라질 수 있다. 이를 반영하기 위해 일반화된 형태로

$$
\min\_{\mathbf{\beta}},(\mathbf{y} - \mathbf{X}\mathbf{\beta})^T,\mathbf{W},(\mathbf{y} - \mathbf{X}\mathbf{\beta})
$$

라는 문제를 고려할 수 있다. 이때 $\mathbf{W}$는 양의 정부호(Positive Definite) 행렬로서, 각 샘플 오차에 대한 가중을 나타낸다. 이를 풀면 정상방정식은

$$
\mathbf{X}^T \mathbf{W} \mathbf{X},\mathbf{\beta} = \mathbf{X}^T \mathbf{W} \mathbf{y}
$$

가 되고, 역행렬이 존재하면

$$
\mathbf{\beta} = (\mathbf{X}^T \mathbf{W} \mathbf{X})^{-1} \mathbf{X}^T \mathbf{W} \mathbf{y}
$$

로 얻어진다.

#### 선형연립방정식으로서의 해석

최소제곱 문제를 다시 선형연립방정식의 관점에서 들여다보면, 일반적인 과잉결정(Overdetermined)계

$$
\mathbf{X}\mathbf{\beta} \approx \mathbf{y}
$$

에 대해 가능한 한 $\mathbf{y}$와 가까운 $\mathbf{X}\mathbf{\beta}$를 찾고자 하는 것이다. 정방행렬인 경우(즉 $n = m$이고 $\mathbf{X}$가 가역이면) 직접 해가 구해지지만, $n$이 더 커서 식의 수가 많아지고(그래서 서로 충돌하는 식이 생길 수 있음), 데이터를 완벽하게 만족하는 해가 존재하지 않게 된다.

이럴 때 최소제곱해라는 것은 식의 수가 많아도 전체적으로 '가장 모순을 작게 하는' 해를 제공한다. 이 직관적 이해가 최소제곱법에서의 정상방정식 도출과 동일한 기하학적 해석으로 이어진다.

#### Python 예시

데이터가 주어졌을 때, 정상방정식을 직접 구현하여 최소제곱해를 구하는 예시이다.

```python
import numpy as np

# 가상의 데이터 예시
X_data = np.array([0, 1, 2, 3, 4, 5], dtype=float)
y_data = np.array([1.0, 2.1, 2.9, 3.7, 5.0, 5.1], dtype=float)

# 디자인 행렬 구성 (1차 모델: y = beta0 + beta1 x)
# 열 1개는 상수항, 열 1개는 x 항
ones = np.ones_like(X_data)
X = np.column_stack((ones, X_data))

# 정상방정식
# beta = (X^T X)^(-1) X^T y
XTX = X.T @ X
XTy = X.T @ y_data
beta = np.linalg.inv(XTX) @ XTy

print("추정된 beta:", beta)
```

최초 몇 개의 관측점에 기반한 단순회귀 문제에서, 식

$$
\begin{align}\mathbf{X}^T\mathbf{X},\mathbf{\beta} = \mathbf{X}^T\mathbf{y} \end{align}
$$

를 풀어서 $\mathbf{\beta}$를 구하고, 그 결과로 얻은 예측식을 모델로 삼게 된다.

#### 정규화(Regularization)의 필요성

$\mathbf{X}^T \mathbf{X}$의 조건수가 크면, 작은 수치 오차가 $\mathbf{\beta}$ 추정치에 큰 영향을 미칠 수 있다. 이를 방지하기 위해, 릿지(Ridge)나 라쏘(Lasso)와 같은 정규화 항을 추가하는 방식이 많이 사용된다. 예를 들어, 릿지 회귀에서는

$$
\min\_{\mathbf{\beta}} \Big(|\mathbf{y} - \mathbf{X}\mathbf{\beta}|^2 + \lambda |\mathbf{\beta}|^2 \Big)
$$

꼴의 문제로 변형된다. 여기서 $\lambda$는 하이퍼파라미터로서 계수 크기를 억제하여 모형이 과적합(Overfitting)되지 않도록 제어하는 역할을 한다. 릿지 회귀에서의 정상방정식은

$$
(\mathbf{X}^T \mathbf{X} + \lambda \mathbf{I}),\mathbf{\beta} = \mathbf{X}^T \mathbf{y}
$$

가 되고, 일반 최소제곱 문제와 달리 $\mathbf{X}^T \mathbf{X} + \lambda \mathbf{I}$는 항상 정칙이 되므로 역행렬이 존재하게 된다.

#### QR 분해와 정상방정식

정상방정식은 이론적으로는 간결하지만, 실제 계산 시 $\mathbf{X}^T \mathbf{X}$를 직접 구성하고 그 역행렬을 구하는 과정이 수치오차를 크게 유발할 수 있다.

이를 극복하기 위한 대표적 방법 중 하나가 QR 분해이다. 행렬 $\mathbf{X}$를 다음과 같이 분해한다고 하자.

$$
\mathbf{X} = \mathbf{Q},\mathbf{R}
$$

여기서 $\mathbf{Q}$는 열벡터들이 서로 직교정규(orthonormal)한 정사각 혹은 직사행렬이고, $\mathbf{R}$은 상삼각행렬(upper triangular matrix)이다.

최소제곱문제

$$
\min\_{\mathbf{\beta}} |\mathbf{y} - \mathbf{X}\mathbf{\beta}|^2
$$

에서 $\mathbf{X} = \mathbf{Q}\mathbf{R}$를 대입하면

$$
\mathbf{y} - \mathbf{Q}\mathbf{R}\mathbf{\beta}
$$

의 노름을 최소화하게 된다. $\mathbf{Q}$가 정규직교 행렬이므로 다음과 같이 변형할 수 있다.

$$
|\mathbf{y} - \mathbf{Q}\mathbf{R}\mathbf{\beta}|^2 = |\mathbf{Q}^T\mathbf{y} - \mathbf{Q}^T\mathbf{Q}\mathbf{R}\mathbf{\beta}|^2 = |\mathbf{Q}^T\mathbf{y} - \mathbf{R}\mathbf{\beta}|^2
$$

결국 $\mathbf{R}\mathbf{\beta}$가 $\mathbf{Q}^T\mathbf{y}$에 근접하도록 만드는 문제이므로, 상삼각인 $\mathbf{R}$에 대한 후진대입(back-substitution) 과정을 통해 $\mathbf{\beta}$를 보다 안정적으로 구할 수 있다.

정상방정식을 통해 $(\mathbf{X}^T \mathbf{X})^{-1}\mathbf{X}^T \mathbf{y}$를 직접 구하는 것보다, $\mathbf{Q}$와 $\mathbf{R}$ 분해를 활용하는 편이 수치적 안정성이 높아, 실제 구현에서는 QR 분해가 즐겨 쓰인다.

#### SVD와 정상방정식

특이값 분해(SVD)를 이용하면 $\mathbf{X}$를

$$
\mathbf{X} = \mathbf{U},\mathbf{\Sigma},\mathbf{V}^T
$$

와 같이 나타낼 수 있다. 여기서 $\mathbf{U}$는 $n\times n$ 직교행렬, $\mathbf{Sigma}$는 대각성분에 특이값(singular values)을 나열한 $n\times m$ 직사각 대각행렬, $\mathbf{V}$는 $m\times m$ 직교행렬이다. 최소제곱해를 SVD를 통해 구하면

$$
\mathbf{\beta} = \mathbf{V},\mathbf{\Sigma}^\dagger,\mathbf{U}^T \mathbf{y}
$$

로 표현된다. 여기서 $\mathbf{\Sigma}^\dagger$는 $\mathbf{\Sigma}$의 Moore-Penrose 역으로, 대각성분에 적절히 역수를 취한 형태이다.

특이값이 매우 작다면(즉 $\mathbf{X}$가 거의 특이(singular)에 가깝다면), 해당 대각성분 역수가 매우 커져 계수 추정에 불안정이 초래된다. 실제로는 이러한 불안정을 완화하기 위해 작은 특이값은 0으로 치환해주는 절단 SVD(Truncated SVD) 혹은 정규화 기법을 적용하는 경우가 많다.

#### 잔차벡터의 차원과 자유도

최소제곱 문제에서 오차벡터(잔차벡터)

$$
\mathbf{r} = \mathbf{y} - \mathbf{\hat{y}} = \mathbf{y} - \mathbf{X}\mathbf{\beta}
$$

의 차원은 $n$이며, $\mathbf{X}$의 열차수가 $m+1$개(또는 $m$개)라면(예: 상수항 포함), 해를 통해 얻어지는 잔차벡터는 $n-m-1$차원의 자유도를 갖게 된다.

이는 통계적 관점에서 모형의 적합도 평가나 신뢰구간 설정에 직결된다. 특히 회귀분석에서 결정계수($R^2$)나 수정결정계수($\bar{R}^2$)를 평가할 때, 잔차제곱합과 자유도를 적절히 고려하게 된다.

#### 다중공선성과 조건수(Condition Number)

정상방정식을 풀 때 핵심이 되는 $\mathbf{X}^T \mathbf{X}$는 그 대각성분들이 변수들 간 상관관계에 따라 민감하게 달라진다.

만약 변수들 사이에 강한 선형종속성이 있으면(다중공선성), $\mathbf{X}^T \mathbf{X}$의 대각성분이 커지거나 특정 특이값이 매우 작아져서, 수치적인 폭발(계수 추정치의 분산이 매우 커짐)이 발생한다.

이러한 문제를 방지하기 위해, 릿지(Ridge)나 라쏘(Lasso)와 같은 정규화, 또는 변수 선별 기법 등을 통해 다중공선성을 완화시키는 것이 중요하다.

#### 증분적(Online) 학습과 정상방정식

빅데이터 환경에서 모든 데이터를 한꺼번에 $\mathbf{X}$ 행렬로 만든 뒤 정상방정식을 푸는 것은 매우 많은 메모리를 요구하거나 계산시간이 비효율적일 수 있다.

이때 Online Gradient Descent, Stochastic Gradient Descent(SGD), Conjugate Gradient(CG)와 같은 점진적 업데이트 방식이 고려된다.

이를 통해 새로운 데이터가 들어올 때마다 적은 계산량으로 계수를 갱신할 수 있으며, QR 분해나 SVD도 부분적(Incremental)으로 업데이트하는 기법이 연구되고 있다.

#### Conjugate Gradient를 통한 정상방정식 해석

대규모 문제에서 정상방정식을 직접 푸는 대신, 다음과 같은 대칭 양의 정부호(SPD) 시스템을 푼다고 볼 수 있다.

$$
\mathbf{X}^T \mathbf{X},\mathbf{\beta} = \mathbf{X}^T \mathbf{y}
$$

에 대하여, Conjugate Gradient(CG) 알고리즘을 적용하면 반복적으로 $\mathbf{\beta}$를 개선할 수 있다. 이 과정은 QR 분해만큼 안정적이지 않을 수 있으나, 대규모 희소(sparse) 행렬 문제에서는 유리한 접근법이 될 수 있다.

#### 잔차와 직교성 조건

최소제곱법에서 얻어진 잔차 벡터 $\mathbf{r}$는, $\mathbf{X}$의 열공간에 직교한다.

즉,

$$
\mathbf{X}^T (\mathbf{y} - \mathbf{X}\mathbf{\beta}) = \mathbf{0}
$$

이 조건이 정상방정식의 근본이며, 이를 통해 회귀선 혹은 회귀 초평면과 데이터가 “가장 가깝다”라는 개념을 기하학적으로 확립할 수 있다.

#### 오차항 분포 가정

일반적인 선형회귀 모델에서 오차항 $e\_i$는 독립적이고 평균이 0, 분산이 $\sigma^2$라고 가정한다. 최소제곱법에서 이 가정은 오차항에 대한 등분산성(homoscedasticity)과 독립성을 전제한다.

하지만 실제 데이터에서는 오차 항에 분산이 시간에 따라 달라지거나(이분산), 특정 구간에서 상관이 존재할 수 있으므로 가중 최소제곱법, 혹은 자기상관을 고려하는 통계모형(예: GLS)을 적용한다.

#### mermaid를 이용한 흐름도

정상방정식 유도 과정을 단순화하여 흐름도를 표현할 수 있다.

{% @mermaid/diagram content="flowchart TB
A((설정)) --> B(("S = ||y - Xβ||^2"))
B --> C((∂S/∂β = 0))
C --> D(("XT(Xβ - y) = 0"))
D --> E((XT X β = XT y))
E --> F(("β = (XT X)^-1 XT y"))" %}

이 흐름도는 $\mathbf{\beta}$를 구하기 위한 전체 과정을 요약한다.

#### 고차원 문제에서의 고려 사항

변수의 개수($m$)가 매우 많고, 데이터의 수($n$)도 큰 상황이라면, 직접 $(\mathbf{X}^T \mathbf{X})^{-1}$을 구하는 것은 비현실적일 수 있다.

이때는 차원축소(PCA, SVD 등), 정규화, 혹은 온라인 알고리즘으로 접근하는 것이 일반적이다.

심지어 $m$이 $n$보다 훨씬 큰 경우(underdetermined system)에는 전통적인 최소제곱해가 무수히 많아질 수도 있고, 이때 추가적인 구조(희소성 등)를 부여해 해를 유일하게 만드는 방법을 모색하게 된다.

#### 고차 다항근사와 일반화

직선근사는 특정 경우지만, 실제 응용에서는 고차 다항근사 모델을 자주 사용한다. 예를 들어

$$
f(x) = \beta\_0 + \beta\_1 x + \beta\_2 x^2 + \dots + \beta\_m x^m
$$

같이 $m$차 다항식을 쓰거나, 이를 넘어 특정 기저함수들을 조합하는 등, 모델에 따라 $\mathbf{X}$ 행렬의 열이 달라진다. 이 방식을 좀 더 넓게 보면, 바탕함수(기저함수) $\phi\_j(x)$를 정하여

$$
f(x) = \sum\_{j=0}^{m} \beta\_j,\phi\_j(x)
$$

와 같이 표현할 수도 있다. 이때 디자인 행렬 $\mathbf{X}$의 $i$번째 행은

$$
\big(\phi\_0(x\_i), \phi\_1(x\_i), \dots, \phi\_m(x\_i)\big)
$$

가 된다. 나머지 정상방정식이나 최소제곱법의 원리는 동일하다.

#### 일반화 선형모형(GLM)과 최소제곱

최소제곱법은 종속변수가 연속형이고 정규분포를 가정하는 전형적인 선형회귀 문제에서 쓰이지만, 일반화 선형모형(Generalized Linear Model)으로 확장하면, 지시함수(Logistic), 지수함수(Poisson) 등 다른 링크 함수를 취한 경우에도 유사한 접근을 취할 수 있다.

단, 로지스틱회귀나 포아송회귀는 목적함수가 비선형 형태로 바뀌므로, 정상방정식을 직접 사용하기보다는 뉴턴-랩슨(Newton-Raphson)나 이터레이티드 가우스-뉴턴(Iteratively Reweighted Least Squares, IRLS) 등을 통해 근사해를 구한다.

그럼에도 불구하고 “오차 제곱합을 최소화한다”는 핵심 사상은 회귀의 기본 아이디어로 이해하기 좋다.

#### 역행렬 없이 해석하는 관점

정상방정식을 가장 단순화해서 표현하면, 잔차 벡터가 열공간에 대해 직교한다는 조건

$$
\mathbf{X}^T (\mathbf{y} - \mathbf{X}\mathbf{\beta}) = \mathbf{0}
$$

와 동일하다고 볼 수 있다. 만약 $\mathbf{X}^T \mathbf{X}$가 정칙이라면 이것을 풀어서

$$
\mathbf{\beta} = (\mathbf{X}^T \mathbf{X})^{-1}\mathbf{X}^T \mathbf{y}
$$

라고 적을 뿐이다.

그러나 실제 코딩에서는 역행렬을 구하기보다는, 선형시스템을 푸는 방식(예: LU 분해, QR 분해, SVD 등)으로 하는 편이 안정적이다. 직접 $(\mathbf{X}^T \mathbf{X})^{-1}$를 계산하는 건 대부분 피한다.

#### 수치해석에서의 메모리 및 연산량

행렬 $\mathbf{X}$의 크기가 $n\times (m+1)$일 때, $\mathbf{X}^T \mathbf{X}$는 $(m+1)\times(m+1)$이 된다. $n$이 매우 크더라도 $m+1$이 상대적으로 작으면, $\mathbf{X}^T \mathbf{X}$ 자체는 작은 크기가 될 수 있다. 이 경우 정상방정식을 푸는 것은 크게 부담스럽지 않을 수 있다.

반면, $m$이 너무 클 경우 $(\mathbf{X}^T \mathbf{X})$의 크기가 크게 되어 역행렬 계산 비용이 많이 든다. $m^3$ 스케일의 연산이 소요될 수 있으므로, 다양한 분해 기법 혹은 샘플링(랜덤화) 방법이 고려된다.

#### 선형독립성이 약해지는 경우

변수(열벡터)가 서로 선형독립성이 약하면, 실제 계산에서는 $(\mathbf{X}^T \mathbf{X})^{-1}$의 대각원소나 특정 특이값(singular value)이 매우 크게 나타날 수 있다.

이는 결과적으로 추정된 계수 $\mathbf{\beta}$에 큰 불확실성이 생긴다는 의미이고, 이를 완화하기 위한 대표적 기법이 아래와 같다.

릿지(Ridge) 정규화

$$
(\mathbf{X}^T \mathbf{X} + \lambda \mathbf{I}),\mathbf{\beta} = \mathbf{X}^T \mathbf{y}
$$

라쏘(Lasso): 규제항이 절댓값 노름(1-norm)을 이용하므로 비선형 최적화 문제로 풀어야 한다.

엘라스틱넷(Elastic Net): 릿지와 라쏘를 결합한 형태로, $|\mathbf{\beta}|^2$와 $|\mathbf{\beta}|^1$ 모두에 대한 페널티를 둔다.

이들은 최소제곱법의 골격은 유지하지만, 해가 안정적이도록 만드는 추가 장치가 있다.

#### 정규방정식에서의 편미분 원리

계수추정이 미분의 관점에서 얼마나 간단한지 확인하기 위해, 다시 편미분 공식을 쓴다. 오차제곱합

$$
S(\mathbf{\beta}) = |\mathbf{y} - \mathbf{X}\mathbf{\beta}|^2
$$

는

$$
(\mathbf{y} - \mathbf{X}\mathbf{\beta})^T(\mathbf{y} - \mathbf{X}\mathbf{\beta}) = \mathbf{y}^T \mathbf{y} - 2,\mathbf{y}^T\mathbf{X}\mathbf{\beta} + \mathbf{\beta}^T \mathbf{X}^T \mathbf{X}\mathbf{\beta}
$$

이므로, $\mathbf{\beta}$에 대해 미분하면

$$
\mathbf{X}^T \mathbf{y} + 2,\mathbf{X}^T \mathbf{X},\mathbf{\beta} = \mathbf{0}
$$

가 된다. 이 단순한 식이 선형회귀의 핵심을 잘 드러낸다.

#### 경사하강(Gradient Descent) 방법

정상방정식을 직접 풀지 않고, 경사하강(Gradient Descent)으로 최소화 문제를 접근할 수도 있다. 오차제곱합

$$
S(\mathbf{\beta}) = |\mathbf{y} - \mathbf{X}\mathbf{\beta}|^2
$$

의 기울기는

$$
\nabla\_{\mathbf{\beta}} S(\mathbf{\beta}) = -2,\mathbf{X}^T (\mathbf{y} - \mathbf{X}\mathbf{\beta})
$$

이므로, $\mathbf{\beta}$ 갱신을

$$
\mathbf{\beta} \leftarrow \mathbf{\beta} - \eta ,\big(-2,\mathbf{X}^T (\mathbf{y} - \mathbf{X}\mathbf{\beta})\big)
$$

형태로 반복한다. $\eta$는 학습률(learning rate)이며, 적절히 조정하여 수렴을 유도한다. SGD(Stochastic Gradient Descent)나 미니배치(Mini-batch) 기법으로 확장할 수 있으며, 대용량 데이터에서 사용하기 좋다.

#### 예시(C++)

C++에서 간단한 직선회귀 문제를 정상방정식으로 푸는 예시:

```c++
#include <iostream>
#include <Eigen/Dense>

int main() {
    // 가상의 데이터
    Eigen::VectorXd x_data(6);
    Eigen::VectorXd y_data(6);
    x_data << 0, 1, 2, 3, 4, 5;
    y_data << 1.0, 2.1, 2.9, 3.7, 5.0, 5.1;

    // 디자인 행렬 (상수항 + x)
    Eigen::MatrixXd X(6, 2);
    X.col(0) = Eigen::VectorXd::Ones(6);
    X.col(1) = x_data;

    // 정상방정식: beta = (X^T X)^{-1} X^T y
    Eigen::MatrixXd XTX = X.transpose() * X;
    Eigen::VectorXd XTy = X.transpose() * y_data;
    Eigen::VectorXd beta = XTX.inverse() * XTy;

    std::cout << "추정된 beta =\n" << beta << std::endl;
    return 0;
}
```

정상방정식을 통해 얻은 해가, 바로 $\mathbf{\beta}$의 추정치가 된다.

변수 개수가 많다면 정규화나 QR/SVD 기법을 사용하는 것이 권장되며, 수치적으로도 안정적이다.

#### 데이터의 잡음과 과적합

데이터가 많이 노이즈를 포함하거나, 모델 차수가 너무 높으면, $\mathbf{\beta}$ 추정치가 과적합을 일으킬 수 있다.

이때는 일반적인 최소제곱해보다 정규화(릿지, 라쏘, 엘라스틱넷 등)를 적용해 계수를 억제하면 더 좋은 일반화 성능을 얻는 경우가 많다.

실제 통계 혹은 머신러닝 상황에서는, 최소제곱해 자체가 최적이라기보다는 하나의 기준점이 되며, 추가적인 페널티나 사전정보를 활용하여 안정적인 해를 구한다.

#### 베이지안 관점과 정상방정식

선형회귀 계수 $\mathbf{\beta}$를 추정할 때, 베이지안 관점을 도입하면 사전분포(prior distribution)와 데이터에 대한 우도(likelihood)를 결합하여 사후분포(posterior distribution)를 구하게 된다.

이때 최소제곱법과 매우 밀접한 형태가 가우시안 사전분포(정규 사전분포)를 사용할 때 나타난다. 오차항이 정규분포라고 가정하고, $\mathbf{\beta}$에 대해서도 정규 사전분포를 부여하면, 사후분포 역시 정규분포가 된다. 이는 결국 릿지(Ridge) 형태의 정규화 회귀와 대응되는 결과로 이어진다.

가우시안 오차분포

$$
p(\mathbf{y} \mid \mathbf{X}, \mathbf{\beta}) = \mathcal{N}(\mathbf{X}\mathbf{\beta},,\sigma^2 \mathbf{I})
$$

와, 가우시안 사전분포

$$
p(\mathbf{\beta}) = \mathcal{N}(\mathbf{0},,\tau^2 \mathbf{I})
$$

를 합치면, 음의 로그-사후분포는

$$
-\log p(\mathbf{\beta} \mid \mathbf{X}, \mathbf{y}) \propto \frac{1}{2\sigma^2} |\mathbf{y} - \mathbf{X}\mathbf{\beta}|^2 + \frac{1}{2\tau^2}|\mathbf{\beta}|^2
$$

와 같은 형태가 된다. 이는 릿지 회귀의 비용함수와 동일해지므로, 정상방정식 역시

$$
(\mathbf{X}^T \mathbf{X} + \lambda \mathbf{I}),\mathbf{\beta} = \mathbf{X}^T \mathbf{y}
$$

$\lambda = \sigma^2 / \tau^2$ 형태로 해석할 수 있다. 이는 베이지안 선형회귀에서 사전분포를 정규로 두었을 때 발생하는 ‘평활화(regularization) 효과’와 일치한다.

#### 다항식 근사에서의 직교다항식 활용

다항식 회귀를 수행할 때, 각 항이 $1, x, x^2, \dots, x^m$인 형태의 디자인 행렬을 쓰면, $\mathbf{X}^T \mathbf{X}$ 내 요소들이 수학적으로 비례하게 되어 수치적 불안정이 발생하기 쉽다.

이를 해결하기 위해 직교다항식(예: 레제르드(Legendre) 다항식, 체비쇼프(Chebyshev) 다항식 등)을 기저함수로 사용하면, $\mathbf{X}^T \mathbf{X}$가 거의 대각에 가까워져(혹은 적어도 대각우세한 형태) 계산 안정성이 향상된다.

결국 최소제곱 문제 자체는 동일하지만, $\mathbf{X}$의 열들이 서로 직교(orthogonal) 혹은 거의 직교하도록 기저를 재정의해 주면, 정상방정식을 풀 때 발생하는 수치적 문제를 많이 완화할 수 있다.

#### 스플라인(Spline) 근사와 최소제곱

고차다항식은 지나치게 구불구불해지는 문제(러닝과정의 불안정, 오버피팅)를 일으킬 수 있으므로, 구간별로 저차다항식을 이어붙이는 스플라인(Spline) 기법이 자주 쓰인다.

자유도가 높은 스플라인 모형 역시, 결론적으로는 ‘스플라인 기저함수’를 열로 갖는 디자인 행렬 $\mathbf{X}$를 만든 뒤,

$$
\min\_{\mathbf{\beta}} |\mathbf{y} - \mathbf{X}\mathbf{\beta}|^2 + \text{(매끄러움 페널티)}
$$

형태로 문제를 정식화하기도 한다. 이때 매끄러움 페널티는 2차 미분 노름 등을 포함하여, 특정 매개변수(스무딩 파라미터)를 통해 모델의 유연성을 제어한다. 정상방정식에 그대로 적용하기보다는, 펜널티항이 추가된 형태(릿지 유사)로 해석할 수 있다.

#### 외부 조건(Constraints)을 포함하는 최소제곱

경계조건이나 특정 계수의 합이 일정해야 하는 제약이 있는 경우, 최소제곱 문제에 선형제약식을 추가하여 라그랑주 승수(Lagrange multiplier) 기법으로 해를 구할 수 있다. 예를 들어,

$$
\mathbf{A},\mathbf{\beta} = \mathbf{b}
$$

라는 제약이 있을 때, 목적함수

$$
|\mathbf{y} - \mathbf{X}\mathbf{\beta}|^2
$$

를 최소화 subject to $\mathbf{A},\mathbf{\beta} = \mathbf{b}$.

이 경우 확장된 정상방정식을 도출하고, 이를 통해 최적해와 라그랑주 승수를 동시에 구한다. 결과는 크게 복잡하지 않으며,

$$
\begin{pmatrix} \mathbf{X}^T \mathbf{X} & \mathbf{A}^T \ \mathbf{A} & \mathbf{0} \end{pmatrix} \begin{pmatrix} \mathbf{\beta} \ \mathbf{\lambda} \end{pmatrix} = \begin{pmatrix} \mathbf{X}^T \mathbf{y} \ \mathbf{b} \end{pmatrix}
$$

같은 형태로 볼 수 있다.

#### 분산분석(ANOVA)와 정상방정식

선형회귀가 추정된 뒤, 모델 적합 정도와 유의성을 평가하는 데에 분산분석(ANOVA) 표가 만들어진다.

이때 최소제곱해를 얻어 잔차벡터 $\mathbf{r}$를 구하면, SSE(잔차제곱합)과 SSR(회귀제곱합) 등이 산출되고, 이를 통해 F-검정이나 $R^2$ 값 등을 계산한다.

정상방정식 자체는 회귀계수를 구하는 과정이지만, 통계에서는 그 결과물을 토대로 가설검정, 신뢰구간 설정, 예측구간 설정 등 다양한 후처리를 수행한다.

#### 허수해(Spurious Solution)와 검증

데이터가 너무 적거나($n < m+1$), 노이즈가 커서 $\mathbf{X}^T \mathbf{X}$가 잘 정의되지 않으면, 정상방정식 해가 불안정하고, 예측력도 떨어질 수 있다.

이러한 상황에서 해가 “실제로는 의미가 없는” 허수해(Spurious Solution)가 될 수 있으며, 과적합에 빠진 모델이 된다. 따라서 모형적합 후에는 통계적 유의성, 교차검증(Cross Validation) 등을 통해 적절성을 항상 확인해야 한다.

#### 로버스트(강건) 회귀

오차분포가 정규분포가 아니거나, 이상치(Outlier)가 존재하는 경우, 단순제곱오차가 민감하게 영향을 받을 수 있다.

이를 보완하기 위해 M-추정(RANSAC, Huber, Bisquare 등) 기법을 사용하면, 잔차제곱합 대신에 잔차의 크기에 따라 다르게 가중을 두거나 절댓값 합 등을 최소화한다. 이 경우 더 이상 정상방정식이 간단히 도출되지 않으며, 반복적 최적화(Iterative Reweighted Least Squares 등)를 수행해야 한다.

#### 스케일링과 전처리

정상방정식을 쓸 때, 독립변수들이 매우 다른 스케일을 가지면 $\mathbf{X}^T \mathbf{X}$의 숫자 범위가 크게 달라져 계산 안정성을 낮춘다.

실무에서는 각 독립변수(컬럼)를 평균 0, 분산 1로 표준화(standardization)하거나, 최소-최대 정규화(min-max scaling) 등을 적용하고 나서 회귀를 수행하는 경우가 많다. 이렇게 하면 다중공선성도 어느 정도 완화되고, 모델 해석이나 최적화가 수월해진다.

#### 편미분의 유일성

최소제곱법에서 편미분을 통해 구해지는 해가 전역최소로 이어질 수 있는 이유는, 목적함수 $|\mathbf{y} - \mathbf{X}\mathbf{\beta}|^2$가 볼록(quadratic form)하기 때문이다.

실제로도 $S(\mathbf{\beta}) = \mathbf{\beta}^T \mathbf{X}^T \mathbf{X}\mathbf{\beta} - 2,\mathbf{y}^T\mathbf{X}\mathbf{\beta} + \mathbf{y}^T\mathbf{y}$ 형태의 2차식(quadratic form)은 볼록함수(convex function)이므로, 편미분이 0이 되는 점이 유일하게 전역최소가 된다.

#### 일반화와 결론의 회피

정상방정식은 선형회귀(혹은 다항회귀)에서 가장 기본이 되는 수치해석적·통계적 원리다. 그 위에 다양한 확장(정규화, 가중치 부여, 제약조건, 비선형 등)이 쌓이며, 각각 실무나 이론 측면에서 중요한 역할을 한다.

그러나 수치적 안정성과 대규모 데이터에 대한 효율성 때문에, 오늘날 회귀분석을 구현할 때 QR 또는 SVD를 사용하거나, 반복적 최적화 기법을 이용하는 사례가 많다.

#### 촐레스키(Cholesky) 분해와 정상방정식

행렬 $\mathbf{X}^T \mathbf{X}$는 보통 대칭(symmetric)이면서 반정부호가 아닌(positive semidefinite) 형태를 갖는다. 열벡터들이 선형독립이라면 정양의 정부호(positive definite)가 되어 역행렬이 존재하게 된다. 이 경우 촐레스키 분해(Cholesky decomposition)를 사용할 수 있다.

촐레스키 분해는 정양의 정부호 행렬 $\mathbf{M}$을

$$
\mathbf{M} = \mathbf{L},\mathbf{L}^T
$$

형태로 나타내는 방법이다. 여기서 $\mathbf{L}$은 하삼각행렬(lower triangular matrix)이다.

정상방정식

$$
\mathbf{X}^T \mathbf{X},\mathbf{\beta} = \mathbf{X}^T \mathbf{y}
$$

에서 $\mathbf{X}^T \mathbf{X}$가 촐레스키 분해 가능하다면

$$
\mathbf{X}^T \mathbf{X} = \mathbf{L},\mathbf{L}^T
$$

이 되고, 다음과 같이 두 단계에 걸쳐 해를 구할 수 있다.

먼저

$$
\mathbf{L},\mathbf{L}^T \mathbf{\beta} = \mathbf{X}^T \mathbf{y}
$$

에서

$$
\mathbf{L},\mathbf{z} = \mathbf{X}^T \mathbf{y}
$$

로 치환하여 $\mathbf{z}$를 풀고, 이어서

$$
\mathbf{L}^T \mathbf{\beta} = \mathbf{z}
$$

를 풀면 최종적으로 $\mathbf{\beta}$를 얻게 된다.

이 방식은 직접 $(\mathbf{X}^T \mathbf{X})^{-1}$를 계산하는 것보다 수치적으로 안정적이고, 연산량도 효율적인 편이다.

#### 재귀적(Recursive) 최소제곱법(RLS)

동적 시계열(signal) 처리나 온라인 학습(online learning) 상황에서는 새로운 데이터가 들어올 때마다 정상방정식을 다시 풀기보다, 이전 해를 재귀적으로 보정하는 기법이 자주 쓰인다. 그것이 재귀적 최소제곱(Recursive Least Squares, RLS) 알고리즘이다.

재귀적 최소제곱에서, 시점 $k$에서의 해를 $\mathbf{\beta}\_k$라 하고, $\mathbf{X}\_k, \mathbf{y}\_k$는 $k$번째 시점까지의 데이터로 구성된 행렬과 벡터라고 하면,

$$
\mathbf{\beta}\_k = (\mathbf{X}\_k^T \mathbf{X}\_k)^{-1} \mathbf{X}\_k^T \mathbf{y}\_k
$$

이다. 새로운 데이터 $(x\_{k+1}, y\_{k+1})$가 들어오면,

$$
\mathbf{X}*{k+1}, \mathbf{y}*{k+1}
$$

를 업데이트하여 $\mathbf{\beta}\_{k+1}$을 직접 구하는 대신,

$$
(\mathbf{X}\_k^T \mathbf{X}\_k)^{-1}
$$

에 대한 쉬운 갱신 공식을 이용해 $\mathbf{\beta}*k$로부터 빠르게 $\mathbf{\beta}*{k+1}$을 추정한다.

이 알고리즘은 적응필터(Adaptive Filter)나, 시간에 따라 변하는 환경에서의 실시간 추정 등에 유용하며, 고전적인 선형회귀 문제에서도 대규모 데이터에 점진적으로 접근할 때 사용된다.

#### 갈레르킨(Ritz-Galerkin) 방법과 정상방정식

유한차원 공간에서 잔차 직교 조건을 이용해 계수를 구한다는 개념은, 선형회귀뿐 아니라 미분방정식의 근사해 구하는 갈레르킨(Galerkin) 기법에도 동일하게 적용된다.

예를 들어 2차 미분방정식을 약화(Weak Form) 형태로 만든 뒤, 특정 기저함수(Shape function)로 전개하여 계수를 찾으면, 그 해는 “잔차가 선택된 부분공간에 대해 직교한다”라는 조건을 만족하게 된다.

이 원리가 정상방정식에서 $\mathbf{X}^T(\mathbf{y} - \mathbf{X}\mathbf{\beta}) = \mathbf{0}$와 동일한 구조를 갖는다. 결국 선형회귀의 정상방정식은, 갈레르킨 방법에서 잔차를 기저함수 공간에 대해 직교시키는 과정과 개념적으로 동일하다.

#### 큰 규모(High-Dimensional) 문제와 사영법(Projection Methods)

변수의 개수 $m$이 매우 많으면(High-D) $\mathbf{X}^T \mathbf{X}$는 $m\times m$ 규모가 되어 직접 역행렬을 다루기 어렵다. 이렇게 큰 문제에서 자주 쓰이는 기법이 사영법(Projection Methods)이다. Conjugate Gradient(CG) 알고리즘, GMRES(Generalized Minimal Residual), BiCGSTAB 등 다양한 반복법은, 공통적으로 $\mathbf{X}^T \mathbf{X},\mathbf{\beta} = \mathbf{X}^T \mathbf{y}$라는 대칭 양의 정부호(SPD) 혹은 일반 선형시스템을 사영(projection) 과정을 통해 근사적으로 푼다.

매 반복(iteration)마다 해 공간( Krylov Subspace 등)을 확장하고, 잔차를 해당 부분공간에 대해 최소화하는 과정을 거쳐 수렴에 도달한다. 이런 방식은 특별히 희소행렬(sparse matrix)이거나 $m$이 크지만 특정 구조적 성질이 있을 때 효과적이다.

#### 희소행렬(Sparse Matrix)에서의 정상방정식

상당히 많은 실제 문제(예: 추천시스템, 신호처리, 컴퓨터비전)에서 $\mathbf{X}$가 희소행렬 형태를 띤다. 이때 $\mathbf{X}^T \mathbf{X}$도 희소도가 유지될 수 있지만, 어떤 경우에는 $\mathbf{X}^T \mathbf{X}$가 밀집(dense) 형태가 되어버리기도 한다.

가능하다면 직접 $\mathbf{X}^T\mathbf{X}$를 구성하지 않고, 반복법을 통해 $\mathbf{X}^T \mathbf{X},\mathbf{\beta}$ 연산이 필요할 때마다 $\mathbf{X}\mathbf{\beta}$와 그것의 전치곱을 계산하여 사용하는 식으로 구현할 수 있다. 이런 방식을 통해 메모리 사용량과 연산량을 줄일 수 있다.

#### 멀티타깃(다중출력) 회귀와 정상방정식

종속변수(출력)가 여러 차원인 경우(예: 벡터값 출력), 각각에 대해 최소제곱회귀를 따로 수행해도 되지만, 행렬 형태로 한꺼번에 표현할 수도 있다.

출력벡터가 아니라 출력행렬 $\mathbf{Y}$를 생각하면,

$$
\mathbf{Y} =  \begin{pmatrix} | & | &  & | \ \mathbf{y}\_1 & \mathbf{y}\_2 & \dots & \mathbf{y}\_r \ | & | &  & | \end{pmatrix}
$$

로 나타낼 수 있다. 각 $\mathbf{y}\_j$는 $n$차원 컬럼벡터이다.

모델은

$$
\mathbf{X}\mathbf{B} \approx \mathbf{Y}
$$

가 되고, 최소제곱 문제는

$$
\min\_{\mathbf{B}} |\mathbf{Y} - \mathbf{X}\mathbf{B}|\_F^2
$$

(프로베니우스 노름을 사용)으로 쓸 수 있다.

정상방정식은

$$
\mathbf{X}^T \mathbf{X},\mathbf{B} = \mathbf{X}^T \mathbf{Y}
$$

가 되고, 만약 $\mathbf{X}^T \mathbf{X}$가 정칙이라면

$$
\mathbf{B} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{Y}.
$$

각 열이 독립적으로

$$
(\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}\_j
$$

를 구한 것과 동일하지만, 행렬 연산으로 묶어서 한 번에 처리할 수도 있다.

#### 병렬화와 대규모 계산

대규모 행렬에 대해 정상방정식을 풀거나, QR/SVD를 수행하려면 병렬 컴퓨팅이 필수적이다.

BLAS, LAPACK, ScaLAPACK, MAGMA 등 수치선형대수 라이브러리는 멀티스레드나 GPU 연산을 지원하므로, $(\mathbf{X}^T \mathbf{X})^{-1}$ 계산, QR 분해, SVD 등을 병렬로 처리하여 속도를 높인다.

분산환경(클러스터)에서도 Spark나 MPI 기반으로, 행렬을 여러 노드에 분산 저장·계산하면서 최소제곱해를 찾을 수 있다. 특히 데이터셋이 매우 클 때는 모든 데이터를 모아서 한 번에 정상방정식을 만드는 게 불가능하므로, 블록 단위 혹은 스트리밍 방식으로 문제를 쪼개어 해결한다.

#### 랜덤화 기법과 스케치(Sketch)

$n$이 매우 큰 경우(데이터 포인트가 수천만, 수억 개 이상), 정상방정식을 직접 세우거나, QR/SVD 분해를 정확하게 계산하는 것도 비현실적일 수 있다.

이때 사용하는 아이디어 중 하나가 랜덤 스케치(random sketch) 기법이다. 원래 $\mathbf{X}$가 $n\times m$이라면, 임의의 스케치 행렬 $\mathbf{S}$를 사용하여

$$
\tilde{\mathbf{X}} = \mathbf{S}\mathbf{X},\quad \tilde{\mathbf{y}} = \mathbf{S}\mathbf{y}
$$

같이 차원을 크게 줄인 뒤($\tilde{n}\ll n$),

$$
(\tilde{\mathbf{X}}^T \tilde{\mathbf{X}}),\tilde{\mathbf{\beta}} = \tilde{\mathbf{X}}^T \tilde{\mathbf{y}}
$$

를 풀어 근사해를 얻는다. $\tilde{\mathbf{\beta}}$가 원래 해 $\mathbf{\beta}$에 가깝도록 적절한 확률적 보장(Johnson–Lindenstrauss Lemma 등)이 주어진다.

이 방식은 정확도 희생이 조금 있지만, 계산비용을 크게 줄여 대규모 문제에 적용할 수 있다.

#### 비선형 최소제곱(Nonlinear Least Squares)과 가우스-뉴턴

정상방정식은 선형(또는 선형화된) 문제에서 등장한다. 만약 모델이

$$
f(x;\mathbf{\beta}) = g\big(x,\beta\_1,\beta\_2,\dots\big)
$$

처럼 비선형이라면, 오차제곱합이

$$
S(\mathbf{\beta}) = \sum\_{i} \big\[y\_i - g(x\_i;\mathbf{\beta})\big]^2
$$

형태가 되어, 간단히 편미분=0으로부터 닫힌해(Closed-form)를 구하기 어려울 수 있다. 이 경우, 테일러 전개를 통한 근사선형화를 반복하여, 각 이터레이션에서 선형화된 문제의 “정상방정식”을 푸는 방식이 바로 가우스-뉴턴(Gauss-Newton) 알고리즘이다.

뉴턴-랩슨(Newton-Raphson) 기법과 유사하나, 헤시안(Hessian)을 근사적으로 취급하여 계산량을 줄인 방식으로 볼 수 있다.

#### 영향력 진단(Influence Analysis)

회귀분석을 수행한 뒤, 데이터 중 일부 점이 해(계수 추정)에 큰 영향을 미치는지 확인하고 싶다면, 레버리지(Leverage)와 쿡의 거리(Cook’s distance) 등의 진단 기법을 사용한다.

레버리지는 직교사영 행렬

$$
\mathbf{P} = \mathbf{X}(\mathbf{X}^T \mathbf{X})^{-1}\mathbf{X}^T
$$

의 대각원소로부터 얻는다. 관측점 $i$에 해당하는 레버리지 $h\_{ii}$가 매우 큰 경우, 그 점이 회귀선(혹은 초평면)을 끌어당기는 세력이 강하다고 볼 수 있다.

이렇게 특정 점이 모델을 왜곡하고 있는지 파악하여, 필요하면 로버스트 회귀나 이상치 처리(Outlier handling) 등을 고려한다.

#### 구간추정과 예측구간

선형회귀에서는 잔차의 분산 추정을 통해, 추정된 계수 $\hat{\mathbf{\beta}}$의 공분산 행렬을

$$
\mathrm{Var}(\hat{\mathbf{\beta}}) = \sigma^2 (\mathbf{X}^T \mathbf{X})^{-1}
$$

꼴로 구한다. 이를 바탕으로 각 계수에 대한 신뢰구간, 혹은 특정 $x\_*$에서의 예측값 $f(x\_*;\hat{\mathbf{\beta}})$에 대한 예측구간을 설정할 수 있다.

비록 이 내용은 통계적 회귀해석에 가깝지만, 수치해석적으로도 $(\mathbf{X}^T \mathbf{X})^{-1}$가 핵심 역할을 수행한다는 점이 중요하다.

#### 무한차원으로의 일반화

정상방정식의 “오차가 잔여공간에 직교한다”라는 개념은 힐베르트 공간(Hilbert space)에서의 직교사영(Orthogonal Projection)과 동일하다.

즉 유한차원의 컬럼스페이스(column space)를 넘어, 무한차원의 함수공간에서 적절한 내부적(inner product)을 정의하여, “잔차를 함수공간의 기저에 대해 직교시키는” 아이디어가 확장될 수 있다.

이는 근사해석이나 스펙트럼 방법, 갈레르킨 방법 등 다양한 함수해석학적 기법에 기반을 두고 있다.

#### 추가 참고: 크라메르(Cramér)-로 정의와 최소분산 추정

베이지안이 아니라 빈도주의(Frequentist) 관점에서 오차가 독립이고 등분산 가우시안이라고 가정하면, 최소제곱추정(MLE 관점)과 BLUE(Best Linear Unbiased Estimator)라는 명제가 성립한다. 이는 Gauss-Markov 정리에 의해, 선형 불편추정 중에서 최소분산을 가진다는 결과로 이어진다.

$\mathrm{Var}(\hat{\mathbf{\beta}}) = \sigma^2 (\mathbf{X}^T \mathbf{X})^{-1}$가 최소라는 사실도, 결국 정상방정식을 통해 얻은 해가 선형 추정량 중 최적이라는 것을 뒷받침한다.

하지만 이 역시 오차 독립성, 등분산성, 선형성 등의 가정 하에서만 엄밀히 성립한다.

#### 커널(Kernel) 기법과 정규방정식

선형회귀를 비선형함수 근사로 확장하는 또 다른 관점은 커널 방법론을 활용하는 것이다. 예를 들어 릿지 회귀에서

$$
\min\_{\mathbf{\beta}} \big(|\mathbf{y} - \mathbf{X}\mathbf{\beta}|^2 + \lambda |\mathbf{\beta}|^2\big)
$$

가 커널 공간으로 확장되면, “입력공간에서의 스칼라곱” 대신 “특징공간(feature space)에서의 스칼라곱”을 커널함수

$$
K(x\_i, x\_j)
$$

로 표현한다.

커널릿지회귀(Kernel Ridge Regression)는

$$
\mathbf{\alpha} = (\mathbf{K} + \lambda \mathbf{I})^{-1}\mathbf{y}
$$

같은 꼴의 해를 갖게 되고, 여기서 $\mathbf{K}$는 커널행렬(Gram matrix)이다.

결국 “정상방정식”에 해당하는

$$
(\mathbf{K} + \lambda \mathbf{I}),\mathbf{\alpha} = \mathbf{y}
$$

를 푸는 과정으로 이해할 수 있다.

이는 선형회귀의 디자인행렬 $\mathbf{X}$가 고차원 특징공간(심지어 무한차원일 수도 있음)으로 확장된 것과 유사하며, 특별한 내적구조를 커널로 표현함으로써 역행렬을 직접 구하지 않고도 비선형 회귀를 효율적으로 계산할 수 있다.

#### 장점과 한계, 그리고 활용

정상방정식은 선형회귀의 핵심 이론적 기초를 보여주며, 오차 직교 조건과 기하학적 사영 개념을 가장 직관적으로 설명한다.

그러나 실제 구현에서는 (1) 수치 안정성, (2) 대규모 데이터, (3) 다중공선성 등 여러 문제로 인해, QR/SVD/Cholesky/CG/SGD 등 대안이 더 자주 사용된다.

그럼에도 불구하고, 모델 이해와 이론 학습 단계에서 정상방정식이 제시하는 “$\mathbf{X}^T \mathbf{X}\mathbf{\beta} = \mathbf{X}^T \mathbf{y}$”라는 단순 명료한 형태는 최소제곱법의 본질을 드러내는 데 매우 유용하다.
