[Linear Algebra] Lecture 16 투영행렬(Projection matrix)과 최소자승법(Least Square method)
우리는 지난시간에 투영(Projection)에 대해 공부하였다. 이는 해가 존재하지 않는 Overdetermined case의 선형방정식에 대한 근사해(approximate solution)를 구하는 것이 목적이며 x hat을 근사해로써 구했다. 이제 해야 할 일은 이 투영을 어떻게 응용할 수 있는지를 알아보는 것이다. 우리는 이 투영에 대한 응용으로써 최소자승법(Least square method)을 공부해볼 것이다. 먼저 지난 강의 Lecture 15에서 배운 내용 중 투영행렬(Projection matrix)에 대해 간략히 살펴보도록 하자.
1. 투영(Projection)
- Two extreme cases
벡터의 투영에 대해 두 가지 극단적인 경우를 살펴보자.
지난 강의에서 배운 것과 같이 투영 행렬의 식은 다음과 같다.
투영 행렬(Projection matrix)은 말 그대로 어떤 벡터를 다른 어떤 공간으로 투영시키는 것을 의미한다. 즉 곱해지는 벡터 b를 column space에 존재하는 벡터 중 가장 가까운 점, 가장 가까운 벡터로 바꿔주는 역할을 한다. 그렇다면 이러한 경우엔 어떨까? 벡터 b가 이미 column space에 존재한다면? 혹은 벡터 b가 column space와 수직(perpendicular)이라면? 이러한 두 가지 극단적인 경우의 벡터에 대해 투영 행렬을 곱해주면 어떤 결과가 발생할까?
먼저 이미 벡터 b가 column space에 존재하는 경우를 살펴보자. 이때는 투영 행렬 P에 b를 곱하면 그대로 b를 얻는다. 즉
b는 column space상에 존재하는 벡터라고 했다. 그렇다면 일반적으로 column space상에 존재하는 벡터는 어떻게 나타내는가? 바로 column vector들의 선형 조합(Linear combination)으로 표현한다. 이것을 표현한 것이 바로 Ax다. x의 각 원소들이 A의 column vector에 계수로 곱해져서 선형 조합이 되는 것이다. 식 (1)에다 b, 즉 Ax를 곱하면 식의 가운데 부분이 캔슬되어 결국 그대로 b만 남는다. 결과적으로 투영행렬이 이미 column space에 존재하는 벡터 b를 그대로 유지시킨 것이다.
다음으로 벡터 b가 column space와 수직(perpendicular)인 경우는 투영 행렬 P에 b를 곱하면 그 결과는 0이 된다.
식 (3)의 경우엔 왜 이러한 결과가 나올까? 이는 부분 공간(subspace)과 연관이 있다. Pb=0이 된다는 것은 b가 column space가 아닌 다른 공간에 존재한다는 것이다. 그렇다면 그 다른 공간은 어떤 공간인가? 바로 Left null space이다. 우리는 Lecture 14에서 Left null space는 column space와 수직임을 배웠다. 따라서 column space에 수직인 b는 곧 Left null space에 존재하는 것이다.
또한 투영 행렬 P와 벡터 b를 곱한다는 것은 P의 row vector들과 b의 column vector와의 내적(dot product)을 의미한다. 이때 P는 여러 개의 row vector가 될 것이므로 결국 P의 row space와 직교한 것이고 그 결과는 0이 된다. 직교할 때 column space에서 b와 가장 가까운 벡터는 영벡터(zero vector)뿐이다. 결과적으로 투영 행렬이 벡터 b를 없애버린 셈이다.
위의 내용을 그림을 이용해 이해해보자.
Fig. 1 Column space와 Left null space사이에서 벡터 b의 관계
Fig. 1에서 파란색 벡터 b가 바로 column space에 존재 하지 않는 b이다. 이 벡터 b를 column space에 투영한 벡터가 바로 빨간색 벡터 p가 되고, 투영 행렬 P에 벡터 b를 곱하여 p=Pb를 통해 투영시킨다.
반대로 Left null space에 투영 시킨 벡터가 보라색 벡터인 e가 되며, e는 단위행렬에서 투영행렬을 뺀 (I-P)행렬에 b를 곱하여 투영시킨다. (I-P)는 P행렬로 투영시키는 공간과 직교하는 공간으로 투영시키는 역할을 한다. 이미 배운 것과 같이 P는 대칭(symmetric)이며 $P^2=P$이다. $(I-P)$역시 대칭이며, ${(I-P)}^2=(I-P)$를 만족한다.
벡터 p와 e를 더하면 b가 된다. 즉 b=p+e이고 각 벡터를 투영 행렬과의 곱으로 표현하면 아래와 같다.
요약하자면 p는 column space에, e는 column space와 직교(perpendicular)인 Left null space에 각각 존재하며, 벡터 b는 이들 두 공간에 존재하거나 혹은 그 사이에 존재할 수 있다. b는 투영행렬 P와의 곱인 p=Pb를 통해 p가 되고, e=(I-P)b를 통해 e가 된다.
2. 최소자승법(Least Square Method)
- Basics of Least Square
우리가 배웠던 투영(Projection)은 미지수(unknown)보다 방정식(equation)이 더 많아서 이를 만족시키는 해가 존재하지 않을 때, 주어진 모든 방정식을 최대한 만족시키는 일반화된 해를 찾는 것이 그 목적이다. 그렇다면 어떠한 경우에 우리는 방정식이 미지수보다 많을 수 있을까? 바로 센서 들과 같은 장치로부터 많은 수의 데이터를 수집한 경우이다. 이때 얻은 많은 데이터들은 방정식의 계수로써 표현할 수 있고, 각 데이터들의 차원이 바로 미지수가 된다. 즉 수집한 데이터들을 기반으로 해당 시스템의 일반화된 표현식을 구하는 것이다.
최소자승법(Least Square Method)은 수집한 데이터를 기반으로 이들 모두를 최대한 만족시키는 하나의 Line에 대한 식을 찾는 방법이다. 이렇게 찾은 Line을 통해 우리는 데이터에 대한 예측 뿐만 아니라 시스템의 특성까지 파악할 수 있다. 최소자승(Least square)이라는 말의 의미를 이해한다면 훨씬 느낌이 와 닿을 것이다. 이에 대해서는 잠시 후에 설명하기로 하고 먼저 아래와 같이 3개의 데이터를 얻었다고 가정해보자.
Fig. 2 주어진 3개의 데이터 (1,1) (2,2) (3,2)
주어진 3개의 데이터는 (1,1) (2,2) (3,2)이다. 가로 축을 시간 t라고 하고 시간에 따라 얻은 데이터라고 생각해보자. 세로축은 b, 혹은 y이고 해당 시간에 얻은 실제 데이터 값으로 생각하자. (1,1)은 1초에 얻은 데이터의 값이 1이고, (3,2)는 3초때에 얻은 데이터의 값이 2라는 의미다. 여기서 우리가 하고자 하는 것은 저 데이터들을 잘 표현할 수 있는 하나의 직선(Line)을 찾는 것이다. 본격적으로 방법을 알아보기 전에 이 질문에 대해 한 번 생각해보자.
왜 이러한 직선을 찾으려고 할까? 바로 시스템의 특성에 대한 분석과 미래 예측이 목적이다. 주어진 데이터가 주가의 시간에 따른 변화라고 가정해보자. 이때 최소자승법을 이용하여 데이터 집합을 잘 나타내는 Line을 찾으면 그 Line의 기울기 등을 통해 현재 상태를 파악할 수 있다. 또한 아직 획득하지 못한 미래의 데이터를 예측할 수도 있다. 물론 실제 문제는 이보다 훨씬 복잡하고 Line이 아닌 n차 방정식의 curve fitting을 활용해야 할 것이다. 어쨋든 최소자승법의 기본적인 목적은 분석과 예측이다.
다시 우리 문제로 돌아와서, 위의 데이터의 경향을 가장 잘 나타내는 Line을 찾으려면 중학교때 배웠던 y=ax+b의 직선의 방정식의 파라미터인 a와 b를 찾으면 된다. 그러나 문자 표기가 좀 헷갈릴 수 있으니 우리 문제와 맞추기 위해 표기를 아래와 같이 조금 바꿔보도록 하자.
y->b, a->c, x->t, b->d로 각각 바뀌었다. 우리가 현재 알고 있는 값은 변수에 해당하는 t와 b이다. t와 b값들의 집합을 가지고 직선을 표현하는 파라미터인 c와 d를 찾아내야 한다. 이를 위해선 먼저 위 식을 Ax=b의 꼴로 나타내고 투영 행렬의 해를 구했을 때 처럼 x에 대해서 풀어주면 된다. 참고로 Ax=b에서의 x는 x=[c d]T를 나타낸다. 결과적으로 주어진 데이터를 기반으로 Ax=b의 식으로 표현하면 된다. 우리의 최종 목표는 직선을 나타내는 파라미터인 x를 알아내는 것이고, 이를 위해 행렬 A만 알아내면 거의 끝난 것이나 다름 없다.
주어진 데이터(Fig. 2)와 식 (5)를 통해 우리는 3개의 방정식을 만들어낼 수 있다. 식 (5)의 t와 b에 Fig. 2의 주어진 데이터를 넣으면 다음과 같이 3개의 방정식을 만들 수 있다.
이제 식 (6)의 3개의 방정식을 Ax=b의 꼴로 만들면 아래와 같다.
식 (7)의 곱셈을 실제 수행하여 풀어써보면 다시 식 (6)과 같이 되는 것을 볼 수 있다.
자 이제 행렬 A를 구했으니 거의 다 된 셈이다. 다시 한 번 말하지만 식 (7)은 미지수(unknown)보다 방정식(equation)이 많은 overdetermined case이다. 행렬 A의 column1과 column2는 독립(independent)이며 또한 column space의 기저(basis)이다. 그러나 우변의 벡터 b는 column space에 존재하지 않는다. 따라서 이 식을 완벽하게 만족시키는 해 x=[c d]T는 존재하지 않는다. 다만 가장 근사한 해, best solution을 구할 뿐이다. 실제 해를 구하는 방법은 Ax=b의 양변에 A transpose를 각각 곱해주면 된다. 즉
이 식 (8)을 이용하는 것이다. 지난 강의에서 많이 봤던 식일 것이다. 위의 식이 잘 이해가 가지 않는 사람은 반드시 Lecture 15를 공부하고 오길 바란다.
어쨋든 완벽한 해가 존재하지 않는 다는 것은 Fig. 2를 기준으로 설명하자면 각 데이터 포인트들을 모두 완벽하게 관통하는 직선은 존재하지 않는 다는 것이다. 다만 각각의 데이터와의 에러를 최소화 하는 직선은 찾을 수 있다. 결국 각 데이터와 직선 사이의 에러의 총합이 최소가 되게끔 하는 선을 찾는 것이 우리가 찾고자 하는 것이다. 이것이 선을 결정 짓는 조건이다.
그렇다면 구체적으로 여기서 말하는 에러(error)가 무엇일까? 식 (6)을 보면 우리는 주어진 3개의 데이터를 이용하여 3개의 방정식을 만들어냈다. 이때 c와 d에 대한 파라미터 값을 추정했다고 가정했을 때, 각각의 식에 대입하여 계산하면 좌변의 값이 나올 것이다. 이 좌변의 값과 우변의 b값 사이의 차이를 계산한 것이 여기서 말하는 에러(error)이다. 이때 중요한 것은 이 에러 값은 제곱을 해줘야 한다. 왜냐하면 에러 값으로 음수가 나올 경우도 있는데, 이 경우 값이 상쇄되어 에러 값이 0이 나올 경우도 있기 때문이다. 실제로는 에러가 엄청 큰데도 말이다. 따라서 음수 값이 나오지 않도록 항상 에러 값을 제곱해준다.
이렇게 3개의 모든 방정식의 에러 값을 더했을 때 최종 에러값의 크기를 가장 작게 만드는 c와 d를 찾는 것이다. 이를 식으로 표현하면 아래와 같다.
식 (9)를 식 (6)의 방정식을 이용해 기술하면
와 같을 것이다. 이렇게 세운 식을 미적분학(calculus)을 적용하여 해를 구할 수도 있다. 즉 자승(square)은 2차식이고, 이를 두 변수인 c와 d로 각각 편미분(partial derivative)하여 식을 =0의 꼴로 정리하면 c와 d에 대한 식을 구할 수 있다(2차식의 기울기가 0인 부분이 최소값을 갖는 성질을 이용). 이 부분은 인터넷에 자료가 많이 있으며 나중에 기회가 되면 다루도록 하겠다.
우리는 이미 식(6)을 식 (7)과 같이 Ax=b의 꼴로 만들었다. 에러를 최소화 시키는 (9)를 (7)에 대해서 정리하면 식은 아래와 같이 될 것이다. 식 (7)의 우변의 b를 좌변으로 이항하고, 이에 대한 길이를 구하고(norm-2) 이를 제곱해주면 된다.
Ax-b의 결과는 error 벡터가 나올 것이고, 이 벡터에 대한 길이는 에러의 총 크기를 나타낼 것이다. 이 에러 벡터에 대한 길이는 식 (9)에서 j=1 ~ m 각 방정식의 에러의 값들의 총 합과 같은데, (9)에서는 음수가 나오지 않도록 제곱을 해줬다. (10)에서도 같은 이유로 제곱을 해주는데, 사실 벡터의 길이를 2-norm으로 계산하면 루트(square root)가 씌워져서 나온다. 이 루트를 제거해주기 위한 이유로 제곱을 해주는 것도 있다.
여기서 우리는 최소자승법(Least square method)의 의미를 파악할 수 있다. 최소(Least)라는 말은 Ax와 b사이의 에러를 최소화 해주기 위함을 의미하고, 자승(square)은 식 (10)에서 제곱함을 의미한다. 정의하자면...
최소자승법(Least Square Method) "주어진 모든 데이터에 대해서, 예측된 값(predicted value)과 실제 측정된 값(measured value) 사이의 에러(error)의 제곱의 합(squared sum)을 최소화(minimize) 해주는 파라미터(parameter)를 찾는 방법" |
정도로 정의할 수 있겠다.
그렇다면 이 에러 벡터가 실제 그림에선 어떤 부분을 의미할까? 아래 그림을 살펴보자.
Fig. 3 최소자승법을 통한 Line fitting
Fig. 3 은 Fig. 2의 데이터를 이용해 Line의 파라미터를 추정하고 이를 통해 Line을 표현한 모습이다. 붉은색 점은 원래 측정된 점들을 의미하고, 파란색 점은 Line fitting을 통해 예측된 점, 즉 측정된 점들과 이 점들이 Line에 수직(vertical)방향으로 대응되는 점들이다. 녹색 선은 측정값 b와 예측값 p사이의 에러(error)를 나타낸다. e=[e1 e2 e3]T에서 e1, e2, e3는 스칼라(scalar)값이며 총 에러는 각 에러의 자승(square)의 합으로 표현할 수 있다.
식 (11)에 나타난 에러의 총 합이 우리가 최소화 하고자 하는 에러값이다.
우리는 주어진 데이터를 이용하여 데이터들의 추세를 파악하고 예측한다. 이것은 통계학(statistics)의 한 부분으로도 볼 수 있으며 통계학 용어로는 회귀(regression)라고 부른다. 즉 이미 주어진, 혹은 측정한 데이터를 기반으로 데이터의 경향을 파악하고 미래를 예측하고자 하는 것이며 같은 목적성을 지니고 있다. 최소자승법은 결국 주어진 데이터를 이용해 회귀(regression)를 한 것이다. 여기서는 Line을 이용하여 fitting을 했기 때문에 선형 회귀(Linear regression)를 한 것이다.
- Outliers in Least square
Fig. 3과 같이 데이터가 분포해 있을 경우엔 최소자승법이 대체적으로 데이터의 추세를 잘 반영하는 듯 보인다. 그러나 어떤 통계학자들은 최소자승법에 우려를 표했는데, 그것은 바로 어떤 한 점이 다른 대부분의 점들과 동떨어져 있을때이다. 이렇게 어떤 데이터가 동떨어져서 측정되는 경우는 그것이 실제 제대로된 측정값일 수도 있으나 대체적으로 쓸모없는 값, 즉 노이즈 데이터일 경우가 많다. 이렇게 다른 대부분의 데이터들의 분포에서 큰 거리를 두고 측정되는 소수의 데이터들을 우리는 아웃라이어(Outlier)라고 한다. 이러한 아웃라이어들은 대부분 잡음(noise)일 경우가 많다.
Fig. 3의 데이터에 (0, 3)의 아웃라이어가 추가되면 보라색 라인은 어떻게 될까? 최소자승법은 모든 데이터에 대한 에러를 최소화 하는 방향으로 파라미터가 결정된다. 이때 당연히 아웃라이어와의 에러도 최소화 해야 하므로 Fig. 3과는 상당히 다른 양상을 보일 것이다. 아래 그림과 같이 말이다.
Fig. 4 아웃라이어가 존재할 경우 최소자승법
Fig. 4는 (0, 3)의 아웃라이어가 존재할 경우 최소자승법을 보여주고 있다. 아웃라이어와의 에러까지 고려하다보니 Fig. 3와는 라인의 위치가 상당히 차이가 난다. 아웃라이어때문에 결국 전체적인 데이터의 경향을 잘 반영하지 못하게 되었다. 이를 overcompensate이라 한다. 이러한 아웃라이어에 따른 overcompensate문제를 해결하기 위한 RANSAC(Random Sample Consensus)등의 방법이 존재한다. 그러나 우리는 이러한 아웃라이어가 있다는 것 정도만 알고 이번 포스팅에서는 더 이상 다루지 않겠다.
- Solution of Least square
Fig. 3은 식 (7)의 해를 구하여 라인을 표시한 것이다. 식 (7)을 다시 꺼내보자.
행렬 A의 column vector는 독립(independent)이며 column space의 기저(basis)이다. 그러나 b벡터는 이 column space에 존재하지 않기 때문에 Ax=b의 해는 존재하지 않는다. 정확한 해는 존재하지 않지만 해를 구하기 위해선 b를 column space로 투영시키면 된다. b를 column space로 투영시킨 벡터를 p라고 하면 Fig. 3에 존재하는 빨간 점들 p1, p2, p3는 바로 벡터 p=[p1 p2 p3]가 된다. 즉 원래의 측정된 벡터 b=[b1 b2 b3]를 column space로 투영 시킨 벡터가 p=[p1 p2 p3]이다. 이때 p는 Fig. 3에서 직선 위에 존재하는 점들이다. 즉 b와 p를 Fig. 3에서는 점(p1, p2, p3)으로 보고 Fig. 1에서는 벡터 b와 p로 이해하면 된다.
벡터 p는 A의 column space로 투영시킨 것이기 때문에 해가 존재한다. b를 p로 투영시켰기 때문에 식(7)은 아래와 같이 바뀐다.
정확한 해가 아니라 최적해(best solution)이기 때문에 x에 hat을 붙여준다. 다시 한 번 말하자면 x hat은 해를 정확하게 만족시키는 직선이 아니다. 원래 다른 공간에 존재하던 b를 column space의 가장 근접한 위치로 끌고온 뒤 구한 해, 즉 추정된 해, 가장 근사한 해(estimated solution)를 의미한다.
이제 식 (7)에 대한 x hat을 구해보도록 하자. Ax=b의 양변에 A transpose를 곱해주자.
위의 식을 일반적인 방정식으로 만들면 다음과 같다.
이제 남은 것은 위의 방정식을 가우스 소거법을 활용하여 실제 해를 구하는 것이다. 계산하기에 식이 약간 귀찮게 되었지만 일단 해보자. pivot은 14이고 pivot아래의 원소를 없애야 하므로 6c를 소거해야한다. 첫 번째 방정식에 6/14를 곱하여 두 번째 방정식에서 빼주면 d=2/3을 얻고, 후방대입법(back substitution)을 통해 c=1/2라는 것을 알아낼 수 있다.
이렇게 하여 $\hat{x}={[\hat{c} \; \hat{d} ]}^T$를 구하였다. 따라서 최적의 라인(Line)에 대한 방정식은 다음과 같다.
이제 Fig. 3의 p의 실제 값들을 구해보자. t=1, 2, 3을 각각 대입해주면 p1=7/6, p2=5/3, p3=13/6을 얻는다.
다음으로 에러를 구해보자. 에러는 e=b-p이므로 b=1, 2, 2에서 p1, p2, p3를 각각 빼주면된다. 이를 정리하면 아래와 같다.
위에서 계산한 p와 e를 Fig. 3에 표현해보자.
Fig. 4 최소 자승법의 p와 e의 값
이렇게 하여 주어진 데이터들을 이용하여 방정식을 세우고 최소자승법을 이용하여 이 데이터들을 가장 잘 근사하는 라인을 찾아내었다.
- Error vector
앞서 우리는 최소자승법을 이용하여 데이터의 경향을 최대한 잘 반영하는 직선(Line)을 찾았다. 여기서 좀 더 깊은 이해를 위해 에러(error) 벡터에 대해 알아보자.
식 (4)와 같이 원래의 데이터 값인 b벡터는 에러 벡터 e와 투영 벡터 p의 합으로 이루어져 있다. 즉 b=e+p이다. Fig. 4를 기준으로 보면 당연하다. 투영된 값인 p에 에러 e를 다시 더하면 원래의 b가 된다. 이것을 개개의 데이터가 아닌 벡터의 기준으로 생각해보자. Fig. 1에서 p와 e는 직교(perpendicular)이다. 그렇다면 실제 값은 어떻게 될까? 식 (17)에서 구한 실제 p와 e의 값을 가지고 검증해보자.
p2는 계산의 편의를 위해 5/3 -> 10/6 으로 바꿨다. 우선 e+p의 결과가 b가 되는 것은 쉽게 덧셈을 해보면 알 수 있다.
e와 p가 실제로 직교하는지 알아보려면 어떻게 하면 될까? 바로 내적(dot product)을 통해 알 수 있다. 내적을 해보면...
-7/36 + 20/36 - 13/6 = 0 이 된다. 따라서 e와 p가 직교임을 확인하였다.
여기서 한 가지 중요한 사실은 e가 직교한 것은 p뿐만이 아니라는 것이다. 바로 p가 존재하는 column space전체와 직교한다. 다른 column 벡터와 내적을 통해 확인해보자. 다른 column vector의 예로는 A의 column space의 기저(basis)인 A의 column vector들과의 연산을 해보면 될 것이다. 실제로 계산을 수행해보면 0이 되어 직교하는 것을 확인할 수 있다.
에러 벡터 e가 기저 벡터들과 수직이기 때문에 결과적으로 column space와 수직이다.
3. MATLAB 구현
식 (7)을 최소자승법을 통해 해를 구하는 프로그램을 MATLAB으로 작성하였다. 아래 그림은 plot 결과이다.
Fig. 5 식 (7)의 최소자승법의 MATLAB 구현 결과
아래는 코드이다. 참고로 추가적인 데이터를 넣어서 돌려보고 싶다면 다음과 같이 하면 된다. 예를 들어 [2, -1]의 데이터를 새로 넣고 싶다면 A의 column 1의 마지막에 2를, column 2의 마지막은 1로, b의 마지막 부분에 -1을 추가해주면 된다.
4. 마치며
이번 강의에서는 투영(Projection)에 대해 리뷰를 하고 이를 응용한 최소자승법(Least square)에 대해 공부하였다. 최소자승법을 적용하는 데에 있어 이를 두 가지 관점에서 바라볼 수 있다.
첫 번째는 벡터의 관점, 두 번째는 데이터의 관점이다. 벡터의 관점에서 보자면 이는 투영과 깊은 관련이 있고 Fig. 1에서 원래의 벡터 b가 column space로 투영된 벡터 p가 된다는 것이다. 이것을 이용해서 최소자승법의 해를 구한다. 두 번째는 데이터의 관점이며 Fig. 4에서 처럼 직선의 방정식의 파라미터로써 나타난다. 그러나 실제로 해 자체를 구하는 것은 투영의 관점으로부터 출발하는 것이다. 즉 해가 존재하지 않는 상황에서 최적해(best solution)를 구하기 위해 투영의 개념을 이용하여 b를 column space로 투영시켜 p를 만들고 해를 구한 다음 이 해를 직선의 방정식의 파라미터로 이용하는 것이다.
Fig. 1과 Fig. 4는 같은 식으로 표현되는 두 가지 다른 형태의 그림이다. Fig. 1에서는 x(hat)=[c d]가 column vector의 선형 조합(Linear combination)으로 p를 표현하였고, Fig. 4에서는 x(hat)=[c d]가 직선을 표현하는 파라미터로써 이용되었다. 이 두 가지 관점을 잘 구분하여 이해하도록 하자. 중요한것은 투영의 개념으로부터 온 것이며, 표현된 방식이 다를 뿐 결국 같은 것을 나타낸다는 것이다.
결국 최소자승법은 다음의 핵심 방정식을 이해함으로써 해를 구할 수 있다.
식 (20.1)에서 x hat으로 식을 정리하기 위해선 $A^T A$가 역행렬이 존재(invertible)해야 한다. 역행렬이 존재하려면 아주 중요한 조건이 있는데 바로 A의 column vector들이 독립(independent)해야 한다는 것이다. column vector가 독립이 아니라면 역행렬이 존재하지 않고 결국 해를 구할 수 없다.
이러한 최소자승법은 통계학의 관점에서는 회귀(regression)의 한 방법으로 볼 수 있으며 선형 회귀(Linear regression)와 같다.
최소자승법은 해가 존재하지 않을 경우 가장 근접하는 최적해(best solution)를 구하고자 하는 것과,
수많은 데이터가 주어진 상황에서 데이터의 경향을 분석하고 예측하기 위한 도구로써의 목적성을 가진다.
이것들을 잘 기억하도록 하자.