Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

固有値・固有ベクトルの解釈・意味

線形代数的な解釈

いまいちど定義を振り返る

定義より、線形変換AxA \boldsymbol{x}と、ベクトルの定数倍λx\lambda \boldsymbol{x}が等しい。つまり、

と解釈できる。

統計学/機械学習的な解釈

データを行列で表したときの話

学習データの分散が最大になる方向への線形変換を求める手法である 主成分分析 を例に考える。

主成分分析

DD次元のデータx=(x1,⋯ ,xD)T\boldsymbol{x}=(x_1, \cdots, x_D)^TがNN個あるとする。ii番目の観測値を行ベクトルxi\boldsymbol{x}_iとして表し、データを行列X=(x1,⋯ ,xN)TX = (\boldsymbol{x}_1, \cdots, \boldsymbol{x}_N)^Tと表す。

各変数の平均のベクトルxˉ=(xˉ1,...,xˉD)T\bar{\boldsymbol{x}}=(\bar{x}_1, ..., \bar{x}_D)^Tを引き算した行列をXˉ=(x1−xˉ,...,xN−xˉ)T\bar{\boldsymbol{X}}=(\boldsymbol{x}_1 - \bar{\boldsymbol{x}}, ..., \boldsymbol{x}_N - \bar{\boldsymbol{x}})^Tとおけば、共分散行列Σ\boldsymbol{\Sigma}は

Σ=Var⁡[Xˉ]=1NXˉTXˉ\boldsymbol{\Sigma} = \operatorname{Var}[\bar{\boldsymbol{X}}] = \frac{1}{N} \bar{\boldsymbol{X}}^T \bar{\boldsymbol{X}}

で定義される。

係数ベクトルaj=(aj1,...,ajD)T (j=1,...,D)\boldsymbol{a}_j = (a_{j1}, ..., a_{jD})^T \ (j=1, ..., D)を用いてXˉ\bar{X}を線形変換したベクトルをsj\boldsymbol{s}_jとする。

sj=(s1j,...,sNj)T=Xˉaj\boldsymbol{s}_j = (s_{1j}, ..., s_{Nj})^T = \bar{\boldsymbol{X}} \boldsymbol{a}_j

このデータの分散は

Var⁡[sj]=1NsjTsj=1N(Xˉaj)TXˉaj=1NajTXˉTXˉaj=ajTVar⁡[Xˉ]aj\begin{aligned} \operatorname{Var}[\boldsymbol{s}_j] &= \frac{1}{N} \boldsymbol{s}_j^T \boldsymbol{s}_j\\ &= \frac{1}{N} (\bar{\boldsymbol{X}} \boldsymbol{a}_j)^T \bar{\boldsymbol{X}} \boldsymbol{a}_j\\ &= \frac{1}{N} \boldsymbol{a}_j^T \bar{\boldsymbol{X}}^T \bar{\boldsymbol{X}} \boldsymbol{a}_j\\ &= \boldsymbol{a}_j^T \operatorname{Var}[\bar{\boldsymbol{X}}] \boldsymbol{a}_j\\ \end{aligned}

となる。

このままmax⁡ajVar⁡[sj]\max_{\boldsymbol{a}_j} \operatorname{Var}[\boldsymbol{s}_j]を解くと単にaj=∞\boldsymbol{a}_j=\inftyが解になってしまうので、係数ベクトルaj\boldsymbol{a}_jのノルム制約条件をかけた最大化問題を解くことにする。

この分散が最大となる射影ベクトルは、ラグランジュ関数

L(aj)=ajTVar⁡[Xˉ]aj−λ(ajTaj−1)L(\boldsymbol{a}_j) = \boldsymbol{a}_j^T \operatorname{Var}[\bar{\boldsymbol{X}}] \boldsymbol{a}_j - \lambda (\boldsymbol{a}_j^T \boldsymbol{a}_j - 1)

を最大にするaj\boldsymbol{a}_jである。(λ\lambdaはラグランジュ未定乗数)

微分して0とおけば

∂L(aj)∂aj=2Var⁡[Xˉ]aj−2λaj=0\frac{\partial L(\boldsymbol{a}_j)}{\partial \boldsymbol{a}_j} = 2 \operatorname{Var}[\bar{\boldsymbol{X}}] \boldsymbol{a}_j - 2 \lambda \boldsymbol{a}_j = 0

より

Var⁡[Xˉ]aj=λaj\operatorname{Var}[\bar{\boldsymbol{X}}] \boldsymbol{a}_j = \lambda \boldsymbol{a}_j

となる。

これは固有値・固有ベクトルの定義で見かけたAx=λxAx = \lambda xと同じ形になっている。このλ\lambdaとaj\boldsymbol{a}_jは固有値問題を解くことにより得られる。

主成分分析は、データXXと係数aj\boldsymbol{a}_jの線形変換sj\boldsymbol{s}_jの分散を最大化するような係数aj\boldsymbol{a}_jを求める問題

max⁡aj Var⁡[sj]subject to ∣∣aj∣∣22=1\max_{\boldsymbol{a}_j} \ \operatorname{Var}[\boldsymbol{s}_j]\\ \text{subject to} \ ||\boldsymbol{a}_j||_2^2 = 1

を解析的に解くために

Var⁡[Xˉ]aj=λaj\operatorname{Var}[\bar{\boldsymbol{X}}] \boldsymbol{a}_j = \lambda \boldsymbol{a}_j

という式を立てて固有ベクトルaj\boldsymbol{a}_jを求めるものだった。なので、

と捉えることができる。

数値例

このようなデータがあったとする

Source
<Figure size 640x480 with 1 Axes>

固有値問題を解いてλ\lambdaとaj\boldsymbol{a}_jを推定していく。


λ=[1.17427995 0.37150396]
a1=[0.886 0.464]
a2=[-0.464  0.886]

主成分を表す固有ベクトルの傾きに直線をプロットすると以下の通り。

係数ベクトルaja_jはノルムが1になるように制約がかけられているので、図にしても長さは同じ。

PC1方向の変換s1s_1はaja_jに対してλ1=1.17\lambda_1 = 1.17倍ということ。

Source
<Figure size 640x480 with 1 Axes>

推定できたa\boldsymbol{a}の任意の次元数を使って線形変換s=Xˉa\boldsymbol{s} = \boldsymbol{\bar{X}} \boldsymbol{a}を作って散布図にするとこうなる

Source
<Figure size 640x480 with 1 Axes>

新しい座標での分散の大きさ=固有値

Source
<Figure size 1200x350 with 3 Axes>