らんだむな記憶

blogというものを体験してみようか!的なー

特徴量の次元を低下させるとか(3)

特徴量の次元を低下させるとか(2) - らんだむな記憶で大分視覚的な雰囲気をつかんだので、後はロジックを追いかけたい。

$(x_1,\ \cdots,\ x_m),\ x_n \in \mathbb{R}^d,\ 1 \le n \le m $を特徴量のデータとし、$\frac{1}{m}\sum_{n = 1}^m x_n = 0$とする。
$\Sigma = \frac{1}{m}\sum_{n = 1}^m x_n x_n^T$を共分散行列とする。これは対称半正定値行列になっている。
よって、対角化を考えると直交行列$V = (e_1,\ \cdots,\ e_d)$を用いて、$\Sigma = V \Lambda V^T$と書ける。ここで、
\begin{equation}
\Lambda =
\begin{pmatrix}
\lambda_1 & & \\
& \ddots & \\
& & \lambda_d
\end{pmatrix}
\end{equation}
$\Sigma$固有値からなる対角行列で、$\lambda_1 \ge \cdots \ge \lambda_d \ge 0$の順に並べてあるものとする。
$V$は直交行列であることから$\{ e_j \}_{j=1}^d$は$\mathbb{R}^d$の正規直交基底になっていることにも注意する。
また、対角化をスペクトル分解の形で書くと
$$ \Sigma = \sum_{j = 1}^d \lambda_j \langle \,\cdot\,,\ e_j \rangle e_j$$
となる。
$k \le d$に対して、$V_k := (e_1,\ \cdots,\ e_k)$とする。即ち、列ベクトルを序数の若い順に$k$個並べたものである。大きい固有値に属する固有ベクトルを$k$個抽出したとも言える。

次に、$|V_k V_k^T x_n - x_n|^2$について評価する。
$V_k^T x_n = (\langle x_n,\ e_1\rangle,\ \cdots,\ \langle x_n,\ e_k\rangle)^T$であるので、$V_k V_k^T x_n = \sum_{j = 1}^k \langle x_n,\ e_j\rangle e_j$である。要するに、正規直交基底$\{e_j\}_{j=1}^d$に関する$x_n$の展開を$k$で止めたものである。或は、$\{e_j\}_{j=1}^k$で張られる$\mathbb{R}^d$の部分空間$\mathcal{V}_k = \mathrm{span}\{ e_1,\ \cdots, e_k \}$への$x_n$の射影とも言える。$\mathcal{V}_k$への射影作用素を$P_k$と書くと、$P_k = V_k V_k^T$が成立する。
同様に$x_n$の展開を考えると、$x_n = \sum_{j = 1}^d \langle x_n,\ e_j\rangle e_j$であるので、Parsevalの等式から、
\begin{align}
|V_k V_k^T x_n - x_n|^2 &= |\sum_{j = 1}^k \langle x_n,\ e_j\rangle e_j - \sum_{j = 1}^d \langle x_n,\ e_j \rangle e_j|^2 \\
&= |\sum_{j > k} \langle x_n,\ e_j\rangle e_j |^2 \\
&= \sum_{j > k} | \langle x_n,\ e_j\rangle |^2 \hspace{5em} (1)
\end{align}
を得る。
$\lambda_j e_j = \Sigma e_j = \frac{1}{m}\sum_{n=1}^m x_n x_n^T e_j = \frac{1}{m}\sum_{n=1}^m \langle x_n,\ e_j \rangle x_n$であるので、$e_i$との内積をとると、
\begin{equation}
\frac{1}{m}\sum_{n=1}^m \langle x_n,\ e_i \rangle \langle x_n,\ e_j \rangle = \lambda_j \delta_{ij}
\end{equation}
を得る。ここで$\delta_{ij}$はクロネッカーのデルタである。特に、$i = j$と置いて、
\begin{equation}
\frac{1}{m}\sum_{n=1}^m | \langle x_n,\ e_j \rangle |^2 = \lambda_j \hspace{5em} (2)
\end{equation}
を得る。
(1)と(2)を用いると、
\begin{align}
\frac{1}{m} \sum_{n=1}^m |V_k V_k^T x_n - x_n|^2 &= \frac{1}{m} \sum_{n=1}^m \sum_{j > k} | \langle x_n,\ e_j\rangle |^2 \\
&= \frac{1}{m} \sum_{j > k} \sum_{n=1}^m | \langle x_n,\ e_j\rangle |^2 \\
&= \sum_{j > k} \lambda_j \hspace{5em} (3)
\end{align}
を得る。(3)の右辺を見ると、小さい固有値の和になっているので、$\frac{1}{m} \sum_{n=1}^m |V_k V_k^T x_n - x_n|^2$ は極力小さいものと考えられる。$V_k V_k^T x_n = \sum_{j = 1}^k \langle x_n,\ e_j\rangle e_j \in \mathcal{V}_k$であったので、少なくとも、$\{ e_j \}_{j=1}^d$から$k$個のベクトルを選んで生成する$k$次元部分空間への射影を考える中では、$P_k = V_k V_k^T$は元データとの距離を一番小さくする射影になっている。

まとめると、$\Sigma = \frac{1}{m}\sum_{n = 1}^m x_n x_n^T$のより大きい固有値に属する固有ベクトルを$k$個選んで作った$V_k$から生成される$k$次元部分ベクトル空間$\mathcal{V}_k$と、その上への直交射影$P_k = V_k V_k^T$は、元の$d$次元データ$\{ x_n \}_{n=1}^m \subset \mathbb{R}^d$をその大きさを極力変えないように$k$次元データへと次元低下させるための空間と射影を与えていることになる。

―――――・・・

Amazon.co.jp: 深層学習 (機械学習プロフェッショナルシリーズ): 岡谷 貴之: 本 5.3.2 によると、$\mathcal{V}_k,\ P_k = V_k V_k^T$は極力どころか元データとの差を最小とする$k$次元部分空間を与えているようなのだが、この最小性についてはまだ理解していない。

上記の議論は、「元データの情報を極力壊さずに次元を低下させたい」⇒「$\mathcal{V}_k$がそのような空間」だ、という直接的な議論を逆から見た「$\mathcal{V}_k$という空間を考える」⇒「元データの情報を極力壊さずに次元を低下させるような空間である」という内容を確認したに過ぎない。
なので、本来の直接的な議論をしないと、十分ではないと言える。