* 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 |
๋๊ธ