주어진 데이터를 잘 피팅하는 직선을 찾기 위해서는 데이터를 이루는 각 점의 $y$ 값과 같은 위치에서 구하려는 직선과의 차이 (residual)의 제곱을 최소화시키는 조건을 사용한다. 그러나 직선의 기울기가 매우 커지는 경우에는 데이터에 들어있는 outlier에 대해서는 그 차이가 매우 커지는 경우가 발생할 수도 있어 올바른 피팅을 방해할 수 있다. 이를 수정하는 간단한 방법 중 하나는 $y$값의 차이를 이용하지 않고 데이터와 직선 간의 최단거리를 이용하는 것이다.
이다. 따라서 주어진 데이터에서 떨어진 거리 제곱의 합이 최소인 직선을 구하기 위해서는 다음을 최소화시키는 $\theta, s$을 구해야 한다. $$ L = \sum_i \big( \sin \theta x_i - \cos \theta y_i +s \big)^2 $$$$ (\theta, s)=\text{argmin}(L)$$
주어진 데이터의 질량중심계에서 계산을수행하면 $\sum_i x_i = \sum_i y_i =0$ 이므로 데이터의 2차 모멘트를 $$ A= \sum_i (x_i^2 - y_i^2), \qquad B = \sum_i x_i y_i $$로 놓으면 직선의 파라미터를 결정하는 식은
$$ \frac{1}{2} A \sin 2 \theta - B \cos 2 \theta = 0 \qquad \to \quad \tan 2\theta = \frac{2B}{A} \\ s = 0$$
두 번째 식은 직선이 질량중심(질량중심계에서 원점)을 통과함을 의미한다. 첫번째 식을 풀면
이 결과는 데이터 분포에 PCA를 적용해서 얻은 결과와 동일하다. PCA에서는 공분산 행렬의 고유값이 큰 쪽에 해당하는 고유벡터가 직선의 방향을 결정했다. https://kipl.tistory.com/211. 또한 통계에서는 Deming regression이라고 불린다.
일반적인 conic section 피팅은 주어진 데이터 $\{ (x_i, y_i)\}$를 가장 잘 기술하는 이차식
$$F(x, y) = ax^2 + bxy +cy^2 + dx +ey +f=0 $$
의 계수 ${\bf u^T}= (a,b,c,d,e,f)$을 찾는 문제이다. 이 conic section이 타원이기 위해서는 2차항의 계수 사이에 다음과 같은 조건을 만족해야 한다.
$$\text{ellipse constraint:}~~ ac - b^2/4 >0$$
그리고 얼마나 잘 피팅되었난가에 척도가 필요한데 여기서는 주어진 데이터의 대수적 거리 $F(x,y)$을 이용하자. 주어진 점이 타원 위의 점이면 이 값은 정확히 0이 된다. 물론 주어진 점에서 타원까지의 거리를 사용할 수도 있으나 이는 훨씬 복잡한 문제가 된다. 따라서 해결해야 하는 문제는
을 최소화시키는 계수 벡터 $\bf u$를 찾는 것이다. 여기서 제한조건으로 $4ac - b^2 =1= \bf u^T C u$로 설정했다.
$\bf u^T$에 대해서 미분을 하면
$$ \frac{\partial L}{\partial \bf u^T} = \bf S u -\lambda C u=0$$
즉, 주어진 제한조건 $4ac - b^2=1$하에서 대수적 거리를 최소화시키는 타원방정식의 계수 $\bf u$를 구하는 문제는 scattering matrix $\bf S=D^T D$에 대한 일반화된 고유값 문제로 환원이 된다.
$$ \bf S u =\lambda C u \\ u^T C u =1$$
이 문제의 풀이는 직전의 포스팅에서 다른 바 있는데 $\bf S$의 제곱근 행렬 $\bf Q=S^{1/2}$를 이용하면 된다. 주어진 고유값 $\lambda$와 고유벡터 $\bf u$가 구해지면 대수적 거리는 $$\bf u^T S u = \lambda$$
이므로 이를 최소화시키기 위해서는 양의 값을 갖는 고유값 중에 최소에 해당하는 고유벡터를 고르면 된다. 그런데 고유값 $\lambda$의 부호별 개수는 $\bf C$의 고유값 부호별 개수와 동일함을 보일 수 있는데 (Sylverster's law of inertia), $\bf C$의 고유값이 $\{-2,-1,2,0,0,0\}$이므로 $\lambda>0$인 고유값은 1개 뿐임을 알 수 있다. 따라서 $\bf S u = \lambda C u$를 풀어서 얻은 유일한 양의 고유값에 해당하는 고유벡터가 원하는 답이 된다.
$\bf S$가 positive definite 행렬이고, $\bf C$는 대칭행렬일 때 아래의 일반화된 eigenvalue 문제를 푸는 방법을 알아보자. $$\bf S u = \lambda C u$$
타원을 피팅하는 문제에서 이런 형식의 고유값 문제에 부딛히게 된다. 이 경우 $\bf S$는 scattering matrix이고, $\bf C$는 타원피팅에 걸리는 제한조건때문에 나온다. $\bf S$가 positive definite이므로 $\bf S$의 eigenvalues $\{\sigma_i > 0 \}$는 모두 0보다 크고, eigenvector를 이용하면
$$ \bf S = R \Lambda R^T, ~~~~\Lambda=\text{diag}(\sigma_1, ...,\sigma_n)$$
처럼 분해할 수 있다. $\bf R$은 $\bf S$의 eigenvector를 열로 가지는 행렬로 orthogonal 행렬이다: $\bf R^{-1}=R^T$.
이제 $\bf S$의 제곱근 행렬을 $\bf Q, ~Q^2 =S$라면
$$ \bf Q= R \Lambda^{1/2} R^T,~~~~\Lambda^{1/2} = \text{diag}( \sqrt{\sigma_1},...,\sqrt{\sigma_n})$$
임을 쉽게 확인할 수 있다. $\bf Q$을 이용하면 구하려는 고유값 문제는
$$ \bf QQ u = \lambda Cu ~\to ~ Qu = \lambda Q^{-1} C Q^{-1}Qu~~\to ~~ v = \lambda Q^{-1} C Q^{-1} v$$
이므로 $\bf Q^{-1} C Q^{-1}$의 고유값 문제 $(1/\lambda, \bf Qu)$로 단순화됨을 알 수 있다. $\bf Q$의 역행렬이 $\bf Q^{-1} = R \Lambda^{-1/2}R^T$임을 쉽게 체크할 수 있으므로 직접적으로 역행렬을 계산할 필요가 없어진다.