# 최소자승법(LS)과 가중치 적용

#### 기초 개념 및 배경

최소자승법은 주어진 관측값들을 기반으로 모델 파라미터를 추정할 때, 오차 제곱합(sum of squared errors)을 최소화하도록 하는 기법이다. 센서 퓨전에서는 여러 센서로부터 측정된 데이터를 융합할 때, 불확실성을 최소화하려는 목적으로 자주 활용된다. 오차 제곱합을 최소화하려는 접근 자체가 통계적으로는 최대우도추정(MLE, Maximum Likelihood Estimation)과도 연결되며, 선형 회귀 모델 등에서 가장 핵심적인 추정 방법이 된다.

이론적으로는 $n$개의 독립측정값 $y\_i$와 이에 대응하는 설명변수(특징벡터) $\mathbf{x}\_i$가 있다고 하자. 일반적인 선형 모델은 다음과 같이 표현한다.

$$
\begin{align} y\_i = \mathbf{x}\_i^\mathsf{T}\boldsymbol{\beta} + \epsilon\_i   \end{align}
$$

여기에서 $\boldsymbol{\beta}$는 추정하고자 하는 파라미터(계수) 벡터이며, $\epsilon\_i$는 측정 과정에서 발생하는 잡음 혹은 오차 항이다. 모든 관측값을 모아서 벡터와 행렬로 표현하면 다음과 같은 형태가 된다.

$$
\begin{align} \mathbf{y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\epsilon}  \end{align}
$$

$\mathbf{y}$는 $(n \times 1)$ 벡터, $\mathbf{X}$는 $(n \times m)$ 행렬이며, $\boldsymbol{\beta}$는 $(m \times 1)$ 벡터, $\boldsymbol{\epsilon}$는 $(n \times 1)$ 벡터가 된다. 센서 퓨전 문제에서는 $\mathbf{X}$가 여러 센서 입력으로 구성된 특징 행렬일 수 있고, $\mathbf{y}$가 실제로 측정된 값들의 집합일 수 있다.

#### 최소자승법의 기본 공식

최소자승법에서는 오차 $\boldsymbol{\epsilon}$의 크기를 제곱해서 합한 값, 즉 오차 제곱합(SSE, Sum of Squared Errors)을 최소화한다. 오차 제곱합은 다음과 같이 표현된다.

$$
\begin{align} S(\boldsymbol{\beta})  &= |\mathbf{y} - \mathbf{X}\boldsymbol{\beta}|^2  \\
&= (\mathbf{y} - \mathbf{X}\boldsymbol{\beta})^\mathsf{T} (\mathbf{y} - \mathbf{X}\boldsymbol{\beta})  \end{align}
$$

이를 $\boldsymbol{\beta}$에 대해 편미분하고 0으로 두어 최솟값을 찾으면 다음과 같은 정규방정식(normal equation)을 얻게 된다.

$$
\begin{align} \frac{\partial S}{\partial \boldsymbol{\beta}} = -2 \mathbf{X}^\mathsf{T} \bigl(\mathbf{y} - \mathbf{X}\boldsymbol{\beta}\bigr) = \mathbf{0}  \end{align}
$$

이로부터 최소자승해(추정치)는 다음과 같이 주어진다.

$$
\begin{align} \hat{\boldsymbol{\beta}}  = (\mathbf{X}^\mathsf{T}\mathbf{X})^{-1} \mathbf{X}^\mathsf{T}\mathbf{y}  \end{align}
$$

이는 $\mathbf{X}^\mathsf{T}\mathbf{X}$가 가역(invertible)하다는 가정 하에서 성립한다. 센서 퓨전의 맥락에서, 여러 센서로부터 얻어진 측정값을 이용해 선형 방정식 형태로 묶어 $\mathbf{X}$를 구성하고, 그때의 계수 벡터 $\boldsymbol{\beta}$를 위 공식으로 추정함으로써 하나의 융합 결과를 얻을 수 있다.

#### 최소자승법의 기하학적 해석

최소자승법은 기하학적으로 볼 때, 벡터공간에서 $\mathbf{y}$를 $\mathbf{X}$의 열공간(column space)으로 정사영(projection)하는 과정이다. 즉, 관측벡터 $\mathbf{y}$가 열공간으로 정사영된 벡터 $\mathbf{\hat{y}}$가 $\mathbf{X}\hat{\boldsymbol{\beta}}$에 해당한다. 이 때 오차벡터 $\mathbf{y} - \mathbf{\hat{y}}$는 $\mathbf{X}$의 열공간에 대해 직교(orthogonal)하게 된다. 수학적으로는 다음과 같은 정사영 조건이 성립한다.

$$
\begin{align} (\mathbf{y} - \mathbf{X}\hat{\boldsymbol{\beta}}) \perp \mathrm{Col}(\mathbf{X})  \end{align}
$$

여기에서 $\mathrm{Col}(\mathbf{X})$는 행렬 $\mathbf{X}$의 열공간이다.

이는 최소자승법의 핵심 원리로서, 에러 벡터가 설명변수 공간에 직교하도록 하여 에러의 크기가 최소가 되도록 한다.

#### 가중치 적용의 필요성

실제 센서 퓨전 상황에서는 모든 관측값이 동일한 신뢰도를 가지는 것이 아니라, 센서 종류마다 오차분산이 달라지거나, 시간에 따라 측정값의 불확실성이 달라지는 일이 많다. 이를 반영하기 위해 각 측정값에 서로 다른 가중치(weight)를 부여하는 방식을 사용한다. 이를 가중 최소자승법(Weighted Least Squares, WLS) 혹은 가중치 적용 LS라고 부른다.

센서 $i$가 만들어내는 측정치에 부여하고자 하는 가중치가 $w\_i$라고 하면, 일반적으로 다음과 같은 새로운 오차 제곱합을 정의할 수 있다.

$$
\begin{align} S\_\mathrm{W}(\boldsymbol{\beta})  &= \sum\_{i=1}^n w\_i,\bigl(y\_i - \mathbf{x}\_i^\mathsf{T}\boldsymbol{\beta}\bigr)^2  \end{align}
$$

이를 행렬 형태로 표현하려면 대각 원소가 $w\_1, w\_2, \dots, w\_n$인 대각행렬 $\mathbf{W}$를 정의한다. 그러면 오차 제곱합은

$$
\begin{align} S\_\mathrm{W}(\boldsymbol{\beta})  = (\mathbf{y} - \mathbf{X}\boldsymbol{\beta})^\mathsf{T} \mathbf{W} (\mathbf{y} - \mathbf{X}\boldsymbol{\beta})  \end{align}
$$

이 된다. $\mathbf{W}$는 측정 신뢰도의 상대적 크기를 반영하는 행렬로, 일반적으로는 측정 잡음 분산의 역수에 해당하는 값을 대각으로 둔다. 예를 들어 센서 $i$의 측정 잡음 분산이 $\sigma\_i^2$라면 $w\_i = \frac{1}{\sigma\_i^2}$로 설정할 수 있다.

#### 가중 최소자승법의 해

가중 최소자승법의 해는 $S\_\mathrm{W}(\boldsymbol{\beta})$를 최소화하는 $\boldsymbol{\beta}$를 찾는 과정으로 얻는다. $S\_\mathrm{W}(\boldsymbol{\beta})$를 $\boldsymbol{\beta}$에 대해 편미분하여 0으로 두면 다음 정규방정식이 성립한다.

$$
\begin{align} \frac{\partial S\_\mathrm{W}}{\partial \boldsymbol{\beta}}  = -2 \mathbf{X}^\mathsf{T}\mathbf{W} \bigl(\mathbf{y} - \mathbf{X}\boldsymbol{\beta}\bigr)  = \mathbf{0}  \end{align}
$$

이를 통해 가중 최소자승해(추정치)는

$$
\begin{align} \hat{\boldsymbol{\beta}}\_\mathrm{W}  = (\mathbf{X}^\mathsf{T}\mathbf{W}\mathbf{X})^{-1} \mathbf{X}^\mathsf{T}\mathbf{W}\mathbf{y}  \end{align}
$$

의 형태로 주어진다. 이 결과는 측정치가 서로 다른 신뢰도를 가질 때, 더 신뢰도가 높은(분산이 작은) 측정치에 큰 가중치를 부여하여 해를 구하는 것으로 해석할 수 있다.

#### 센서 퓨전에서의 가중치 행렬 설정

센서 퓨전 문제에서는 서로 다른 센서가 각기 다른 잡음 특성을 가지므로, 일반적으로 센서별 오차분산 $\sigma\_i^2$를 사전에 추정하거나 사양(데이터시트)에서 얻은 뒤, 그 역수를 대각행렬로 하여 $\mathbf{W}$를 구성한다. 센서가 여러 차원 정보를 동시에 제공하는 경우, 블록 대각행렬 형태의 공분산 행렬을 고려해 $\mathbf{W} = \mathbf{R}^{-1}$ (여기에서 $\mathbf{R}$은 전체 측정노이즈 공분산 행렬) 형태로 두는 일도 일반적이다. 센서가 상호 종속적인 잡음을 가진다면, 가중 행렬을 단순한 대각행렬이 아니라 풀랭크(full-rank) 대칭행렬로 고려해야 하는 경우도 있다.

오차 공분산 행렬 $\mathbf{R}$가 알려져 있다고 하면,

$$
\begin{align} \mathbf{W} = \mathbf{R}^{-1}  \end{align}
$$

로 설정하면 된다. 이는 가우시안 잡음 가정 하에서 최대우도추정에 해당하는 형태이기도 하며, 공분산이 작은 센서의 측정치에 자연스럽게 더 높은 가중치를 부여하게 된다.

#### 가중 최소자승법의 통계적 해석

가중치 $\mathbf{W}$가 대각행렬 형태이고, 그 대각원소가 측정잡음 분산의 역수로 주어질 때, 이는 일반적으로 다음과 같은 통계적 가정과 대응된다. 각 센서의 측정치가 서로 독립적이고, 센서 $i$의 잡음 분산이 $\sigma\_i^2$라고 할 때,

$$
\begin{align} \epsilon\_i \sim \mathcal{N}(0, \sigma\_i^2)  \end{align}
$$

로 가정하면 최대우도추정을 통해 $\sigma\_i^{-2}$를 가중치 $w\_i$로 두어 최소자승 추정을 수행하는 것이 자연스럽다. 즉, 잡음 분포가 서로 독립적인 가우시안이라면, 센서별 공분산 행렬 $\mathbf{R}$가 대각행렬로 표현되며,

$$
\begin{align} \mathbf{R} = \mathrm{diag}(\sigma\_1^2,,\sigma\_2^2,,\dots,,\sigma\_n^2),  \end{align}
$$

이때 가중치 행렬은

$$
\begin{align} \mathbf{W} = \mathbf{R}^{-1} = \mathrm{diag}\Bigl(\frac{1}{\sigma\_1^2},,\frac{1}{\sigma\_2^2},,\dots,,\frac{1}{\sigma\_n^2}\Bigr).  \end{align}
$$

이렇게 구성된 가중 최소자승법은 통계적으로는 최대우도추정과 동일하게 된다.

#### 일반화된 최소자승법(GLS)

센서 잡음이 서로 독립적이지 않고 상관관계를 갖는 경우, 즉 전체 잡음 벡터 $\boldsymbol{\epsilon}$의 공분산 $\mathbf{R}$가 대각행렬이 아니게 될 수도 있다. 이때는 더욱 일반화된 형태의 최소자승법(GLS, Generalized Least Squares)이 필요하다. 일반화된 최소자승법에서는 전체 오차공분산 행렬 $\mathbf{R}$가 주어졌다고 할 때 다음을 최소화한다.

$$
\begin{align} S\_\mathrm{GLS}(\boldsymbol{\beta})  = (\mathbf{y} - \mathbf{X}\boldsymbol{\beta})^\mathsf{T} \mathbf{R}^{-1} (\mathbf{y} - \mathbf{X}\boldsymbol{\beta}).  \end{align}
$$

이는 단순히 $\mathbf{R}^{-1}$을 가중치 행렬로 보는 관점과 동일하며, 최적해는

$$
\begin{align} \hat{\boldsymbol{\beta}}\_\mathrm{GLS}  = (\mathbf{X}^\mathsf{T}\mathbf{R}^{-1}\mathbf{X})^{-1} \mathbf{X}^\mathsf{T}\mathbf{R}^{-1}\mathbf{y}.  \end{align}
$$

즉, 가우시안 잡음 분포를 가정했을 때, 잡음 공분산 구조가 임의로 주어지면 그 역행렬을 가중 행렬로 하여 오차 제곱합을 최소화하는 방식이 곧 일반화된 최소자승법이다.

#### 센서 퓨전에서의 GLS와 데이터 융합

서로 다른 센서가 복합적인 상관 잡음을 갖는 상황(예: 동일한 환경적 교란에 민감하게 반응, 공통 bias가 존재, 내부 회로 공유 등)에서, 단순히 대각 행렬 형태로 가중치 설정을 하는 것은 오차를 과소/과대평가할 수 있다. 센서들 간의 상관성을 고려해 전체 공분산 행렬을 추정 혹은 모델링할 수 있다면, GLS 형태의 접근이 센서 퓨전 결과를 더 정확하게 만들어 준다.

현실적으로 $\mathbf{R}$을 정확하게 알기는 쉽지 않고, 추정 과정이나 사전 실험을 통해 근사치로 구하기도 한다. 칼만 필터(Kalman Filter) 기반 접근과도 연결되는 맥락이 있는데, 칼만 필터 관점에서 측정공분산 행렬 $\mathbf{R}$는 관측 단계에서 활용되는 값이며, 오차 공분산이 반영된 가중치 적용이 곧 GLS 형태를 구현하는 셈이다.

#### 선형대수적 관점

최소자승 해 $\hat{\boldsymbol{\beta}}*\mathrm{W}$나 $\hat{\boldsymbol{\beta}}*\mathrm{GLS}$를 직접 계산할 때, 역행렬 연산 $(\mathbf{X}^\mathsf{T}\mathbf{W}\mathbf{X})^{-1}$ 혹은 $(\mathbf{X}^\mathsf{T}\mathbf{R}^{-1}\mathbf{X})^{-1}$을 수행해야 한다. 이는 차원이 클수록 계산량이 증가하며, 수치적 안정성 문제도 발생할 수 있다. 실무에서는 고유값 분해, SVD(특이값 분해), QR 분해 등의 안정적인 방법을 통해 최소자승해를 구하는 경우가 많다.

예를 들어, 가중 최소자승문제를 풀 때, $\tilde{\mathbf{X}} = \mathbf{W}^{1/2}\mathbf{X}$, $\tilde{\mathbf{y}} = \mathbf{W}^{1/2}\mathbf{y}$와 같이 정의한 뒤,

$$
\begin{align} \hat{\boldsymbol{\beta}}\_\mathrm{W}  &= (\mathbf{X}^\mathsf{T}\mathbf{W}\mathbf{X})^{-1} \mathbf{X}^\mathsf{T}\mathbf{W}\mathbf{y} \\
&= (\tilde{\mathbf{X}}^\mathsf{T}\tilde{\mathbf{X}})^{-1} \tilde{\mathbf{X}}^\mathsf{T}\tilde{\mathbf{y}},  \end{align}
$$

처럼 바꿔놓고, 이제는 일반적인(비가중) 최소자승 문제를 풀듯이 $\tilde{\mathbf{X}}$와 $\tilde{\mathbf{y}}$에 대해 QR 분해나 SVD를 적용할 수 있다.

이를 GLS에 그대로 적용하면, $\tilde{\mathbf{X}} = \mathbf{R}^{-1/2}\mathbf{X}$, $\tilde{\mathbf{y}} = \mathbf{R}^{-1/2}\mathbf{y}$ 와 같은 변환을 이용한다. 그 후에 $\tilde{\mathbf{X}}$에 대한 분해로부터 해를 찾는다.

#### 잔차분석(Residual Analysis)

최소자승법의 해를 구하고 난 뒤, 실제 측정값과 추정 모델 간의 차이인 잔차(residual)를 확인함으로써, 센서 퓨전 성능을 평가하거나 모델이 적절한지 판단하게 된다. 잔차는 다음과 같이 정의한다.

$$
\begin{align} \mathbf{r} = \mathbf{y} - \mathbf{X}\hat{\boldsymbol{\beta}}  \end{align}
$$

가중 최소자승법에서의 잔차는

$$
\begin{align} \mathbf{r}*\mathrm{W} = \mathbf{y} - \mathbf{X}\hat{\boldsymbol{\beta}}*\mathrm{W}.  \end{align}
$$

단순히 잔차 벡터 $\mathbf{r}$만 보는 것보다, 가중치가 반영된 잔차(standardized residual)나 정규화된 형태를 통해 오류 패턴을 해석하기도 한다. 예를 들어,

$$
\begin{align} \mathbf{r}\_\mathrm{std} = \mathbf{W}^{1/2},(\mathbf{y} - \mathbf{X}\hat{\boldsymbol{\beta}})  \end{align}
$$

와 같이 정의하여 각 측정값에 대한 가중치를 고려한 잔차를 살펴보면, 특정 센서가 과도하게 큰 오차를 내지는 않는지 등을 파악할 수 있다. 이는 이상치(outlier) 검출에도 응용된다.

#### 이상치(Outlier)와 강인(robust) 최소자승법

현실적으로 센서 데이터에는 큰 오류나 이상치(Outlier)가 혼재할 수 있다. 표준적인 최소자승법은 제곱에 비례하여 페널티가 증가하기 때문에, 이상치에 매우 민감하게 반응한다. 이 문제를 완화하기 위해 사용하는 방법이 강인(robust) 회귀 또는 강인 최소자승법이다.

강인 최소자승법은 오차가 일정 범위를 넘어서는 구간에서 제곱이 아닌 완만한 함수(예: Huber 함수, Cauchy 손실 함수 등)를 사용하여, 이상치가 결과에 미치는 영향을 줄이는 기법이다. 이는 센서 퓨전 상황에서도 적용 가능하다. 예를 들어, 특정 센서가 간헐적으로 이상값을 내보낼 가능성이 있다면, 이러한 강인 추정 방법을 적용해 추정값을 안정적으로 유지할 수 있다.

일반적인 형태의 강인 추정은 다음과 같은 목적 함수를 최소화하는 식으로 이해할 수 있다.

$$
\begin{align} S\_\mathrm{robust}(\boldsymbol{\beta}) =  \sum\_{i=1}^{n} \rho\Bigl( y\_i - \mathbf{x}\_i^\mathsf{T}\boldsymbol{\beta} \Bigr)  \end{align}
$$

여기서 $\rho(\cdot)$는 오차가 큰 구간에서는 제곱보다 느리게 증가하는 함수를 의미한다(예: Huber, Cauchy 등). 이런 방식은 일반적인 선형 최소자승의 폐쇄형 해가 존재하지 않으므로, 수치적 최적화 기법(예: 반복적 방법, IRLS: Iteratively Reweighted Least Squares 등)을 통해 해를 구한다.

#### IRLS(Iteratively Reweighted Least Squares)

강인 추정에서 자주 쓰이는 해법 중 하나가 IRLS 기법이다. 이는 매 반복마다 가중치 행렬을 업데이트하는 방식으로, 비선형 문제를 일련의 가중 최소자승 문제로 근사하여 풀어간다. 즉, 각 단계에서 현재 추정값을 바탕으로 잔차를 계산하고, 그 잔차에 따라 새로운 가중치를 부여한 뒤에 가중 최소자승 해를 다시 구한다. 이 과정을 수렴할 때까지 반복한다.

센서 퓨전에서도 특정 측정치의 잔차가 지나치게 크다면, 그 측정치의 가중치를 동적으로 낮추는 형태로 IRLS를 적용할 수 있다. 이처럼 IRLS는 센서 이상값이 존재하는 상황에서도 비교적 안정적인 융합 결과를 제공한다.

#### 작은 예시

Octave로 간단한 예를 보이면, 어떤 데이터가 있고 잡음분산이 서로 다른 두 센서에서 얻은 측정값을 가지고 가중 최소자승 해를 구해볼 수 있다.

```octave
% 가중 최소자승법 간단 예시

% 예제 데이터 (X, y)
X = [1 0; 1 1; 1 2; 1 3]; 
y = [0.1; 1.1; 2.0; 2.9]; 

% 두 그룹으로 나눠 센서 분산을 가정
% 첫 번째 센서(앞의 2개 데이터) 분산 = 0.01
% 두 번째 센서(뒤의 2개 데이터) 분산 = 0.04
W = diag([1/0.01; 1/0.01; 1/0.04; 1/0.04]);

% 가중 최소자승 해
beta_W = inv(X'*W*X)*X'*W*y

% 비가중 최소자승 해
beta_LS = inv(X'*X)*X'*y
```

위 예에서 $X$는 상수항(절편)과 1차 항으로 구성된 단순 선형 모델(2차원), $y$는 실제 측정값, $W$는 분산의 역수를 대각으로 갖는 행렬이다. 두 센서가 측정정확도가 서로 다르다고 가정하여, 가중치가 다른 결과를 내게 된다.

#### 시각적 표현(mermaid 활용 예시)

센서들이 서로 다른 잡음특성을 가지고 있고, 이들을 하나의 블록에서 가중 최소자승으로 융합하는 과정을 간단히 표현하면 다음과 같다.

{% @mermaid/diagram content="flowchart LR
A\["Sensor 1\n(variance σ1^2)"] --> B{WLS Fusion}
C\["Sensor 2\n(variance σ2^2)"] --> B{WLS Fusion}
D\["Sensor k\n(variance σk^2)"] --> B{WLS Fusion}
B --> E\[Estimated Parameter β]" %}

각 센서마다 잡음특성이 달라서 분산이 각각 σ1^2, σ2^2, ..., σk^2라면, 블록 B에서 가중 최소자승법으로 β를 추정한다. 이때 가중치 행렬은 대각 원소로 (1/σ1^2, 1/σ2^2, ..., 1/σk^2)를 포함하거나, 서로 상관된 노이즈 구조라면 공분산 행렬의 역을 사용한다.

#### Gauss-Markov 정리(BLUE)와 오차분석

최소자승법(LS)은 선형 추정 문제에서 중요한 이론적 근거를 갖는다. 대표적으로 Gauss-Markov 정리는 다음과 같이 요약된다.

**Gauss-Markov 정리**

오차항(잡음)들이

1. 선형 모델 $\mathbf{y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\epsilon}$에 따라 발생
2. $\mathbb{E}\[\boldsymbol{\epsilon}] = \mathbf{0}$
3. $\mathrm{Cov}\[\boldsymbol{\epsilon}] = \sigma^2 \mathbf{I}$ (독립이며 분산이 동일)
4. $\mathbf{X}$의 열벡터들이 선형독립

등의 조건을 만족한다고 할 때, **비가중** 최소자승 추정치는 모든 선형 불편추정량(Linear Unbiased Estimator) 중에서 분산이 최소가 된다. 이를 Best Linear Unbiased Estimator(BLUE)라고 부른다.

가중 최소자승법 혹은 일반화된 최소자승법에서도 잡음 공분산이 $\mathbf{R}$으로 주어지고, $\mathbf{R}$가 양의 정부호(positive definite)라고 하면, 마찬가지로

$$
\hat{\boldsymbol{\beta}}\_\mathrm{GLS} = (\mathbf{X}^\mathsf{T}\mathbf{R}^{-1}\mathbf{X})^{-1}\mathbf{X}^\mathsf{T}\mathbf{R}^{-1}\mathbf{y}
$$

가 선형 불편추정량 중에서 분산을 최소화하는 추정치가 된다. 즉, 서로 독립이지 않은 잡음을 갖는 모델에서 $\mathbf{R}$가 알려져 있으면 $\mathbf{R}^{-1}$을 통해 "탈상관(whitening)"을 수행한 뒤 최소자승을 구하는 것이 BLUE가 된다.

#### 추정치의 오차공분산

최소자승 해 $\hat{\boldsymbol{\beta}}$의 분산(혹은 공분산)을 구하면, 추정값에 대한 불확실성 정도를 알 수 있다. 센서 퓨전에서는 최종 추정치의 정확도를 정량적으로 표현할 때 이 공분산을 활용한다.

**비가중 최소자승의 경우**

잡음 공분산이 $\sigma^2 \mathbf{I}$로 동일하다고 하면, 비가중 최소자승 추정치의 분산-공분산 행렬은

$$
\mathrm{Cov}\[\hat{\boldsymbol{\beta}}]  = \sigma^2 (\mathbf{X}^\mathsf{T}\mathbf{X})^{-1}.
$$

**가중 최소자승(또는 GLS)인 경우**

잡음 공분산 행렬이 $\mathbf{R}$일 때,

$$
\mathrm{Cov}\[\hat{\boldsymbol{\beta}}\_\mathrm{GLS}]  = (\mathbf{X}^\mathsf{T}\mathbf{R}^{-1}\mathbf{X})^{-1}.
$$

만약 잡음이 독립적이면서 센서마다 다른 분산을 가진다면 $\mathbf{R} = \mathrm{diag}(\sigma\_1^2,\dots,\sigma\_n^2)$이 되어, 그 역행렬이 $\mathbf{W}$ 대각행렬이 된다. 이 경우

$$
\mathrm{Cov}\[\hat{\boldsymbol{\beta}}\_\mathrm{W}]  = (\mathbf{X}^\mathsf{T}\mathbf{W}\mathbf{X})^{-1}.
$$

실제로 센서 퓨전에서 $\hat{\boldsymbol{\beta}}*\mathrm{W}$ 혹은 $\hat{\boldsymbol{\beta}}*\mathrm{GLS}$를 구한 뒤, 그 공분산을 통해 (추정 파라미터들 각각에 대한) 오차표준편차나 상관관계를 얻을 수 있다.

#### 추정치에 대한 신뢰구간

오차분포를 가우시안으로 가정하면, $\hat{\boldsymbol{\beta}}\_\mathrm{GLS}$는 통계적으로 정규분포에 가까운 성질을 띤다. 즉,

$$
\hat{\boldsymbol{\beta}}\_\mathrm{GLS} \sim \mathcal{N}\bigl(\boldsymbol{\beta},,(\mathbf{X}^\mathsf{T}\mathbf{R}^{-1}\mathbf{X})^{-1}\bigr)
$$

로 볼 수 있다(이때 실제 $\sigma^2$나 $\mathbf{R}$가 정확히 알려져 있다고 가정). 따라서 $(\mathbf{X}^\mathsf{T}\mathbf{R}^{-1}\mathbf{X})^{-1}$에서 얻는 분산을 바탕으로, 추정 파라미터별 신뢰구간(confidence interval)을 계산할 수 있다. 센서 퓨전 상황에서는 여러 파라미터가 동시에 추정되는 경우가 많으므로, 오차 공분산으로부터 다변량 신뢰영역(예: 타원체, ellipsoid)도 구할 수 있다.

#### 수치적 문제와 정규방정식의 조건수(Condition Number)

실제 계산에서 $(\mathbf{X}^\mathsf{T}\mathbf{W}\mathbf{X})^{-1}$ 같은 역행렬 연산은 수치적으로 불안정할 수 있다. 특히 $\mathbf{X}$의 열벡터들이 서로 유사하거나 차원이 큰 경우, $\mathbf{X}^\mathsf{T}\mathbf{X}$ (또는 $\mathbf{X}^\mathsf{T}\mathbf{W}\mathbf{X}$)가 심각하게 축퇴되어(singular, 혹은 nearly singular) 역이 존재하지 않거나 잘못된 추정치를 유도할 수 있다.

이를 방지하기 위해 다음과 같은 방법들을 사용한다.

1. **QR 분해, SVD**(특이값 분해) 같은 안정적인 선형대수 기법으로 해를 구한다.
2. **정칙화(regularization)** 기법(예: Ridge Regression, LASSO)을 적용하여 모수공간의 폭주(divergence)를 제한한다.
3. 충분한 데이터 수집으로 관측행렬 $\mathbf{X}$의 열벡터들이 독립적이고 다채롭게 분포하도록 한다.

**SVD에 의한 해석**

예를 들어, 일반적인 LS 문제 $\min |\mathbf{y} - \mathbf{X}\boldsymbol{\beta}|^2$를 풀 때, $\mathbf{X}$의 SVD를

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

라 하면, 최소자승해는

$$
\hat{\boldsymbol{\beta}} = \mathbf{V}\boldsymbol{\Sigma}^{-1}\mathbf{U}^\mathsf{T}\mathbf{y}
$$

로 주어진다(순서나 차원은 생략적 표기로 나타냄). 특이값이 매우 작은 항은 역수 연산 시 커다란 값을 만들어낼 수 있으므로, 이 부분에서 수치적 문제가 발생할 수 있다. 따라서 Ridge(능형) 정칙화 등으로 특이값이 작은 부분을 일정 수준 이상으로 제한하여, 해의 안정성을 확보하기도 한다.

#### 정칙화(Regularization)

센서 퓨전에서는 모델에 파라미터가 많거나, 데이터가 충분치 않을 때(underdetermined problem), 혹은 센서 오차 특성이 불명확할 때, 정칙화를 통해 안정된 추정값을 얻는다. 정칙화란, 목적함수에 추가로 규제항(regularization term)을 부과해 과도한 계수 크기(오버피팅)를 방지하는 기법이다.

**Ridge 회귀(= Tikhonov 정칙화)**

가장 널리 쓰이는 방법 중 하나가 **Ridge**(L2 정칙화)이다. 비가중 최소자승 문제에서 Ridge 회귀는

$$
\min\_{\boldsymbol{\beta}}  \Bigl{ |\mathbf{y} - \mathbf{X}\boldsymbol{\beta}|^2 + \lambda |\boldsymbol{\beta}|^2 \Bigr}.
$$

$\lambda$는 정칙화 계수로, $\boldsymbol{\beta}$의 크기를 제약하는 효과를 낸다. 선형대수적으로 살펴보면, 보정된 정규방정식은

$$
(\mathbf{X}^\mathsf{T}\mathbf{X} + \lambda \mathbf{I})\hat{\boldsymbol{\beta}} = \mathbf{X}^\mathsf{T}\mathbf{y}.
$$

따라서 해는

$$
\hat{\boldsymbol{\beta}}\_\mathrm{Ridge} = (\mathbf{X}^\mathsf{T}\mathbf{X} + \lambda \mathbf{I})^{-1} \mathbf{X}^\mathsf{T}\mathbf{y}.
$$

가중 최소자승이나 GLS에 대해서도 유사하게,

$$
\min\_{\boldsymbol{\beta}} \Bigl{ (\mathbf{y}-\mathbf{X}\boldsymbol{\beta})^\mathsf{T} \mathbf{R}^{-1} (\mathbf{y}-\mathbf{X}\boldsymbol{\beta}) + \lambda |\boldsymbol{\beta}|^2 \Bigr}
$$

로 표현하여 해를 구할 수 있다. 이 정칙화는 추정 파라미터들이 지나치게 크게 발산하는 것을 방지하고, 수치적으로도 계산 안정성을 높여준다.

**LASSO (L1 정칙화)**

또 다른 방법으로 L1 정칙화(일명 LASSO)가 있다. 이 경우 목적함수에 $|\boldsymbol{\beta}|\_1 = \sum\_j |\beta\_j|$ 항이 들어간다. L1 정칙화는 일부 계수를 완전히 0으로 만들어, 변수 선택(variable selection) 효과도 볼 수 있다. 센서 퓨전에서 특정 센서의 영향도가 0으로 추정되어야 하는 경우(예: 진짜 무용한 센서였음을 추정)에는 유용할 수 있으나, 목적함수가 볼록 절두형(비분화) 형태이므로 수치적 최적화가 Ridge보다 복잡하다.

#### 비선형 최소자승과 확장

지금까지 논의한 최소자승법은 모델이 선형 형태($\mathbf{y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\epsilon}$)를 가정한 것이었다. 현실에서 센서 관계가 비선형인 경우(예: 각 센서에서 위치를 측정하여 좌표를 추정, 로봇 자세 추정 등)는 비선형 최소자승(Nonlinear Least Squares)을 적용해야 한다. 대표적인 예시가 **가우스-뉴턴 방법**, **르벤베르그-마콰르트(Levenberg-Marquardt)** 알고리즘 등이다.

센서 퓨전에서도 다음과 같은 비선형 모델이 많다.

* 거리측정으로부터 위치 추정(TOF, TDOA, trilateration)
* IMU 센서의 각가속도, 자이로, 마그네토미터를 통한 자세(roll, pitch, yaw) 추정
* 카메라(비전 센서)에서의 투영 모델이 포함된 보정(calibration)

이런 경우, 최소자승 문제를 $\min |\mathbf{f}(\boldsymbol{\beta}) - \mathbf{y}|^2$ 형태(단, $\mathbf{f}$는 선형이 아님)로 잡고, 반복적인 방법을 통해 해를 근사한다. 잡음 공분산이 주어지면, 가중치나 공분산 역행렬을 포함하여 일반화된 형태의 비선형 최소자승으로 확장할 수 있다.

#### 센서 퓨전에서의 적용 사례

센서 퓨전에 최소자승법과 가중치를 적용하는 구체적 사례는 매우 다양하다. 예를 들어,

**(1) 센서 보정(Calibration)**

여러 센서를 하나의 로봇에 탑재할 때, 센서 간 상호 배치(오프셋, 회전 각도 등)를 추정하는 문제. 최소자승법으로 모델을 세워서 센서들의 상대적 위치/자세 파라미터를 추정한다(단순 선형 형태면 LS, 그렇지 않으면 비선형 LS).

**(2) 지도 기반 보정(Map Matching)**

GPS, IMU, 지자기 센서 등을 결합해 위치를 추정하면서 지도의 정보(도로, 지형)를 이용해 오차를 줄이려 할 때, 오차와 지도 정보 사이의 편차를 최소화하는 형태로 (가중) 최소자승식을 세워서 최적 파라미터(차량 위치, 속도, 자세 등)를 추정할 수 있다.

**(3) 마이크 어레이(Microphone Array)**

사운드 소스 방향(DOA, Direction of Arrival) 추정 시, 여러 마이크에 도달하는 음파 신호의 시간차를 기반으로 비선형 최소자승 문제를 풀거나, 잡음 공분산 구조를 고려해 일반화된 최소자승법 형태를 적용한다.

**(4) 다중센서 오프라인 데이터 융합**

데이터 로깅 후, 오프라인에서 가장 일관성 있는 시스템 파라미터를 "후처리(post-processing)" 방식으로 추정할 때, 센서별 가중치(혹은 노이즈 공분산)를 통해 최소자승문제를 구성한다.

#### 단순 반복필터 vs. 칼만 필터(Kalman Filter)

실제 센서 퓨전에서 온라인(실시간)으로 동작할 때는, 과거 상태와 현재 측정을 결합해 상태 추정을 수행하는 \*\*칼만 필터(Kalman Filter)\*\*를 많이 쓴다. 칼만 필터는 매 시점별로,

1. 예측 단계: 이전 추정 상태를 동역학 모델에 따라 예측
2. 갱신 단계: 현재 측정값과 비교해 오차 공분산 기반 최적 결합

을 수행하는데, 이 과정이 바로 "가중 최소자승 + 재귀적 업데이트"의 형태와 동일하다. 즉, 상태추정 이론에서 칼만 필터는 **최소자승/최대우도추정의 동적(real-time) 구현**으로 볼 수 있다. 그래서 시간에 따라 변하는 동적 시스템의 상태를 추정할 때는 칼만 필터가 더 일반적이다.

다만, 칼만 필터나 그 변형인 EKF(Extended Kalman Filter), UKF(Unscented Kalman Filter) 등은 "시계열(time series) 센서 데이터"를 가정하고 순차적으로 처리하는 알고리즘이다. 오프라인 배치(batch) 형태로 전체 데이터를 한꺼번에 처리할 때는 앞서 설명한 (가중) 최소자승 접근이 좀 더 직접적이다.

#### 정리

지금까지 최소자승법과 그 확장 형태인 가중 최소자승법(WLS), 일반화된 최소자승법(GLS), 그리고 센서 퓨전 맥락에서의 응용과 관련 수치적·통계적 측면을 폭넓게 살펴보았다. 오차공분산 구조, 가중치 설정, 정칙화, 이상치 대처(강인 회귀), 수치 안정성, 비선형 확장 등 다양한 요소들이 결합되어 실제 센서 퓨전 시스템을 구성하게 된다.

#### 다중공선성(Multicollinearity)과 센서 중복

센서 퓨전 시 여러 센서들이 유사하거나 서로 거의 같은 종류의 정보를 제공한다면, 관측행렬 $\mathbf{X}$의 열벡터들 간에 강한 상관관계가 발생하여 다중공선성 문제(multicollinearity)가 생길 수 있다. 이는 $\mathbf{X}^\mathsf{T}\mathbf{X}$ (혹은 $\mathbf{X}^\mathsf{T}\mathbf{W}\mathbf{X}$)가 수치적으로 불안정해지거나 거의 특이(singular)에 가까워져서 해를 구하기 어려워지거나, 해가 매우 큰 계수로 발산하는 결과를 낳는다.

예를 들어, 동일한 물리량을 측정하지만 제조사나 계측 방식만 다른 센서를 여러 개 탑재해 놓았다면, 그 센서들의 측정치가 서로 높은 상관성을 가질 수 있다. 이때 최소자승 해를 계산하는 과정에서 각 파라미터(센서별 계수)가 실제 물리적으로 말이 안 될 정도로 크게 추정되는 현상이 나타날 수도 있다. 이를 피하기 위한 실무적인 방법은 다음과 같다 (아래는 그냥 설명의 나열일 뿐 숫자나 불릿 리스트로 표현하지 않는다):

정칙화(regularization)를 적용하여 계수 크기를 제약한다. 과도하게 유사한 센서 일부를 제외하거나, 센서 입력 차원을 축소한다(예: 주성분분석(PCA) 등). 잡음 분산이 큰 센서에는 작은 가중치를 두고, 상관관계가 큰 센서들끼리는 별도의 블록으로 묶어 처리하거나, 상관구조를 명시적으로 모형화한다.

#### 편향(Bias) 보정과 LS

센서들이 공통적으로 오프셋(offset)이나 바이어스(bias)를 가지고 있다면, 모델에 이 오프셋 변수를 추가하여 최소자승 추정 과정에서 동시에 추정하는 방법이 있다. 예를 들어, 센서 $i$의 바이어스를 $b\_i$라 할 때,

$$
y\_i = \alpha, x\_i + b\_i + \epsilon\_i
$$

와 같은 형태로 잡아 모두를 LS 문제로 풀 수 있다. 만일 센서별 바이어스들이 독립적이지 않을 경우, 공분산 행렬에 그 상관구조를 반영해 GLS 접근을 적용한다. 센서 바이어스가 시간이 지남에 따라 천천히 변하거나 (온도나 환경 요인 등), 상황별로 다른 동작 모드가 있을 때는 비선형 혹은 시계열 모델로 확장하여 다룰 수 있다.

#### 센서 시계열 데이터와 동기화

센서들이 서로 다른 주기로 데이터를 내거나, 타임스탬프가 비동기적으로 기록되는 상황에서는 최소자승 문제를 단순한 "정적" 형태로 구성하기 어렵다. 이를 위해 센서 시계열 데이터를 적절히 동기화(synchronization)하거나, 인터폴레이션, 보간법 등을 적용해 "동일 시각"으로 가정된 관측 쌍을 만든 다음에 최소자승법을 적용하기도 한다. 혹은 칼만 필터 등 재귀적 방법을 쓰면 센서마다 들어오는 시점을 고려한 온라인 융합이 가능하다.

#### 확장: 비가우시안 잡음 처리

센서 잡음이 가우시안이라고 가정하기 어려운 상황에서는, 최소자승보다 다른 비용함수(cost function)를 설정하기도 한다. 예를 들어 라플라스(Laplace) 분포를 가정하면 L1 노름 형태의 목적함수를 최적화하는 방식이 최우도추정과 연결되며, 이는 $\sum | y\_i - \mathbf{x}\_i^\mathsf{T}\boldsymbol{\beta} |$를 최소화하는 절댓값 회귀(least absolute deviation)로 이어진다. 센서들의 잡음 분포가 한쪽으로 꼬리가 긴 편향 분포이면, 더 정교한 손실 함수를 설정하거나, 단계적으로 모델을 변경해야 한다. 센서 퓨전에서 이러한 분포추정은 통계적 사전지식이나 과거 측정데이터 분석으로부터 결정된다.

#### 대규모(고차원) 데이터와 LS

차원이 수천, 수만 이상으로 커지면 $(\mathbf{X}^\mathsf{T}\mathbf{X})$의 크기가 매우 커지고, 직접 역행렬을 구하는 것은 계산 비용이나 메모리 측면에서 부담이 된다. 이때는 고차원 선형대수 기법(예: 랜덤라이즈드 SVD, 근사 기법), 반복적 방법(예: CG(Conjugate Gradient), LSQR 등)을 사용해 최소자승 문제를 푼다. 센서 퓨전에서 대규모 데이터가 발생하는 대표적 예로는, 영상 센서(카메라)나 LiDAR, 레이더 등 대량의 측정 포인트를 한번에 융합하는 경우를 들 수 있다.

#### 다중 상태추정 문제

예를 들어 로봇의 위치와 자세(orientation), 조인트각, 센서 바이어스 등 여러 가지 상태를 동시에 추정하는 문제에서는 상태벡터가 차원이 매우 높아질 수 있다. 이를 일괄(배치) 형태로 풀면, 모든 시점의 상태를 한꺼번에 묶어서 최소자승 형태(혹은 MAP 추정)로 정리할 수 있다. SLAM(Simultaneous Localization And Mapping) 문제에서의 그래프 최적화가 여기에 해당한다. 그 과정에서 가중치나 공분산 구조가 노드(상태)와 엣지(측정)로 표현되고, 그래프 기반 최적화 알고리즘(예: Gauss-Newton, Levenberg-Marquardt)이 반복적으로 적용된다.

#### Out-of-Sequence Measurement (OOSM)

센서 퓨전 시, 측정 데이터가 도착하는 순서가 실제 측정 시점과 일치하지 않는 경우(OOSM)가 발생할 수 있다(네트워크 지연, 패킷 손실 등). 이때도 배치 최소자승 방식으로 모든 시점 데이터를 재정렬해 한꺼번에 최적화하면 해결 가능하다. 하지만 실시간 성능이 필요하면, 특별한 OOSM 처리를 도입한 칼만 필터 계열 알고리즘을 쓰게 된다. 최소자승 관점에서 보면, "시간" 차원을 변수화하여 부분적으로 다시 풀거나, 재귀적으로 과거 상태를 업데이트하는 문제로 볼 수 있다.

#### 추가적 예시: Python 코드

Python에서 NumPy와 SciPy를 사용해 가중 최소자승 해를 구하는 예시를 간단히 보여줄 수 있다.

```python
import numpy as np

# 예제 관측행렬 X, 측정 y
X = np.array([
    [1, 0],
    [1, 1],
    [1, 2],
    [1, 3]
], dtype=float)
y = np.array([0.1, 1.1, 2.0, 2.9], dtype=float)

# 센서별 분산 가정
sigma_sq = np.array([0.01, 0.01, 0.04, 0.04])
W = np.diag(1.0 / sigma_sq)

# 가중 최소자승 해
# beta_W = (X^T W X)^-1 X^T W y
temp = X.T @ W @ X
beta_W = np.linalg.inv(temp) @ (X.T @ W @ y)
print("Weighted LS beta:", beta_W)

# 비가중 최소자승 해와 비교
beta_LS = np.linalg.inv(X.T @ X) @ (X.T @ y)
print("Ordinary LS beta:", beta_LS)
```

이 코드에서는 가중치 행렬 $W = \mathrm{diag}(1/\sigma\_i^2)$를 구성한 뒤, 정규방정식을 통해 $\boldsymbol{\beta}$를 구한다. 만일 수치적 안정성이 문제가 된다면, `np.linalg.solve`나 SVD/QR 분해 방식을 사용하기도 한다.

#### 센서 퓨전 시 포인트

센서 퓨전에서 최소자승법과 가중치 적용을 사용할 때, 다음 사항들을 고려한다 (단, 아래는 단순 요약·나열일 뿐,

* 잡음 특성(공분산)을 잘 추정하거나 센서 사양에서 받아야 한다.
* 공분산이 대각 형태인지, 혹은 상관 잡음이 있는지 파악한다.
* 데이터가 비선형 모델에 해당하면 비선형 LS 방법을 사용한다.
* 수치적 불안정성이 있을 경우 정칙화나 분해기법, 변수 축소를 적용한다.
* 이상치가 있을 수 있으므로 강인 방법(robust regression)이나 IRLS를 활용할 수 있다.
* 실시간 구현이 필요하면 칼만 필터 등 재귀적 기법을 선택한다.

여기까지가 센서 퓨전에서 "최소자승법(LS)과 가중치 적용"에 대한 주요 이론 및 활용 관점이다.

#### 확률론적(Bayesian) 관점과 MAP 추정

최소자승법은 잡음이 가우시안이라고 가정할 때 최대우도추정(MLE)과 동일해진다. 그러나 센서 퓨전에서 추정해야 할 파라미터들이 사전분포(prior)를 가진 베이지안 관점을 취하면, 최대사후확률(MAP, Maximum A Posteriori) 추정으로 문제를 확장할 수 있다. 이 경우, 오차항뿐 아니라 추정 파라미터 자체에도 확률분포(사전지식)를 부여한다.

예를 들어, 파라미터 $\boldsymbol{\beta}$가 가우시안 사전분포 $\mathcal{N}(\boldsymbol{\mu}*\mathrm{prior}, \mathbf{P}*\mathrm{prior})$를 가진다고 하면, 사후분포를 최대화하는 과정에서 목적함수에 사전 항이 추가된다. 즉,

$$
\begin{align} \min\_{\boldsymbol{\beta}} \Bigl\[ (\mathbf{y}-\mathbf{X}\boldsymbol{\beta})^\mathsf{T} \mathbf{R}^{-1} (\mathbf{y}-\mathbf{X}\boldsymbol{\beta}) + (\boldsymbol{\beta}-\boldsymbol{\mu}*\mathrm{prior})^\mathsf{T} \mathbf{P}*\mathrm{prior}^{-1}  (\boldsymbol{\beta}-\boldsymbol{\mu}\_\mathrm{prior}) \Bigr].
\end{align}
$$

여기서 $\mathbf{R}$는 측정 잡음 공분산, $\mathbf{P}*\mathrm{prior}$는 파라미터 사전에 해당하는 공분산이다. 이를 전개하면 Ridge 정칙화와 유사하나, $\mathbf{I}$ 대신 $\mathbf{P}*\mathrm{prior}^{-1}$이 등장하고, 절편항 대신 $\boldsymbol{\mu}\_\mathrm{prior}$가 들어간다. 센서 퓨전 맥락에서는 특정 파라미터가 사전에 어느 정도 범위를 가질 것이라는 물리적·경험적 지식을 반영하여, 더 안정적이고 물리적으로 합당한 추정 결과를 기대할 수 있다.

#### 유도 예시

위 식을 $\boldsymbol{\beta}$에 대해 편미분하여 0으로 두면,

$$
\begin{align} \bigl(\mathbf{X}^\mathsf{T}\mathbf{R}^{-1}\mathbf{X}  + \mathbf{P}*\mathrm{prior}^{-1}\bigr),\hat{\boldsymbol{\beta}}*\mathrm{MAP} = \mathbf{X}^\mathsf{T}\mathbf{R}^{-1},\mathbf{y} + \mathbf{P}*\mathrm{prior}^{-1},\boldsymbol{\mu}*\mathrm{prior}. \end{align}
$$

따라서 해는

$$
\begin{align} \hat{\boldsymbol{\beta}}*\mathrm{MAP} = \Bigl(\mathbf{X}^\mathsf{T}\mathbf{R}^{-1}\mathbf{X}  + \mathbf{P}*\mathrm{prior}^{-1}\Bigr)^{-1} \Bigl(\mathbf{X}^\mathsf{T}\mathbf{R}^{-1},\mathbf{y} + \mathbf{P}*\mathrm{prior}^{-1},\boldsymbol{\mu}*\mathrm{prior}\Bigr).  \end{align}
$$

이는 최소자승의 정규방정식에 사전항을 반영한 형태다. 사전분포가 $\boldsymbol{\beta} \sim \mathcal{N}(0, \alpha^{-1}\mathbf{I})$ (정규분포 평균 0, 공분산 $\alpha^{-1}\mathbf{I}$)라면, Ridge 회귀와 사실상 동일해진다. 센서 퓨전에서 어떤 파라미터들이 특정 범위로 제한되어야 한다면, 이렇게 MAP 접근을 통해 자연스럽게 정칙화 효과를 얻을 수 있다.

#### 센서 특성 학습(Adaptive Weighting)

센서 성능이 고정된 것이 아니라 시간이나 환경에 따라 변할 수 있는 상황에서는, 측정 잡음 공분산 $\mathbf{R}(t)$를 실시간 추정(학습)하여 가중치를 갱신할 수도 있다. 예를 들어,

* 온도나 습도 등 외부환경이 달라지면 센서 분산이 달라질 수 있다.
* 센서 드리프트(drift), 노화(aging)에 따라 측정 품질이 변할 수 있다.
* 충격(shock) 등의 외란이 일시적으로 발생해 노이즈가 급등할 수 있다.

이럴 때는 각 시점에서 새로운 관측데이터의 잔차 통계를 분석해 $\mathbf{R}(t)$를 업데이트하고, 해당 정보를 기반으로 가중치 행렬을 조정해주는 적응형 가중 최소자승(Adaptive WLS) 방식을 구사할 수 있다. 이는 칼만 필터의 적응형 버전과 유사한 아이디어이며, 실시간 센서 퓨전에서 잘 쓰이는 전략 중 하나다.

#### 대안적 가중치 계산: M-추정에서의 반복 가중

강인(robust) 추정에서 사용하는 M-추정(M-estimator) 접근도, IRLS 방식을 반복할 때 단계별로 가중치를 계산한다. 예를 들어 Huber 손실 함수를 사용할 경우, 잔차 $r\_i$의 크기가 작을 때는 오차를 제곱과 유사하게 취급하고, 일정 임계값 이상 커지면 제곱보다 낮은 비율로 증가시킨다. 각 단계에서 잔차에 따라 가중치 $w\_i$가 달라지며, 이를 통해 이상치나 거대오차가 최소자승 결과를 지배하지 않도록 방지한다.

이처럼 다양한 "가중 계산"이 가능하며, 센서 퓨전에서 특정 상황(예: 충격, 간헐적 이상치)마다 다른 가중 함수를 적용하도록 설계하기도 한다.

#### 실제 로봇 센서 융합 예: (IMU + GPS) 보정

간단한 C++ 코드 예시로, IMU 관성 측정치와 GPS 위치 측정치를 결합해 오프라인에서 정적 파라미터(예: IMU 스케일 팩터, 바이어스, GPS 오프셋 등)를 최소자승 방식으로 구한다고 해보자. (이는 아주 단순화한 예시이다.)

```cpp
#include <iostream>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;

int main()
{
    // 예: X: (n x m), y: (n x 1), W: (n x n)
    // n: 데이터 포인트 개수, m: 추정 파라미터 개수
    // 여기서는 단순히 2차원 문제 예시
    
    MatrixXd X(4, 2); 
    X << 1, 0,
         1, 1,
         1, 2,
         1, 3;
    
    VectorXd y(4);
    y << 0.1, 1.1, 2.0, 2.9;
    
    // 가중치 (센서 노이즈 분산이 서로 다르다고 가정)
    MatrixXd W = MatrixXd::Zero(4,4);
    W(0,0) = 1.0/0.01;
    W(1,1) = 1.0/0.01;
    W(2,2) = 1.0/0.04;
    W(3,3) = 1.0/0.04;
    
    // (X^T W X) beta = X^T W y
    MatrixXd A = X.transpose() * W * X; 
    VectorXd b = X.transpose() * W * y;
    
    // 가중 최소자승 해 (beta)
    VectorXd beta = A.ldlt().solve(b); // or A.inverse()*b
    
    cout << "Weighted LS solution: " << beta.transpose() << endl;
    
    // 비가중
    MatrixXd A0 = X.transpose()*X;
    VectorXd b0 = X.transpose()*y;
    VectorXd beta0 = A0.ldlt().solve(b0);
    cout << "Ordinary LS solution: " << beta0.transpose() << endl;
    
    return 0;
}
```

현실적인 로봇 센서융합에서는 $X$와 $y$가 더 복잡한 형태(비선형, 다차원)이며, 실제로 측정된 IMU, GPS, Magnetometer 데이터 등을 바탕으로 관측모델을 구성한다. 오차공분산도 3×3(가령 3축 위치) 혹은 6×6(위치+속도) 블록 대각을 가질 수 있고, 그 역행렬을 $\mathbf{W}$로 사용한다. 만일 스케일 보정, 편향 보정 등이 포함되면, 모델 방정식도 그에 맞게 확장한다.

#### 결합 추정과 검증: χ² 테스트

센서 퓨전에서 가중 최소자승 혹은 GLS 해를 구하면, 잔차(가중 잔차 포함)가 특정 통계분포를 따른다는 가설을 검사하는 방법도 있다. 예를 들어, 잡음이 가우시안이고 $\mathbf{R}$를 정확히 알고 있다고 치면,

$$
(\mathbf{y}-\mathbf{X}\hat{\boldsymbol{\beta}})^\mathsf{T} \mathbf{R}^{-1} (\mathbf{y}-\mathbf{X}\hat{\boldsymbol{\beta}})
$$

이 대략적으로 $\chi^2$ 분포를 따른다고 볼 수 있다. 이를 통해 센서 모델의 적합성이나, 모형 내 이상치 존재 여부를 통계적으로 검증한다. 특정 임계값을 넘어가는 큰 잔차가 계속 발견되면, 센서 데이터에 이상이 있거나 공분산 추정이 잘못되었음을 의심해야 한다.

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

센서가 배출하는 측정값이 스칼라가 아니라 벡터(예: 3D 포지션, 3축 자이로, 이미지에서 추출된 특징 등)일 경우, 한 번의 측정으로 여러 행을 관측행렬에 추가하거나, 혹은 측정별 블록행렬을 구성한다. 공분산 행렬 역시 해당 측정 벡터 차원에 대응하는 블록 형태가 된다.

예를 들어, 카메라가 한 번에 2D 픽셀좌표 $(u,v)$를 측정한다면, 그에 대한 공분산 $\mathbf{R}\_{(u,v)}$를 쓰고, 관측 모델은 비선형 투영식을 통해 $(u,v)$와 추정 파라미터를 연결한다. 이 경우에는 비선형 LS 혹은 BA(Bundle Adjustment) 형태로 문제를 풀어야 한다.

***

센서 퓨전에서 "최소자승법(LS)과 가중치 적용"은 다양한 형태(선형/비선형, 배치/온라인)로 발전되어 왔고, 여기에 통계적 검정, 정칙화, 이상치 검출, 베이지안 기법, 수치적 안정성 개선 등 부가적인 요소들이 결합된다. 모든 센서 퓨전 시스템은 결국 "어떻게 측정 노이즈를 모델링하고, 관측 방정식을 구성하며, 적절한 방식으로 추정할 것인가"라는 공통된 문제를 해결하기 위해, LS를 기본 축으로 하여 여러 변형 기법을 활용하고 있다.
