////
Search

고유값과 고유벡터

1. 고유값과 고유벡터의 정의

어떠한 행렬 A가 있다고 가정하자. 이 때 행렬 A를 선형변환으로 봤을 때, 선형변환 A에 의한 변환 결과가 자기 자신의 상수배가 되는 0이 아닌 벡터고유벡터(eigenvector)라고 하고, 이 상수배 값고유값(eigenvector)라고 한다.
위의 이미지에서 고유값은 λ\lambda 이며, 고유벡터는 vv 이다.

2. 고유값, 고유벡터의 계산

위의 식에서 고유값과 고유벡터를 구해보자.
고유벡터는 정의에 의해 0이 아니다. 그런데 만약 (AλE)(A-\lambda E)가 만약 역행렬이 존재한다면, v = 0이 되어버린다. 따라서 (AλE)(A-\lambda E)는 역행렬이 존재하지 않아야 한다. 그러므로
det(AλE)=0det(A-\lambda E)=0
을 만족해야 한다. 이를 행렬 A의 특성방정식이라고 부르며, 이를 λ\lambda 에 대해 풀면 A의 고유값을 얻을 수 있으며, 이를 다시 위의 이미지 식에 대입하면 고유벡터 또한 구할 수 있다.

3. 고유값 분해

행렬 A의 고유벡터들을 열벡터로 하는 행렬을 PP, 고유값들을 대각원소로 하는 대각행렬을 Λ\Lambda라고 하자. 그러면 다음의 식이 성립한다.
이처럼 행렬 A는 자신의 고유벡터들을 열벡터로 하는 행렬과 고유값을 대각원소로 하는 행렬의 곱으로 대각화 분해가 가능한데 이러한 대각화 분해를 고유값 분해(eigendecomposition)이라고 한다.

4. 특이값 분해(Singular Value Decomposition, SVD)

그런데 위의 고유값 분해는 정방행렬만 가능하다라는 문제가 있다. 따라서 만약 정방행렬이 아닌 행렬을 대각화 분해하고 싶다면 특이값 분해를 해야 한다.
실수공간에서 임의의 m x n 행렬에 대한 특이값 분해(SVD)는 다음과 같이 정의된다.
이 때 U의 열벡터들을 A의 left singular vector, V의 열벡터들을 A의 right singular vector라고도 부른다.
그리고 Σ\SigmaAATAA^T, ATAA^TA를 고유값분해하여 나오는 고유값들의 제곱근을 대각원소로 하는 m x n 직사각 대각행렬이다. 그리고 그 대각원소들을 고유값 대신에 특이값이라고 부른다.

5. 행렬 근사와 데이터 압축

아래와 같이 m x n 행렬 A를 SVD로 분해하는 것을 full SVD라고 부른다(이 때 m > n).
그런데 우리는 굳이 이렇게 전부 펼쳐놓을 필요가 없다. 왜냐하면 중간의 Σ\Sigma에서 0과 곱해지는 부분들은 어차피 사라지기 때문이다.
따라서 우리는 SVD를 조금 더 컴팩트하게 만들 수 있다.
위의 이미지에서는 비대각원소와 0인 singular value들을 모두 제거한 형태로, compact SVD라고 부른다.
그런데 여기서 더 나아가서 A와 완벽하게 동일하지는 않지만 A와 굉장히 유사한 행렬을 만든다고 해보자. (그 이유는 굉장히 다양할 수 있다. 예를 들어, 데이터의 크기가 너무 크다거나 노이즈를 줄인다거나 하는 것들이 있다.)
위의 이미지에서는 0인 singluar value 뿐만 아니라 다른 singular value까지 제거한 형태로, 이를 truncated SVD라고 부른다.
물론 너무 많은 singular value를 제거하면 원본 데이터에서 많이 벗어나버리지만, 적절한 수를 유지한다면, 데이터의 본질은 거의 유지하면서 데이터 크기는 크게 압축시킬 수 있다.