E資格取得講座の解説に出てきた特異値分解SVDについてもっと調べてみた。
#特異値分解 SVD
行列$A$ $(A \in \mathbb{R}^{m \times n},rank A = r)$に対して、直交行列$U \in \mathbb{R}^{m \times m},V \in \mathbb{R}^{n \times n}$が存在して
以下のように分解できるというのが特異値分解である。
$A = U\Sigma V^T$
$
\Sigma = \begin{bmatrix}
\Sigma _+ & 0 \\
0 & 0
\end{bmatrix}
$
$\Sigma _+ = diag(\lambda _1,\lambda _2,\cdots,\lambda _r)$
直交行列$U,V$を列ベクトル $u_i,v_i$を用いて
$U = \begin{bmatrix} u_1,v_2,\cdots ,u_r, \cdots , u_m\end{bmatrix}$
$V = \begin{bmatrix} v_1,v_2,\cdots ,v_r, \cdots , v_n\end{bmatrix}$
とすると、
$A = \sigma_1 u_1 v_1^T + \sigma_2 u_2 v_2^T + \cdots \sigma_r u_r v_r^T$
と変形できる。
$u_i,v_i$は正規ベクトルなので、$A$への寄与率は$\lambda_i$によってほぼ決まる。
実際に、特異値$\lambda_i$が小さい項を無視した近似行列$A_k$は以下となる。
$A_k = \sigma_1 u_1 v_1^T + \sigma_2 u_2 v_2^T + \cdots \sigma_k u_k v_k^T$ $(k < r)$
この時の打切り誤差は
${||A - A_k||}_F = \sqrt{{\sigma_{k+1}}^2 + \cdots + {\sigma_r}^2}$
${|| : ||}_F$ は行列のフロベニウスノルム
となり、$k$個のベクトル$u _i \in \mathbb{R}^{m \times 1}$と$k$個のベクトル$v _i \in \mathbb{R}^{n \times 1}$と$k$個のスカラ値$\sigma _i$で
$A \in \mathbb{R}^{m \times n}$を近似することができる。
#特異値分解SVDと主成分分析の関係
統計学では次数削減に用いられる手法として主成分分析PCAがあり、その関連性を説明している記事があったので紹介する。
[PCAとSVDの関連について]
(https://qiita.com/horiem/items/71380db4b659fb9307b4)
こちらの記事でどちらも同じ結果となり、共分散行列と特異値にはシンプルな関係が成立している。
#主成分分析削減と自己符号化器
ニューラルネットワークで用いられる自己符号化器と主成分分析との比較については以下記事が分かりやすい。
https://qiita.com/ta-ka/items/44f4288e8723a7bc9a75
自己符号化器の活性化関数を恒等写像$f(a) = a$とした場合に同様の効果が得られるようである。
活性化関数を非線形関数にまで拡張すれば、より複雑な非線形な次数削減が行えるといえ
複雑な予測問題に対してディープニューラルネットワークが良い予測精度を実現できる理由があるのだろう。