こんにちは。前回、射影行列を学びました。
![Rendered by QuickLaTeX.com n](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-b170995d512c659d8668b4e42e1fef6b_l3.png)
次元ベクトル
![Rendered by QuickLaTeX.com a](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-5c53d6ebabdbcfa4e107550ea60b1b19_l3.png)
を考えよう。行列
![Rendered by QuickLaTeX.com V](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-63ada879859a9e41fd935f035b7313bc_l3.png)
の列ベクトルが作る空間の中でもっとも
![Rendered by QuickLaTeX.com a](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-5c53d6ebabdbcfa4e107550ea60b1b19_l3.png)
に近いものは
![Rendered by QuickLaTeX.com Vc](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-a0e1da496e7dd274b40f7aeed776a929_l3.png)
という形で表された。ただし、
![Rendered by QuickLaTeX.com c](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-41a04eeea923a1a0c28094a8a4680525_l3.png)
は縦ベクトルとすると
(1) ![Rendered by QuickLaTeX.com \begin{align*} Vc = V(V^TV)^{-1}V^Ta \end{align*}](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-e10f8faeb4e388326aaa9b6c8807066e_l3.png)
となりこれがもっとも
![Rendered by QuickLaTeX.com a](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-5c53d6ebabdbcfa4e107550ea60b1b19_l3.png)
に近いヤツで
![Rendered by QuickLaTeX.com \[V(V^TV)^{-1}V^T \]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-97e8f9811a8a92023930938114b4bf65_l3.png)
Vの列ベクトルがはる空間への射影行列
だった。今回はその
![Rendered by QuickLaTeX.com V](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-63ada879859a9e41fd935f035b7313bc_l3.png)
はどんなやつ?か考える。つまりどんなベクトルが作る空間へ射影すればいいんだ?ということ
データ
(m次元)
平面を貼るベクトルを![Rendered by QuickLaTeX.com U=[v_1, \cdots, v_n]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-d642b49537a756baefa829ba0dc8fead_l3.png)
ただし
, ![Rendered by QuickLaTeX.com i=1,\cdots,n](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-bc53138773c74cf5625a098b321077a0_l3.png)
とする。
目標は
を見つけ出すこと。計算の前にいくつか確認しておこう。
- 実対称行列の固有ベクトルは直行
- 実対称行列は対角化可能
- グラムシュミットで正規直交基底が作れる
- tr(AB) = tr(BA)
- x^T A x = tr(x^T A x)
まず、3番より
射影行列![Rendered by QuickLaTeX.com P_w](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-6e5c586d092f2957d0b41d3483c91a99_l3.png)
は次のようになる
![Rendered by QuickLaTeX.com \[P_w = U(U^TU)^{-1}U^T = UU^T\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-fda46d08091c9c258f54c77e3c8aea3a_l3.png)
ではどうやって
![Rendered by QuickLaTeX.com U](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-2b60fc262803f27ba3717d8ec4eb656d_l3.png)
を決定するかだが、前回同様、分散を最大化させる作戦でいこう。射影後の分散が最大化されるように
![Rendered by QuickLaTeX.com U](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-2b60fc262803f27ba3717d8ec4eb656d_l3.png)
を決定したいので
(2) ![Rendered by QuickLaTeX.com \begin{align*} \sum_{i=1}^{N} \|P_w x^{(i)} \|^2 &=& \sum_{i=1}^{N} \|UU^Tx^{(i)} \|^2 \\ &=& \sum_{i=1}^{N} (UU^Tx^{(i)})^T(UU^Tx^{(i)}) \\ &=& \sum_{i=1}^{N} x^{{(i)}^T}UU^TUU^Tx^{(i)} \\ &=& \sum_{i=1}^{N} x^{{(i)}^T}UU^Tx^{(i)} \\ &=& \sum_{i=1}^{N} tr(x^{{(i)}^T}UU^Tx^{(i)}) \\ &=& \sum_{i=1}^{N} tr(U^Tx^{(i)}x^{{(i)}^T}U) \\ &=& tr(U^TXX^TU) \\ &=& tr(U^T P^TDPU) \\ &=& tr((PU)^T D (PU)) \end{align*}](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-3570cb9c5ab61d52b6ea16a28a935560_l3.png)
ここで、対称行列
![Rendered by QuickLaTeX.com XX^T](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-3123b6365958b8ac4e9d18a278bc21ae_l3.png)
を
![Rendered by QuickLaTeX.com P^TDP](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-e31c0b07bb6f8fe49906d2dd76628917_l3.png)
と変形しました。これを
行列の対角化といいます。ここで、
Pは固有ベクトルを基底とした空間から標準基底の空間への変換行列なんですが、
重要なことは基底(軸)の取り方によって座標が変わるということでしたね。これを踏まえて
![Rendered by QuickLaTeX.com \[tr((PU)^T D (PU))\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-327a84a71488cf8dbb6213530846505f_l3.png)
を最大化させる
![Rendered by QuickLaTeX.com U](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-2b60fc262803f27ba3717d8ec4eb656d_l3.png)
の形を考えよう!例えば
![Rendered by QuickLaTeX.com \[ tr \left( \begin{pmatrix} a & b & c \\ d & e & f \\ \end{pmatrix} \begin{pmatrix} 12 & 0 & 0 \\ 0 & 7 & 0 \\ 0 & 0 & 1 \\ \end{pmatrix} \begin{pmatrix} a & d \\ b & e \\ c & f \end{pmatrix} \right)\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-d0b7f484d8b9901d3f3fb551ea48d044_l3.png)
において
![Rendered by QuickLaTeX.com [a,b,c], [d,e,f]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-e2b2e0facc2fc96dd76263065bac8bd0_l3.png)
を正規直交とするときどんなものがトレースを最大化させるか?
![Rendered by QuickLaTeX.com e_1, e_2](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-36697bc24fdbc185030d1f48a0a3abae_l3.png)
しかないのは明らか。よって
![Rendered by QuickLaTeX.com U](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-2b60fc262803f27ba3717d8ec4eb656d_l3.png)
の列ベクトルには固有ベクトルが並べばいいことがわかります。実際、例えば
![Rendered by QuickLaTeX.com U=p_1](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-e4f5b4654f31b9e0e4a03227bb6c6fce_l3.png)
が最大固有値
![Rendered by QuickLaTeX.com \lambda_1](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-d8bad01e37d6a93d8d77801a4429e98e_l3.png)
に対応する固有ベクトルとする時
![Rendered by QuickLaTeX.com Pp_1](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-120b9fb0df23a45b9a932a5f765b145b_l3.png)
は
![Rendered by QuickLaTeX.com e_1](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-1900a484b687cf3bfd85c929f272f63c_l3.png)
となる(Pが座標変換するから)
(3) ![Rendered by QuickLaTeX.com \begin{align*} tr((PU)^T D (PU)) = tr((Pp_1)^T D (Pp_1)) = tr(e_1^T D e_1) = \lambda_1 \end{align*}](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-a67c93f61d2899c52332f3415e800d7f_l3.png)
となるからです。従って
射影行列
の
は列ベクトルとして固有ベクトルを並べればいいことがわかりました。
次回はこれを実装で確かめましょう。
でわ