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

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