機械学習のための固有値と固有ベクトル(復習)

Python, ML, Math14 January 2021

定義

一般に固有値と固有ベクトルは以下の通り定義される。

$$ AX = \lambda X $$
  • Aは正則行列
  • Xは0行列以外

上記条件を満たす時、\(\lambda\) を固有値、Xを固有ベクトルという

わかること

  • 固有値ベクトルに正則行列Aをかけても、固有値倍されるだけ
    • ベクトルの向きは変化しない

機械学習では行列を多用するので、固有値、固有ベクトルは非常に重要

主成分分析などで使う

固有方程式

固有値と固有ベクトルを求める式のことを固有方程式といい、以下の式で求められる。

$$ |A - \lambda I| = 0 $$

Iは単位行列

例題

以下の正則行列Aの固有値と固有ベクトルを求める

$$ A = \begin{pmatrix} 4 & 1 \\ 1 & 4 \end{pmatrix} $$

固有方程式から、

$$ |A - \lambda I| = 0 $$
$$ | \begin{pmatrix} 4 & 1 \\ 1 & 4 \end{pmatrix} - \begin{pmatrix} \lambda & 0 \\ 0 & \lambda \end{pmatrix} | = 0 $$
$$ | \begin{pmatrix} 4-\lambda & 1 \\ 1 & 4-\lambda \end{pmatrix} | = 0 $$
$$ (4-\lambda)^2 - 1 = 0 $$
$$ \lambda^2 - 8\lambda + 15 = 0 $$
$$ (\lambda - 3)(\lambda - 5) = 0 $$

よって、\(\lambda = 3, 5\)とわかる。
あとは、ベクトルを仮にx = (x1, x2)と仮定し、固定値を代入すれば固有ベクトルも算出可能。

固有値分解

固有値分解は実質対角化と同様である

対角化

正方行列Aとし、直行行列Pと対角行列Dに関して以下が成立する

$$ A = P D P^{T}$$

PとDは以下の通りで、\(\lambda\)は固有値\(\vec{v}\)は固有ベクトルという条件を満たします。

$$ P = (\vec{v_1}\ \vec{v_2}\ \cdots) $$
$$ D = \begin{pmatrix} \lambda_1 & & \\ & \lambda_2 & \\ & & \ddots \end{pmatrix}$$

メリット

  • 変形により、各特徴量の加算にみなすことができる
  • 各項の固有値\(\lambda\)は重みを表していると考えられる
    • 0に近い(= 重みが0に近い)ものは無視できる
    • 次元削減したことになる

特異値分解(SVD)

SVDはsingular value decompositionの略らしい

定義

\(m \times n\)の行列Aに関して、\(A=U\Sigma V\)が成立する。

  • Uは\(m \times m\)の直行行列
  • Vは\(n \times n\)の直行行列
  • \(\Sigma\)\(m \times n\)で対角成分が0以上で且つ、大きい順(降順)に並んだ行列

この時、\(\Sigma\)の対角成分のうち、0以外を特異値と言う(0を含める場合もある)

特徴

  • \(\Sigma\)は一意だが、UとVは一意とは限らない
  • 特異値の個数は行列のrankと一致する

サマリ元

tags: Python, ML, Math