固有値と固有ベクトルについては機械学習の理解をするには必要不可欠なので線形代数などで登場する固有値と固有ベクトルについて書いてみました。
行列とベクトルの演算
固有値と固有ベクトルの説明をする前に行列とベクトル演算についてふれておきます。 2次元ベクトル(2,1)が2次元空間上にあるとします。
この2次元ベクトルに対して 2 行 2 列の正方行列をかけてみます。
(25−5−6)(21)=(−14)
算出された2次元ベクトルを見てみると、ベクトルの方向が変わっていることがわかります。このように、ベクトルは行列との演算によって並進や回転、拡大などの変換作用がなされます。
ベクトルは行列との演算によって並進や回転、拡大などの変換作用がなされるわけですが、ベクトルの方向は全く変わらず大きさだけ変化するケースも存在します。
例えば、2次元ベクトル(1,−4)に対して次の行列演算を行うとします。
(8415)(1−4)=(4−16)
算出された2次元ベクトルは全く方向は変わっておらず大きさだけ変化しています。
固有値と固有ベクトル
固有値と固有ベクトルの話に戻ってきました。固有値と固有ベクトルを式で表すと次の式になります。
Ax=λx
この式の意味は、ベクトルxに行列 A を作用されると方向は変わらずλ倍の大きさになるとうことです。先ほどの行列とベクトルの演算で話したことと同じですね。このときのxを固有ベクトル、λを固有値といいます。まとめると
固有値と固有ベクトルの求め方
固有値と固有ベクトルの求め方はネットにたくさんありますが、この Qiita 記事でも行います。
次の行列 A の固有値と固有ベクトルを求めます。
A=(8415)
固有値、固有ベクトルの式から変形していきます。
⇔⇔⇔Ax=λxA−λI=0(8415)−λ00λ=08−λ114−λ=0
行列式ad−bcより
⇔⇔;(8−λ)(5−λ)=0;λ2−6λ+36=0;(λ−4)(λ−9)=0
これで固有値λ=4,9が求まりました。各々の固有値に対応する固有ベクトルを求めます。
λ=4
λ=4 を Ax=λxへ代入します。
⇔;(8−4415−4)(x1x2)=(00)(4411)(x1x2)=(00)
したがって、4x1+x2=0なのでtを任意の実数として
{x1=tx2=4t
となるので固有ベクトルはtを任意の実数として次の値になります。
t(14)
λ=9
λ=9 を Ax=λxへ代入します。
⇔(8−9415−9)(x1x2)=(00)(−141−4)(x1x2)=(00)
したがって、−x1+x2=0なのでtを任意の実数として
{x1=tx2=t
となります。したがって、固有ベクトルはtを任意の実数として次の値になります。
t(11)
これで固有値と、それぞれの固有値に対応する固有ベクトルが求まりました。
機械学習における固有値と固有ベクトル
ここまで固有値と固有ベクトルについての基本的なことについて述べました。しかし、こういった固有値と固有ベクトルが機械学習の世界でどのように活用されているかがよくわからないと思います。
機械学習の世界では、共分散行列の固有値、固有ベクトルを求めるといった場面によく遭遇します。共分散行列について詳しくは他記事を参考にしてもらうとして、簡単に説明しますと共分散行列はデータの形を定義します。
共分散行列の固有ベクトルがわかるとデータ全体を説明する方向がわかります。つまり、大きな固有値に対応する固有ベクトルほどデータ全体を説明するのに重要というわけです。