본문 바로가기

스터디

3-3. 고급 선형대수: 고유값, 고유벡터

0. 고유값, 고유벡터가 중요한 이유

SVD, PCA, Pseudo-Inverse, 선형연립방정식의 풀이 등의 응용이 고유값, 고유벡터를 그 밑바탕에 깔고 있기 때문이다.

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

$Av=\lambda v$

 

이 식을 고유방정식이라 한다.

 

행렬 A에 의한 변환 결과가 자기 자신의 상수배가 되는 0이 아닌 벡터를 고유벡터(eigenvector)라고 하고, 이 상수배 값을 고유값(eigenvalue)이라 한다.

 

말로 표현할 때는 $\lambda$는 "행렬 $A$의 고유값", $v$는 "행렬 A의 $\lambda$에 대한 고유벡터"라고 하면 된다.

 

여기서 다루고자 하는 내용은 행렬 A의 원소가 실수인 경우다. 컴퓨터를 활용한 대부분의 고유값, 고유벡터 활용은 실수 행렬을 사용해도 충분하다.

 

2. 기하학적 의미

선형변환은 아래 그림처럼 벡터의 방향과 크기를 모두 바꾼다.

 

하지만 수많은 벡터 중 어떤 벡터들은 A로 선형변환을 해도 그 방향이 보존되고 크기만 변화된다. 이러한 벡터들이 행렬 A의 고유벡터이다. 고유값은 그 고유벡터의 변화되는 크기의 정도를 나타내는 값이다.

 

즉, $Ax_1=\lambda x_1$, $Ax_2=\lambda x_2$가 되며, 이를 하나로 뭉쳐 $Ax=\lambda x$라고 하는 것이다.(일반적으로는 $x$ 대신 $v$를 사용하여 표기한다)

 

3. 고유값이 있기 위한 조건

  1. 행렬 A가 정방행렬이어야 한다.

4. 고유값 및 고유벡터의 개수

행렬 $A$에 곱해지는 대부분의 벡터 $v$는 고유벡터가 될 수 없으며, 우리는 그 안에서 고유벡터들을 찾아야 한다. 고유벡터는 $A$에 의해 변화되어도 원래와 동일한 방향성을 가지는 것이라고 했는데, 그 방향은 반대방향이 될 수도 있고, 아예 방향이 없을 수도 있다. 따라서 고유값은 양수, 음수, 0, 복소수도 될 수 있다.

 

행렬 $A$가 $N$차원 정방행렬일 때, 고유값은 항상 $N$개다.

 

고유벡터의 수는 무한하다.

$A(cv)=\lambda (cv)$로 확인할 수 있는데, 예를 들어서, $v=\begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix}$가 행렬 A의 고유벡터라고 할 때, 상수배한 $cv=\begin{bmatrix}c \\ 2c \\ 3c \end{bmatrix}$도 A의 고유벡터다. 따라서 $A$의 고유벡터는 무수히 많으며, 어떤 하나의 부분 공간을 형성한다. 그 부분 공간을 고유공간(eigenspace)이라고 한다.

 

보통은 방향에 대한 정보만 남기기 위해 벡터의 크기가 1이 되도록 Normalize한 벡터를 사용한다.

 

5. 고유값, 고유벡터 예시

$A=\begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}$의 고유값과 고유벡터를 구해보자.

 

정의에 의해 고유방정식 $Av=\lambda v$를 세울 수 있다. 우변을 좌변으로 옮기면 $(A-\lambda I)v=0$이 된다.

 

고유벡터의 정의에 의해 고유벡터 $v$는 영벡터가 아니다. 만약 $A-\lambda I$의 역행렬이 존재한다면 양변에 $(A-\lambda I)^{-1}$을 곱해 $v=0$이 되므로 정의에 어긋난다. 그러므로 $A-\lambda I$는 역행렬이 존재해서는 안된다. 이 성질을 활용해 고유값을 구할 것이다.

 

$|A-\lambda I|=0$를 구하면 $\lambda_1=1$과 $\lambda_2=3$이 나온다.

 

$(A-\lambda I)v=0$$\lambda_1$과 $\lambda_2$를 대입하면 다음 두 식이 나온다.

 

(1) $\begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix}v=0$

(2) $\begin{pmatrix} -1 & 1 \\ 1 & -1 \end{pmatrix}v=0$

 

(1)의 결과 $v_1=-v_2$, (2)의 결과 $v_1=v_2$가 나온다.($v_1$, $v_2$는 $v$의 원소)

 

두 고유공간를 표현하면 다음과 같다.

 

$E_1=\{v|v_1=-v_2\}$

$E_2=\{v|v_1=v_2\}$

 

고유 공간을 그림으로 표현하면 다음과 같다.

 

6. 고유값의 특성(1)

고유값을 구하면 행렬을 잘 나타내는 세 특성을 간단하게 계산할 수 있다.

 

6.1 Trace

$tr(A)=\sum_{i=1}^N\lambda_i$

 

6.2 Determinant

$det(A)=\prod_{i=1}^N\lambda_i$

 

6.3 Rank

0이 아닌 고유값의 수

7. 대각화(Diagonalization)

aka 고유값분해(Eigendecomposition)

 

행렬의 대각화를 통해 행렬을 고유값과 고유벡터로 구성된 부분 행렬들로 분해할 수 있으며, 이는 선형방정식을 풀 때 유용한 특성을 가지고 있다.

 

$N$차원 정방행렬 $A$가 $N$개의 고유값과 이에 대응하는 고유벡터를 가진다는 성질을 이용하면 행렬을 분해할 수 있다.

 

우선 용어 정리

$V$ : 고유벡터를 열벡터로 삼아 만든 행렬

$\Lambda$ : 고유값을 대각원소로 삼아 만든 행렬

 

행렬과 고유벡터행렬의 곱은 고유벡터행렬과 고유값행렬의 곱과 같다.$AV=A\begin{bmatrix} v_1 & \cdots & v_N \end{bmatrix}$
$=\begin{bmatrix} Av_1 & \cdots & Av_N \end{bmatrix}$
$=\begin{bmatrix} \lambda_1v_1 & \cdots & \lambda_Nv_N \end{bmatrix}$
$=\begin{bmatrix} v_1 & \cdots & v_N \end{bmatrix}\begin{bmatrix}\lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_N \end{bmatrix}$
$=V\Lambda$

 

만약 고유벡터행렬 V의 역행렬이 존재한다면 행렬을 다음처럼 고유벡터행렬과 고유값행렬과 고유벡터행렬의 전치의 곱으로 표현할 수 있다. 이를 대각화라고 한다.

 

$A=V\Lambda V^T$
$\Lambda=V^TAV$

대각화 가능 행렬

행렬을 대각화할 수 있으면 대각화가능한 행렬(diagonalizable matrix)이라고 한다. 앞서 고유벡터행렬 $V$의 역행렬이 존재한다면 대각화가 가능하다고 했다. 즉, 행렬이 대각화가능하려면 $A$의 고유벡터가 선형독립이어야 한다.(참고로 대각화 가능하지 않는 행렬을 defective matrix라고 한다.)

8. 고유값의 특성(2)

$A^k=Pdiag(\lambda_1^k, ..., \lambda_n^k)P^{-1}$
$A^{-1}=Pdiag(\frac{1}{\lambda_1^k}, ..., \frac{1}{\lambda_n^k})P^{-1}$
$f(A)=Pdiag(f(\lambda_1), ..., f(\lambda_n))P^{-1}$

9. ★대칭행렬의 대각화★

다음 조건을 만족하는 것이 대칭행렬이다.

$A=A^T$

 

지금 이 시점에서 굳이 대칭행렬을 언급하는 이유는 다음과 같다.

  1. 실수 대칭행렬 $A$의 고유값은 실수다.
  2. 고유값이 서로 다른 고유벡터는 직교한다.(항상 대각화 가능하다)
  3. 대칭행렬 $A$가 양의 (준)정부호이면 고유값은 모두 양수이거나 0이다.

1의 증명

 

n차원 실수 대칭행렬 A의 고유값이 $\lambda \in \mathbb{C}$이며, 고유벡터를 $u \in \mathbb{C}^n$이라고 하자.(둘 다 복소수 공간에 정의됨)

 

이 때 고유방정식은 다음과 같이 작성할 수 있다.

 

$Au=\lambda u$

 

좌변과 우변의 켤레복소수(complex conjugate)는 다음과 같이 표현할 수 있다.

 

$\bar{A}\bar{u}=\bar{\lambda}\bar{u}$

$A\bar{u}=\bar{\lambda}\bar{u}$($\because A\in \mathbb{R^{n\times n}}$)

 

- : 켤레

* : 켤레전치

 

$\lambda (u^*) u$을 한번 전개해보자.

$\lambda (u^*) u$

$=u^*(A\bar{u})$ $=(u^*A)u$

$=(A^T\bar{u})^Tu$

$=(A\bar{u})^Tu$ ($\because A^T=A$)

$=(\bar{\lambda}\bar{u})^Tu$

$=\bar{\lambda}(u^*)u$

 

그러므로 $(\lambda-\bar{\lambda})u^*u=0$이 된다.

여기서 $u$는 고유벡터이므로 영벡터가 아니며, $u^*u=\sum_{i=1}^nu_i^*u_i>0$이다. 즉, $(\lambda-\bar{\lambda})u^*u=0$을 만족하기 위해서는 $\lambda=\bar{\lambda}$가 되어야 한다. 그러므로 $\lambda$는 실수이다.(고유값이 실수라면 고유벡터도 실수라고 나와있는데 이 부분은 이해를 못함)

 

2의 증명

 

$n$차원 실수 대칭행렬 $A$

$Au_1=\lambda_1u_1$, $Au_1=\lambda_2u_2$.

 

$n$차원 실수 대칭행렬 $A$

$Au_1=\lambda_1u_1$,  $Au_1=\lambda_2u_2$. 즉, $u_1$과 $u_2$는 고유벡터이며, $\lambda_1$,  $\lambda_2$는 고유값이다.

$\lambda u_2^Tu_1$을 한번 전개해보자.
$\lambda u_2^Tu_1$
$=u_2^T(Au_1)$
$=(u_2^TA)u_1$
$=(A^Tu_2)^Tu_1$
$=(Au_2)^Tu_1$
$=\lambda_2 u_2^Tu_1$

그러므로 $(\lambda_1 - \lambda_2)u_2^Tu_1=0$을 만족해야 한다.

2번 조건에서 고유값은 서로 다르다고 했으므로 $\lambda_1 \ne \lambda_2$이다. 즉, 위 수식을 만족시키기 위해서는 $u_2^Tu_1=0$을 만족해야 한다.

고유벡터를 Normalizing함으로써 정규직교 벡터의 $u_1, u_2, ..., u_n$을 얻을 수 있다.

 

3의 증명

 

대칭행렬 A는 랭크 1 행렬의 합으로 표시할 수 있다.

$A=\sum_{i=1}^n\lambda_iv_iv_i^T$

만약 A가 양의 (준)정부호이면, 어떤 벡터 $x$를 행렬 A의 앞뒤에 곱해 이차형식을 만들어도 0보다 크거나 같아야 하므로 j번째 고유벡터 $v_j$를 선택하여 곱해도 마찬가지로 0보다 크거나 같아야 한다. 그렇다면 다음 식을 만족해야 한다.

$v_j^TAv_j \ge 0$

그런데 대칭행렬은 고유벡터들이 서로 직교한다.

$\begin{cases}
v_i^Tv_j=0(i \ne j) \\
v_i^Tv_i=1
\end{cases}$

$v_j^TAv_j$
$=v_j^T(\sum_{i=1}^n\lambda_iv_iv_i^T)v_i$
$=\sum_{i=1}^N\lambda_i(v_j^Tv_i)(v_i^Tv_j)$
$=\lambda_1(v_j^Tv_1)(v_1^Tv_j)+\lambda_2(v_j^Tv_2)(v_2^Tv_j)+...+\lambda_j(v_j^Tv_j)(v_j^Tv_j)+...+\lambda_N(v_j^Tv_N)(v_N^Tv_j)$
$=\lambda_j$

그러므로 $\lambda \ge 0$이 된다.

 

이러한 성질은 SVD, PCA 등에서 가장 기본이 되는 성질로 활용되니 기억해둬야 한다.

 

10. 분산행렬

임의의 실수 행렬 $X$에 대해 $A=X^TX$를 만족하는 행렬 $A$를 분산행렬이라고 한다. 분산행렬은 다음과 같은 성질을 가지고 있다.

 

  1. 대칭행렬이다.
  2. 양의 준정부호이다.
  3. $X$가 풀랭크이면, $A$의 역행렬이 존재한다.

 

출처

김도형의 데이터사이언스 스쿨 수학편

Symmetric matrices

Lecture 21-(1) 고유값(eigenvalues)과 고유 벡터(eigenvectors)

[선형대수학 #3] 고유값과 고유벡터 (eigenvalue & eigenvector)

 

 

 

 

 

 

'스터디' 카테고리의 다른 글

4. 심파이(SymPy)로 공부하는 미적분  (0) 2020.04.14
3-4. 고급 선형대수: SVD(1)  (0) 2020.03.30
선형대수  (0) 2020.03.30
3-2. 고급 선형대수: 좌표와 변환  (0) 2020.03.26
2. Numpy로 공부하는 선형대수  (0) 2020.03.09