이번엔 eigen vector와 eigen value에 대해 알아보려 한다.
eigen vector란?
eigenvector란 우리말로 고유 벡터라고 하는데, 선형 변환(transform)이 일어난 후에도
방향이 변하지 않는 영 벡터가 아닌 벡터이다.
eigen value란?
eigenvalue는 우리말로 고윳값이라 하며, eigenvector의 길이가 변하는 배수를
선형 변환의 그 eigenvector에 대응하는 eigenvalue라고 부른다.
여기서 주의할 점은 길이가 변하는 것이지 방향의 변화는 없다는 것이다.
이 둘을 식으로 나타내자면,
matrix A에 대하여, Ax = λx (lambda는 상수)가 성립하는 0이 아닌 x vector가 존재할 때
λ를 matrix A의 eigenvalue, x를 eigenvector라고 한다.
eigenvector, value 구하기
컴퓨터로 작업하기가 너무 힘들어서 직접 써보았습니다..ㅠ
계산 과정을 간단히 글로 써보자면..
Av = λv
(A-λI)v = 0 (I는 단위행렬)
값을 만족시키기 위해선 A-λI = 0을 찾아야 하고, 즉 det(A-λI) = 0이다.
2차원 matrix에서 구할 땐 상당히 간단하게 풀 수 있다.
numpy eigenvector, value 구하기
numpy로 구하기는 정말 너무~쉽다.
왜냐하면 바로 linalg Library에 eig라는 eigenvector, value를 구하는 함수가 내장되어 있기 때문이다.
바로 코드를 보자.
numpy.linalg.eig 함수는 인자로 eigenvector, value가 계산될 수 있는 행렬을 받으며
eigenvalue와 vector를 순차적으로 반환한다.
만약 eigenvalue 값이 수렴하지 않을 경우 LinAlgError를 발생시킬 수 있다 하니 유의하도록 하자!
'Artificial Intelligence' 카테고리의 다른 글
[numpy] 5주차 PageRank algorithm in numpy (2) | 2020.04.16 |
---|---|
[numpy] 5주차 PIL로 image 읽고 변환하기 (0) | 2020.04.15 |
[numpy] 4주차 gram-schmidt, reflection matrix (2) | 2020.04.09 |
[numpy] 3주차 transform, determinant (0) | 2020.03.25 |
[numpy] 2주차 기본 행렬 연산과 인덱싱 (1) | 2020.03.23 |