고유값과 고유벡터 더 알아보기

R로 배우는 데이터 과학을 위한 선형대수

Eric Eager

Data Scientist at Pro Football Focus

무슨 일이 일어나나요?

  • 만약 A의 고유값 $\lambda_1, \lambda_2, ..., \lambda_n$ 이 서로 모두 다르고, 이들에 대응하는 고유벡터 $\vec{v}_1, \vec{v}_2, ..., \vec{v}_n$ 가 있다면, 이 벡터들은 $n$차원 공간의 _기저_를 이룹니다.

  • 즉, 행렬 $A$가 고유벡터 $\vec{v}_1, \vec{v}_2, ... \vec{v}_n$ 와 서로 다른 고유값 $\lambda_1, \lambda_2, ... \lambda_n$ 을 가진다고 하면, _모든_ $n$차원 벡터는 다음과 같은 선형결합으로 표현됩니다: $$\vec{x} = c_1\vec{v}_1 + c_2\vec{v}_2 + ... + c_n\vec{v}_n.$$

R로 배우는 데이터 과학을 위한 선형대수

무슨 일이 일어나나요?

행렬 $A$를 $\vec{x}$에 적용하고, $A\vec{v}_j = \lambda_j \vec{v}_j$ 임을 이용하면 다음과 같이 분해됩니다.

$$A\vec{x} = c_1\lambda_1\vec{v}_1 + c_2\lambda_2\vec{v}_2 + ... + c_n\lambda_n\vec{v}_n.$$

즉, 고유쌍은 행렬곱을 스칼라곱의 선형결합으로 바꿉니다!

R로 배우는 데이터 과학을 위한 선형대수

행렬 반복

행렬 $A$를 반복 곱하면:

$$A A\vec{x} = $$ $$ = A(c_1\lambda_1\vec{v}_1 + c_2\lambda_2\vec{v}_2 + ... + c_n\lambda_n\vec{v}_n)$$ $$ = c_1\lambda_1^2\vec{v}_1 + c_2\lambda_2^2\vec{v}_2 + ... + c_n\lambda_n^2\vec{v}_n,$$

일반화하면: $$A^t\vec{x} = c_1\lambda_1^t\vec{v}_1 + c_2\lambda_2^t\vec{v}_2 + ... + c_n\lambda_n^t\vec{v}_n.$$

따라서, 반복적인 행렬곱은 반복적인 스칼라곱(거듭제곱)이 아닙니다!

또한 어떤 고유값이 다른 값보다 크면, $t$가 커질수록 그 차이가 더욱 커집니다.

R로 배우는 데이터 과학을 위한 선형대수

대립유전자 빈도 예시

R로 배우는 데이터 과학을 위한 선형대수
print(M)

eigen(M)
      [,1]  [,2]  [,3]  [,4]
[1,] 0.980 0.005 0.005 0.010
[2,] 0.005 0.980 0.010 0.005
[3,] 0.005 0.010 0.980 0.005
[4,] 0.010 0.005 0.005 0.980
eigen() 분해
$`values`
[1] 1.00 0.98 0.97 0.97

$vectors
     [,1] [,2]          [,3]          [,4]
[1,] -0.5  0.5  0.000000e+00  7.071068e-01
[2,] -0.5 -0.5 -7.071068e-01  1.132427e-14
[3,] -0.5 -0.5  7.071068e-01 -2.442491e-15
[4,] -0.5  0.5 -1.382228e-14 -7.071068e-01
R로 배우는 데이터 과학을 위한 선형대수
print(M)
      [,1]  [,2]  [,3]  [,4]
[1,] 0.980 0.005 0.005 0.010
[2,] 0.005 0.980 0.010 0.005
[3,] 0.005 0.010 0.980 0.005
[4,] 0.010 0.005 0.005 0.980
Lambda <- eigen(M)
v1 <- Lambda$vectors[, 1]/sum(Lambda$vectors[, 1])
print(v1)
0.25 0.25 0.25 0.25

R로 배우는 데이터 과학을 위한 선형대수

연습해 봅시다

R로 배우는 데이터 과학을 위한 선형대수

Preparing Video For Download...