固有値と固有ベクトルをもう少し

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() decomposition
$`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...