주어진 점집합을 기술하는 직선을 얻는 방법 중에 하나로 각각의 점들이 직선에서 벗어난 거리의 제곱을 더한 값(square of residual)을 최소화시키는 기울기와 절편을 찾는 최소자승법(least square method: linear regression)이 있다. 점집합이 $\{(x_i, y_i\}$를 직선 $y=ax +b$로 피팅을 하는 경우 직선에서 벗어난 정도(residual)는 직선까지의 거리를 사용할 수도 있고 또는 $y$ 값의 차이를 이용할 수도 있다. 먼저 해를 closed form으로 쓸 수 있는 $y$ 값의 offset을 residual로 사용하자. 그러면 fitting error는 각 점에서 residual의 제곱의 합으로 주어진다. 

$$ R^2(a, b) = \sum_i  \left| y_i - (ax_i + b) \right|^2 $$

여기서 주어진 점집합의 moment를 $$ S_{xx} = \sum x_i^2 , ~S_{yy} = \sum y_i^2, ~S_{xy} = \sum x_i y_i, ~S_x = \sum x_i, ~S_y = \sum y_i$$로 놓으면 

\begin{align}   R^2(a,b) &= S_{yy} + a^2 S_{xx} + n b^2 - 2a S_{xy} + 2ab S_x - 2 b S_y\end{align}

이다. 주어진 점집합을 피팅하는 직선의 파라미터는 타원의 방정식으로 주어짐을 알 수 있고, 주워진 타원상의 임의의 파라미터에 해당하는 직선의 fittign error는 항상 일정한 값을 가짐을 알 수 있다.

좌표의 원점을 각 성분의 평균값만큼 이동하면 $S_x = S_y = 0$이 되어 더 식이 단순해진다. 분산
$$ \sigma_x^2 = \frac{1}{n} S_{xx} - \bar{x}^2 ~\to ~\sigma_{x}^2  =\frac{1}{n} \vec{x}\cdot \vec{x}\\  \sigma_y^2 = \frac{1}{n} S_{yy} - \bar{y}^2 ~\to~ \sigma_y^2 = \frac{1}{n} \vec{y}\cdot \vec{y}$$ 공분산

$$\text{cov}(x,y)= \frac{1}{n} S_{xy} - \bar{x}\bar{y} \to \text{cov}(x,y) = \frac{1}{n} \vec{x}\cdot\vec{y}$$

을 써서 표현하면,

\begin{align} R^2 &= n\sigma_x^2 a^2 -2n \text{cov}(x,y) a + n b^2 + n \sigma_y^2 \\ &=n \sigma_x^2 \left( a - \frac{\text{cov}(x,y)}{\sigma_x^2 } \right)^2 + n b^2 + n \frac{\text{cov}(x,y)^2}{\sigma_x^2} + n \sigma_y^2 \\ &\ge n \frac{\text{cov}(x,y)^2}{\sigma_x^2} + n \sigma_y^2   \end{align} 

따라서 residual을 최소로 만들어 주는 직선의 기울기 $a$와 $y-$절편 $b$는

\begin{align} a &= \frac{\text{cov}(x, y) }{\sigma_x^2 } \\ b&=0\end{align}

로 주어지는데, 이 직선은 원점을 통과하는 직선이 된다. 원래의 좌표계로 돌아가면 기울기는 원점의 이동에 무관하므로 변화가 없고 직선이 $(\bar{x}, \bar{y})$을 통과해야 하므로 절편 $b$값은

$$b = \bar{y} - a \bar{x}$$

로 주어진다. 상관계수 $r(x,y)$를 이용하면 Fitting이 잘된 정도를 정량적으로 표현이 된다.

$$ r = \frac{\text{cov}(x,y) }{\sqrt{ \sigma_x^2  \sigma_y^2 } }$$

즉,

$$ R = n\sigma_y^2 ( r^2 + 1)$$

로 주어진다.

728x90

'Image Recognition > Fundamental' 카테고리의 다른 글

Ellipse Fitting  (0) 2024.03.02
Bilateral Filter  (0) 2024.02.18
영상에 Impulse Noise 넣기  (2) 2023.02.09
Canny Edge: Non-maximal suppression  (0) 2023.01.11
Statistical Region Merging  (0) 2022.06.11
Posted by helloktk
,