この記事は Wathematica Advent Calender 2021 の12/14の記事です.
この記事のメインテーマは「行列の対角化」です.
正方行列$\mat{A}$に対し,行列$\mat{\Lambda}=\mat{P}^{-1}\mat{A}\mat{P}$が対角行列になる正則行列$\mat{P}$を見つけることを対角化という.
固有方程式$\det(\lambda\imat-\mat{A})=0$を解いて,固有空間$E_{\lambda}(\mat{A})=\Set{\vect{x}\in\numset{R}^n\given\mat{A}\vect{x}=\lambda\vect{x}}$の基底を見つけて,基底を並べて行列$\mat{P}=\inlinevec{\vect{p}_1 & \cdots & \vect{p}_n}$を作って……っていう流れを叩き込まれるのが,B1の線型代数だと思います(個人の感想です).このへんの数学的なしくみについては, 同期の記事 に詳しく載っています.
この記事では,その図形的な意味と,それを踏まえた応用の話をしてみようと思います.
まず,$2\times 2$行列を例にとって,対角化について考察しましょう.$2\times 2$実行列$\mat{A}$に対し,$\mat{\Lambda}=\mat{P}^{-1}\mat{A}\mat{P}$が対角行列になるような実行列$\mat{P}$が存在するとします.このとき,$\mat{P}=\inlinevec{\vect{p}_1 & \vect{p}_2}$とおくと$\basis{B}=\Set{\vect{p}_1,\vect{p}_2}$は$\numset{R}^2$の基底なので,任意のベクトル$\vect{x}=\trps{\inlinevec{x & y}}\in\numset{R}^2$は
\begin{equation}
\vect{x} = s\vect{p}_1+t\vect{p}_2 = \mat{P}\begin{bmatrix}s\\ t\end{bmatrix}
\quad\text{($s,t\in\numset{R}$)}
\end{equation}
と一意に表せます.$s$と$t$は上の式から$\trps{\inlinevec{s & t}}=\mat{P}^{-1}\vect{x}$と求められます.
これは,$\mat{P}^{-1}$を左から掛けると,$xy$座標から$st$座標へと座標系を取り換えられることを意味します.たとえば$\mat{P}=\big[\begin{smallmatrix}3 & 1 \\ 1 & 3\end{smallmatrix}\big]$,$\vect{x}=\trps{\inlinevec{7 & 5}}$のときは$\vect{x}=2\vect{p}_1+\vect{p}_2$なので,次図のようになります.
xy座標とst座標の関係
正確には「標準基底($xy$座標)から基底$\basis{B}$($st$座標)へと基底(座標系)を取り換えられる」という表現がより適切です.
逆に,$\mat{P}$を左から掛ければ,$st$座標から$xy$座標へと座標系を取り替えられます.よって,$\vect{x}$に行列$\mat{A}=\mat{P}\mat{\Lambda}\mat{P}^{-1}$を左から掛けると,$\vect{x}$は次のように変形されます.
以上をまとめると,対角化できる行列においては,行列をベクトルに掛ける操作が「ある座標系において各軸向きに拡縮する」という操作と同等になります.
前節では「対角化できる行列においては,行列をベクトルに掛ける操作が『ある座標系において各軸向きに拡縮する』という操作と同等になる」ということを見ました.ここではそれを踏まえて,対角化を別の形で表記してみましょう.
まず,$\trps{\inlinevec{s & t}}=\mat{P}^{-1}\vect{x}$だったので,$\trps{(\mat{P}^{-1})}=\inlinevec{\vect{q}_1 & \vect{q}_2}$とおくと
\begin{equation}
\begin{bmatrix}s \\ t\end{bmatrix} = \begin{bmatrix}\trps{\vect{q}_1} \\ \trps{\vect{q}_2}\end{bmatrix}\vect{x}
= \begin{bmatrix}\trps{\vect{q}_1}\vect{x} \\ \trps{\vect{q}_2}\vect{x}\end{bmatrix}
\then s = \trps{\vect{q}_1}\vect{x}
\also t = \trps{\vect{q}_2}\vect{x}
\end{equation}
となります.よって,次式が成立します.
\begin{equation}
\vect{x} = s\vect{p}_1+t\vect{p}_2
= (\trps{\vect{q}_1}\vect{x})\vect{p}_1+(\trps{\vect{q}_2}\vect{x})\vect{p}_2
\end{equation}
ここで,$\mat{A}$を掛けると,$\vect{x}$は$s$軸方向に$\lambda_1$倍,$t$軸方向に$\lambda_2$倍だけ拡大されるので
\begin{equation}
\mat{A}\vect{x} = \lambda_1s\vect{p}_1+\lambda_2t\vect{p}_2
= \lambda_1(\trps{\vect{q}_1}\vect{x})\vect{p}_1+\lambda_2(\trps{\vect{q}_2}\vect{x})\vect{p}_2
\end{equation}
です.上の式を変形すると
\begin{equation}
\mat{A}\vect{x} = \lambda_1(\trps{\vect{q}_1}\vect{x})\vect{p}_1+\lambda_2(\trps{\vect{q}_2}\vect{x})\vect{p}_2
= (\lambda_1\vect{p}_1\trps{\vect{q}_1}+\lambda_2\vect{p}_2\trps{\vect{q}_2})\vect{x}
\end{equation}
となり,これが任意の$\vect{x}\in\numset{R}^2$に対して成立するので,$\mat{A}=\lambda_1\vect{p}_1\trps{\vect{q}_1}+\lambda_2\vect{p}_2\trps{\vect{q}_2}$が成り立ちます.
この式は,$\mat{P}$が直交行列ならもっと簡単になります.実際,$\trps{(\mat{P}^{-1})}=\mat{P}$なら$\vect{q}_1=\vect{p}_1$,$\mat{q}_2=\vect{p}_2$なので,$\mat{A}=\lambda_1\vect{p}_1\trps{\vect{p}_1}+\lambda_2\vect{p}_2\trps{\vect{p}_2}$です.
なぜ$\mat{P}$が直交行列のときは$\vect{q}_1$,$\vect{q}_2$が消えるのでしょうか.その理由は,$\mat{P}$が直交行列のときは,$\vect{p}_1$と$\vect{p}_2$が正規直交基底をなし,$st$座標が直交座標系になるからです.次の図を見てください.
st座標が直交座標系でないときの様子
以下では$\vect{p}_1$,$\vect{p}_2$の長さはともに$1$であるとします.このとき$\trps{\vect{p}_2}\vect{x}=\vect{p}_2\cdot\vect{x}$は,$\vect{x}$を$\vect{p}_2$方向へと正射影したベクトルの長さです.よって,図中に縦線で示された三角形は直角三角形です.そして図から,$\vect{p}_1$と$\vect{p}_2$が直交していないときは,$\vect{x}$の$t$座標と$\vect{p}_2\cdot\vect{x}$は一致しないことが分かります.逆に,$\vect{p}_1$と$\vect{p}_2$が直交していれば,両者は一致します.
st座標が直交座標系であるときの様子
$\vect{p}_1$,$\vect{p}_2$の長さがともに$1$で,かつ直交するとき,$\mat{P}$は直交行列になり,その逆も成り立ちます.そのため,$\mat{P}$が直交行列であれば,$s$,$t$を計算するのに$\vect{q}_1$,$\vect{q}_2$を定義しなくともよいわけです.
以上の議論は$n$次元で成立します.つまり,$n\times n$実行列$\mat{A}$が直交行列$\mat{P}=\inlinevec{\vect{p}_1 & \cdots & \vect{p}_n}$で対角化されるとき,$\mat{\Lambda}=\mat{P}^{-1}\mat{A}\mat{P}$の$(i,i)$成分を$\lambda_i$とおくと
\begin{equation}
\mat{A} = \lambda_1\vect{p}_1\trps{\vect{p}_1}+\dots+\lambda_n\vect{p}_n\trps{\vect{p}_n}
\end{equation}
が成立します.$\lambda_1,\dots,\lambda_n$の値がすべて異なるとき,これを$\mat{A}$のスペクトル分解といいます(一般の場合については参考文献を参照してください).
ここではスペクトル分解の応用例として,データを要約する手法について説明します.
$n$人の生徒が4科目の試験を受け,次のような結果が得られたとします(この表をそのまま行列とみなしたものを$\mat{D}$とします).
国語 | 算数 | 理科 | 社会 | |
---|---|---|---|---|
生徒1 | 90 | 92 | 87 | 94 |
生徒2 | 70 | 68 | 74 | 71 |
生徒3 | 59 | 80 | 70 | 62 |
$\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ |
生徒$n$ | 82 | 76 | 69 | 74 |
よく勉強している生徒はどの科目もそれなりに良い得点をとると考えられるので,各科目の得点には相関があると考えられます.そこで,各科目の得点を重みづけして足すことで,「総合得点」のような数値を算出できないか考えてみます.より正確には
\begin{equation}
(\text{総合得点}) = w_1((\text{国語の得点})-(\text{国語の平均点})) + \dots + w_4((\text{社会の得点})-(\text{社会の平均点}))
\end{equation}
となるような$\vect{w}=\trps{\inlinevec{w_1 & \cdots & w_4}}\in\numset{R}^4$を計算してみます.
まず,定数倍の差を除くため,$\vect{w}$の長さは$1$であるという制約を課します.総合得点という変量は要するに,4つの変量を要約した変量ですから,各生徒間での差異が大きければ大きいほど,要約によって情報が失われていないと考えられます.そこで,総合得点の標本分散が最大になるように$\vect{w}$を決定しましょう.
$\mat{D}$から各科目ごとに平均点を引いた行列を$\mat{A}$とおくと,各生徒の総合得点を並べた表は$\mat{A}\vect{w}$です.また,標本分散$V$は表の2乗和
\begin{equation}
V = \frac{\vnorm{\mat{A}\vect{w}}^2}{n} = \frac{\trps{\vect{w}}\trps{\mat{A}}\mat{A}\vect{w}}{n}
\end{equation}
です.
$\trps{\mat{A}}\mat{A}$は$4\times 4$対称行列なので,直交行列で対角化できます.よって,相異なる固有値が$4$個あると仮定すると,$\trps{\mat{A}}\mat{A}$は次のようにスペクトル分解できます.
\begin{equation}
\trps{\mat{A}}\mat{A} = \lambda_1\vect{p}_1\trps{\vect{p}_1}+\dots+\lambda_4\vect{p}_4\trps{\vect{p}_4}
\end{equation}
また,$\basis{B}=\Set{\vect{p}_1,\dots,\vect{p}_4}$は$\numset{R}^4$の正規直交基底なので,$\vect{w}$は$\vect{w}=t_1\vect{p}_1+\dots+t_4\vect{p}_4$とおけます.すると,$\basis{B}$の正規直交性から
\begin{align}
\trps{\mat{A}}\mat{A}\vect{w} &= (\lambda_1\vect{p}_1\trps{\vect{p}_1}+\dots+\lambda_4\vect{p}_4\trps{\vect{p}_4})(t_1\vect{p}_1+\dots+t_4\vect{p}_4) \\
&= \lambda_1t_1\vect{p}_1+\dots+\lambda_4t_4\vect{p}_4, \\
\trps{\vect{w}}\trps{\mat{A}}\mat{A}\vect{w} &= (t_1\trps{\vect{p}_1}+\dots+t_4\trps{\vect{p}_4})(\lambda_1t_1\vect{p}_1+\dots+\lambda_4t_4\vect{p}_4) \\
&= \lambda_1t_1^2+\dots+\lambda_4t_4^2
\end{align}
となります.よって,次式が成立します.
\begin{equation}
V = \frac{\trps{\vect{w}}\trps{\mat{A}}\mat{A}\vect{w}}{n}
= \frac{\lambda_1t_1^2+\dots+\lambda_4t_4^2}{n}
\end{equation}
$\lambda_1,\dots,\lambda_4$はすべて異なると仮定しているので,$\lambda_i=\max\Set{\lambda_1,\dots,\lambda_4}$となる$i\in\Set{1,\dots,4}$は一意に定まります.また,$\basis{B}$は正規直交基底なので$\vnorm{\vect{w}}=1\iff t_1^2+\dots+t_4^2=1$です.よって,上の式から$V$の値が最大になるのは
\begin{equation}
t_k = \begin{cases}
1 & \text{($k=i$)}, \\
0 & \text{($k\neq i$)}
\end{cases}
\end{equation}
のときであることが分かります.このとき$\vect{w}=\vect{p}_i$なので,$V$の値が最大になるような重み$\vect{w}$は$\vect{w}=\vect{p}_i$です.
以上から,総合得点は$\trps{\mat{A}}\mat{A}$をスペクトル分解することで求められることが分かりました.実は,この手法をより発展させると「主成分分析」という手法に繋がります(詳しくは参考文献を参照してください).