Math & Linear Algebra/Concepts

eigenvalue & eigenvector

metamong 2022. 5. 14.

* intro

๐Ÿ”… ์œ„์—์„œ ๋ฐฐ์šด transform ์—ฐ์‚ฐ์—์„œ transformation์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š” ๋ถ€๋ถ„, ์ฆ‰ transform์„ ํ•ด๋„ ๋ฐฉํ–ฅ์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๋ฒกํ„ฐ(๊ฐ’์€ ๋ณ€ํ•  ์ˆ˜ ์žˆ์Œ)๋ฅผ '๊ณ ์œ ๋ฒกํ„ฐ(eigenvector)'

 

(โ€ป ๋ฒกํ„ฐ์˜ ์ฐจ์›์—์„œ๋Š” transformation์€ ๊ณง ๋ฒกํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐฉํ–ฅ์ด ๋ณ€ํ•จ์„ ๋œปํ•œ๋‹ค.

scalar ๋ฐฐ๋ฅผ ๊ณฑํ•œ ๊ฒฐ๊ณผ, ์ฆ‰ ๋ฒกํ„ฐ ํฌ๊ธฐ ๋ณ€ํ™”๋Š” ์ค‘์š”์น˜ X)

 

๐Ÿ”… ์ด ๋•Œ, transformation์—์„œ ๋ณ€ํ•˜๋Š” scalar ๊ฐ’์„ 'eigenvalue(๊ณ ์œ ๊ฐ’)'์ด๋ผ๊ณ  ํ•œ๋‹ค

 

๐Ÿ”…๊ณ ์œ ๋ฒกํ„ฐ & ๊ณ ์œ ๊ฐ’์€ ํ•ญ์ƒ ์Œ์„ ์ด๋ฃจ๊ณ  ์žˆ๋‹ค

 

- λ๋Š” ๊ณ ์œ ๊ฐ’ -

 

$T(v) = \lambda v$

 

๐Ÿ”… ๋‹ค์‹œ ๊ณ ์œ ๋ฒกํ„ฐ์™€ ๊ณ ์œ ๊ฐ’์„ ์ •์˜ํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค

 

'์ž„์˜์˜ $n x n$ ํ–‰๋ ฌ $A$์— ๋Œ€ํ•˜์—ฌ,

0์ด ์•„๋‹Œ ์†”๋ฃจ์…˜ vector $\vec{x}$๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด, ์ˆซ์ž $\lambda$๋Š” ํ–‰๋ ฌ $A$์˜ ๊ณ ์œ ๊ฐ’์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.'

$A\vec{x} = \lambda\vec{x}$

(์ด ๋•Œ, ์†”๋ฃจ์…˜์ธ vector $\vec{x}$๋Š” ๊ณ ์œ ๊ฐ’ $\lambda$์— ๋Œ€์‘ํ•˜๋Š” ๊ณ ์œ ๋ฒกํ„ฐ์ด๋‹ค.)

($A$๋Š” $n x n$ ํ–‰๋ ฌ์ด๊ณ , $v$๋Š” nx1 ๋ฒกํ„ฐ(≠0๋ฒกํ„ฐ), $\lambda$๋Š” $A$์˜ ๊ณ ์œ ๊ฐ’)

* eigenvalue & eigenvector ๊ธฐํ•˜ํ•™์  ์˜๋ฏธ

๐Ÿ”… eigenvector๋Š” ์ž„์˜์˜ ํ–‰๋ ฌ $A$์— ์˜ํ•œ ์„ ํ˜•๋ณ€ํ™˜ ๊ฒฐ๊ณผ ์œ„์น˜ ๋ณ€ํ™” ์—†์ด ๊ทธ ๋ฐฉํ–ฅ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๊ณ  ์žˆ๊ณ , ๋‹จ์ˆœํžˆ ๊ธฐ์กด eigenvector์— ์Šค์นผ๋ผ ๋ฐฐ๋ฅผ ๊ณฑํ•œ(๊ณ ์œ ๊ฐ’์˜ ํฌ๊ธฐ๋งŒํผ ๊ณฑํ•œ) ๊ฒฐ๊ณผ์˜ vector๋กœ ๋ณ€ํ™˜๋  ๋ฟ์ด๋‹ค.

 

๐Ÿ”… ์ฆ‰, ๊ณ ์œ ๋ฒกํ„ฐ๋ž€ ํ–‰๋ ฌ $A$์— ์˜ํ•ด ์„ ํ˜•๋ณ€ํ™˜๋˜๋Š” ๊ฒฝ์šฐ ๋ฐฉํ–ฅ์€ ๋ฐ”๋€Œ์ง€ ์•Š๊ณ , ๊ธธ์ด๋งŒ ๋‹ฌ๋ผ์ง€๋Š” ๋ฒกํ„ฐ

 

๐Ÿ”… $Av = \lambda v$๋Š” ๋‹ค์‹œ ๋งํ•˜๋ฉด ๊ณ ์œ ๋ฒกํ„ฐ์— ๋Œ€ํ•œ $A$์˜ ์‚ฌ์ƒ์ด ๊ณ ์œ ๋ฒกํ„ฐ๋ฅผ ์Šค์นผ๋ผ๋ฐฐํ•œ ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

 

๐Ÿ”… $Av$๋Š” ๋ฒกํ„ฐ์˜ ๋ฐฉํ–ฅ์€ ๋ฐ”๊พธ์ง€ ์•Š๊ณ , ํฌ๊ธฐ๋งŒ ๋ณ€๊ฒฝ์‹œํ‚ด

 

๐Ÿ”… ์šฐ๋ฆฌ๋Š”, ์ด๋Ÿฐ ๊ณ ์œ ๋ฒกํ„ฐ๋ฅผ ํ–‰๋ ฌ $A$์˜ ๊ณ ์œ ํ•œ ํŠน์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒกํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค.

* eigenvalue & eigenvector ๊ณ„์‚ฐํ•˜๊ธฐ

๐Ÿ”… ๊ณ ์œ ๊ฐ’๊ณผ ๊ณ ์œ ๋ฒกํ„ฐ ๊ณ„์‚ฐํ•˜๊ธฐ>

 

$A\vec{x} = \lambda\vec{x}$

$A\vec{x} = \lambda I \vec{x}$

$(A - \lambda I)\vec{x} = \vec{0}$

($I$๋Š” nxn ๋‹จ์œ„ํ–‰๋ ฌ)

 

์—ฌ๊ธฐ์„œ $\vec{x}$ ≠ 0์ธ ๊ฒฝ์šฐ๋ฅผ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”,

$det(A-\lambda I) = 0$์ด์–ด์•ผ ํ•œ๋‹ค!

 

โ‘  $A - \lambda I$์˜ ํ–‰๋ ฌ์‹์ด 0์ธ ์—ฐ์‚ฐ์œผ๋กœ ๊ณ ์œ ๊ฐ’ $\lambda$๋ฅผ ๊ตฌํ•œ๋‹ค.

โ‘ก ๊ตฌํ•œ ๊ณ ์œ ๊ฐ’์„ $A\vec{x} = \lambda\vec{x}$ ์‹์— ์ง‘์–ด๋„ฃ์–ด $\vec{x}$๋ฅผ ๊ตฌํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๊ณ ์œ ๋ฒกํ„ฐ(eigenvector)์ด๋‹ค

 

โ€ป ๋งŒ์•ฝ โ‘  ์—ฐ์‚ฐ์—์„œ $A - \lambda I$์˜ ์—ญํ–‰๋ ฌ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋งŒ์กฑํ•˜๋Š” ๋ฒกํ„ฐ๋Š” 0๋ฒกํ„ฐ๋ฐ–์— ์—†๋‹ค.

 

๐Ÿ”… ex) ์ฃผ์–ด์ง„ nxn matrix A๊ฐ€ ์žˆ๋‹ค๋ฉด, eigenvalue์™€ eigenvector๋ฅผ ๋ฐ”๋กœ ๊ตฌํ• ์ˆ˜ ์žˆ๋‹ค. (์กด์žฌํ•  ๊ฒฝ์šฐ)

$$A = \begin{bmatrix}
5 & 1 \\
3 & 3 \\
\end{bmatrix},
(A - \lambda I) = \begin{bmatrix}
5 - \lambda & 1 \\
3 & 3 - \lambda \\
\end{bmatrix},
det(A-\lambda I) = (5 - \lambda)(3 - \lambda) - 3 = 0$$

 

$\lambda$๋Š” 2์™€ 6์ด ๋‚˜์˜ค๊ณ 

 

$$(A - \lambda I)v = \begin{bmatrix}
5 - \lambda & 1 \\
3 & 3 - \lambda \\
\end{bmatrix}\begin{bmatrix}
x \\ y
\end{bmatrix} = 0$$

 

โ‘  $\lambda = 2$๋ผ๋ฉด $3x + y = 0$ ์„ ๋งŒ์กฑํ•˜๋Š” ๋ชจ๋“  $x,y$๊ฐ€ $\lambda = 2$์— ๋Œ€ํ•œ eigenvector๊ฐ€ ๋œ๋‹ค.

โ‘ก $\lambda = 6$์ด๋ผ๋ฉด $x + y = 0$์„ ๋งŒ์กฑํ•˜๋Š” ๋ชจ๋“  $x,y$๊ฐ€ eigenvector

* determinant / tr(A)

๐Ÿ”… โ‘  det|A|๋Š” ๊ณง ๊ณ ์œ ๊ฐ’๋“ค์˜ ๊ณฑ์„ ๋œปํ•œ๋‹ค.

๐Ÿ”… โ‘ก tr(A)๋Š” A์˜ ๋Œ€๊ฐ์„ฑ๋ถ„๋“ค์˜ ํ•ฉ์œผ๋กœ ์ด๋Š” ๊ณ ์œ ๊ฐ’๋“ค์˜ ํ•ฉ์„ ๋œปํ•œ๋‹ค.

 

๐Ÿ”… ์ฆ๋ช…) ์˜ˆ์‹œ matrix $A$

→ ์œ„ $A$์—์„œ $Av = \lambda v$๋ฅผ ๋งŒ์กฑํ•˜๋Š” eigenvector๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด, det์—ฐ์‚ฐ์— ์˜ํ•ด $det(A - \lambda I) = (a - \lambda)*(d - \lambda) - bc = 0$์ด ๋˜๊ณ  ์ด๋ฅผ $\lambda$์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๋ฉด $\lambda ^ 2 - \lambda (a+d) + ad - bc = 0$

 

→ ์ฆ‰ eigenvalue $\lambda_{1}, \lambda_{2}$๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด

 

$\lambda_{1} \lambda_{2} = ad - bc = |A|$

$\lambda_{1} + \lambda_{2} = a + d = tr(A)$

 

๐Ÿ”… ex) ๋”ฐ๋ผ์„œ ์œ„ ์˜ˆ์‹œ์—์„œ ์ฃผ์–ด์ง„ matrix $A$์˜ eigenvalue๋Š” 6๊ณผ 2์ด๋ฏ€๋กœ 

→ $det|A| = 5*3 - 3*1 = 6 * 2 = 12$

→ $tr(A) = 5 + 3 = 6 + 2 = 8$๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ”… ๋งŒ์•ฝ det|A|๊ฐ€ 0์ด๋ผ๋ฉด? → ๊ฐ’์ด 0์ธ eigenvalue $\lambda$๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๋œป (eigenvalue์˜ ๊ณฑ์ด det |A|์ด๋ฏ€๋กœ)

→ ๋”ฐ๋ผ์„œ, nxn ํ–‰๋ ฌ A์— ๋Œ€ํ•ด์„œ eigenvalue๊ฐ€ 0์ธ eigenvector๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฑด A๋Š” full-rank matrix์ด๊ณ , A์˜ ์—ด(ํ–‰)์€ ์„œ๋กœ linearly independent, A์˜ ์—ญํ–‰๋ ฌ์€ ์กด์žฌํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

๐Ÿ”… ํŒŒ์ด์ฌ - linalg.eig() ํ™œ์šฉ

 

โ‘  determinant๊ฐ€ 0์ด ์•„๋‹ ๊ฒฝ์šฐ

import numpy as np

A = np.array([[5,1],
              [3,3]])

eigVals, eigVecs = np.linalg.eig(A)

eigVals #array([6., 2.])

eigVecs
'''
array([[ 0.70710678, -0.31622777],
       [ 0.70710678,  0.9486833 ]])
'''

v1 = eigVecs[:, 0]
v2 = eigVecs[:, 1]

np.linalg.norm(v1) #1
np.linalg.norm(v2) #1

 

โ‘ก determinant๊ฐ€ 0์ผ ๊ฒฝ์šฐ

singular_mat = np.array([[1, 2],
                        [2, 4]])

np.linalg.eig(singular_mat)
'''
(array([0., 5.]),
 array([[-0.89442719, -0.4472136 ],
        [ 0.4472136 , -0.89442719]]))
'''

np.linalg.det(singular_mat) #0.0

np.linalg.matrix_rank(singular_mat) #1

np.linalg.inv(singular_mat) #LinAlgError: Singular matrix

* Eigenvectors of real symmetric matrices are orthogonal

๐Ÿ”… ํ–‰๋ ฌ $A$๊ฐ€ ๋Œ€์นญํ–‰๋ ฌ์ด๋ผ๋ฉด, ๊ณ ์œ ๋ฒกํ„ฐ๋Š” ์„œ๋กœ ์ˆ˜์ง์ด๋‹ค

 

๐Ÿ”… ์ฆ๋ช…) ํ–‰๋ ฌ $A$๊ฐ€ ์žˆ๊ณ , ๊ณ ์œ ๊ฐ’ $\lambda_{1}$์— ๋Œ€์‘ํ•˜๋Š” ๊ณ ์œ ๋ฒกํ„ฐ $x$ / ๊ณ ์œ ๊ฐ’ $\lambda_{2}$์— ๋Œ€์‘ํ•˜๋Š” ๊ณ ์œ ๋ฒกํ„ฐ $y$

→ $Ax = \lambda_{1}x$ / $Ay = \lambda_{2}y$

→ ๊ฐ๊ฐ ์–‘๋ณ€์— $y^T, x^T$๋ฅผ ๊ณฑํ•˜๋ฉด $y^TAx = \lambda_{1}y^Tx$ / $x^TAy = \lambda_{2}x^Ty$

→ $y^TAx = \lambda_{1}y^Tx$๋ฅผ ์–‘๋ณ€ transposeํ•˜๋ฉด $x^TAy = \lambda_{1}x^Ty$

→ ์ฆ‰, $\lambda_{1}x^Ty = \lambda_{2}x^Ty$

→ ๋”ฐ๋ผ์„œ, $(\lambda_{2}-\lambda_{1})x^Ty = 0$

→ ์„œ๋กœ ๋‹ค๋ฅธ eigenvalue์ด๋ฏ€๋กœ $x^Ty = 0$

→ ์ตœ์ข…์ ์œผ๋กœ ๋‘ eigenvector๋Š” ์„œ๋กœ ์ง๊ตํ•œ๋‹ค. ์ฆ๋ช…

 

๐Ÿ”… python

symm_mat = np.array([[1, 2],
                [2, 1]])

evalues, evectors= np.linalg.eig(symm_mat)

evectors
'''
array([[ 0.70710678, -0.70710678],
       [ 0.70710678,  0.70710678]])
'''

np.dot(evectors[:,0], evectors[:,1]) #0.0

evectors.T
'''
array([[ 0.70710678,  0.70710678],
       [-0.70710678,  0.70710678]])
'''

np.linalg.inv(evectors)
'''
array([[ 0.70710678,  0.70710678],
       [-0.70710678,  0.70710678]])
'''

* ์ธ๋„ค์ผ ์ถœ์ฒ˜) https://play.google.com/store/apps/details?id=calculator.matrix.eigenvalues&hl=en_IN&gl=US 

* ๋‚ด์šฉ ์ถœ์ฒ˜1) ๊ณ ์œ ๊ฐ’, ๊ณ ์œ ๋ฒกํ„ฐ https://www.youtube.com/watch?v=7dmV3p3Iy90 

* ๋‚ด์šฉ ์ถœ์ฒ˜2) https://www.youtube.com/watch?v=PFDu9oVAE-g 

'Math & Linear Algebra > Concepts' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Matrix (fundamentals)  (0) 2022.07.31
Odds Ratio & log(Odds Ratio)  (0) 2022.07.11
linear & non-linear โ†’ span, basis, rank, projection  (0) 2022.05.13
Pearson & Spearman correlation coefficients  (0) 2022.05.13
Cramer's Rule (+exercise)  (0) 2022.05.09

๋Œ“๊ธ€