この記事では、次元削減のためのシンプルな手法である主成分分析の背後にある数学的基礎を紹介します。
主成分分析の高レベルのアイデアは、与えられたデータセットの次元を削減し、すべての変数(特徴)が互いに独立である新しいデータセットに変換することです。この変換を以下のように示します:
$$ Y = PX \tag{0} $$
ここで、$X \in R^{m \times n}$は$m$のインスタンスと$n$の変数を持つ元のデータセットであり、$P \in R^{n \times r}$は次元削減行列であり、$Y \in R^{m \times r}$は$r$の変数を持つ変換されたデータセットです。データセット行列$X$に情報がどのように保存されているかをよりよく理解するために、データセット行列$X$の特徴変数の分散と共分散の概念を使用できます。$v_a$を変数ベクトル$v \in R^n$の変数として示しましょう。$v_a$の分散は:
$$ \mathrm{Var}(v_a) = \frac{1}{m} \sum_{i=1}^{m} (v_a^i - E[v_a])^2 \tag{1} $$
分散の大きさは、この変数に埋め込まれた情報の量を示すために使用できます。情報を含まない変数は、ゼロ分散の定数です。共分散は、別の指標として、2つの変数の依存関係のレベルを示します:
$$ \mathrm{Cov}(v_a, v_b) = \frac{1}{m} \sum_{i=1}^{m} (v_a^i - E[v_a])(v_b^i - E[v_b]) \tag{2} $$
分散と共分散の両方を行列形式で表現するために、共分散行列の概念を使用できます。ランダム変数ベクトル $v$ の共分散行列を $C$ と表すことにしましょう:
\begin{align} C &= \begin{bmatrix} \mathrm{Var}(v_1) & \mathrm{Cov}(v_1, v_2) & \dots & \mathrm{Cov}(v_1, v_n) \\ \mathrm{Cov}(v_2, v_1) & \mathrm{Var}(v_2) & \dots & \mathrm{Cov}(v_2, v_n) \\ \vdots & \vdots & \ddots & \vdots \\ \mathrm{Cov}(v_n, v_1) & \mathrm{Cov}(v_n, v_2) & \dots & \mathrm{Var}(v_n) \end{bmatrix} \tag{3} \\ \end{align}
行列 $C$ の対角成分は各変数の分散であり、非対角成分は任意の二つの変数の共分散です。すべての $E[v_i] = 0$ によって $X$ を正規化した場合、変換された $X$ は同じ情報を保持します。そのため、共分散行列は次のように簡略化できます:
\begin{align} C &= \begin{bmatrix} \frac{1}{m} \sum_{i=1}^{m} (v_1)^2 & \frac{1}{m} \sum_{i=1}^{m} v_1 v_2 & \dots & \frac{1}{m} \sum_{i=1}^{m} v_1 v_n \\ \frac{1}{m} \sum_{i=1}^{m} v_2 v_1 & \frac{1}{m} \sum_{i=1}^{m} (v_2)^2 & \dots & \frac{1}{m} \sum_{i=1}^{m} v_2 v_n \\ \vdots & \vdots & \ddots & \vdots \\ \frac{1}{m} \sum_{i=1}^{m} v_n v_1 & \frac{1}{m} \sum_{i=1}^{m} v_n v_2 & \dots & \frac{1}{m} \sum_{i=1}^{m} (v_n)^2 \end{bmatrix} \tag{3} \\ &= \frac{1}{m} X^T X \tag{4} \end{align}
(3)から、$C$が元のデータセット$X$に関連する共分散行列であることがわかります。変換されたデータセット$Y = XP$についても、(4)と同じ手順を使って共分散行列$D \in R^{r \times r}$を得ることができます。興味深いことに、$D$は$P$と$C$のみを用いて書き換えることができます:
\begin{align} D &= \frac{1}{m} Y^T Y \\ &= \frac{1}{m} (XP)^T (XP) \\ &= \frac{1}{m} P^T X^T(XP) \\ &= P^T \frac{1}{m} X^T X P \\ &= P^T C P \tag{5} \quad \text{(式5)} \end{align}
新しい特徴変数ベクトルの分散と共分散を含む共分散行列 $D$ があるので、私たちの目的は、この新しい特徴変数ベクトルの任意の2つの確率変数がゼロの共分散を持つような $P$ を見つけることです。また、$D$ は $C$ よりも小さな次元を持つため、この新しい特徴変数ベクトルが元のデータセットからできるだけ多くの情報を保持することも望んでいます。$\lambda_1 \geq \lambda_2 \dots \lambda_r$ という $r$ 個の実数値が与えられたとき、$D$ は対角共分散行列であることを望みます:
\begin{align} D &= \begin{bmatrix} \lambda_1 & 0 & \dots & 0 \\ 0 & \lambda_2 & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \dots & \lambda_r \end{bmatrix} \tag{6} \\ \end{align}
このプロセスは、$D$を対角行列に変換するための$P$を見つけることを対角化と呼び、線形代数において重要です(対角化可能な行列を参照)。これは行列$C$の固有分解を含み、この場合、$C$は実対称行列です。したがって、$C$に固有分解を適用すると、次のことが得られます:
\begin{align} C &= P D P^T \tag{7} \end{align}
ここで、$P$は直交行列です。
主成分分析(PCA)の問題を特異値分解(SVD)で解くのも一般的です。まず、$X$にSVDを適用しましょう:
\begin{align} X &= U \Sigma V^T \tag{8} \end{align}
ために $X^T X$、私たちは持っています:
\begin{align} X^T X &= (U \Sigma V^T)^T U \Sigma V^T \\ &= V \Sigma^T U^T U \Sigma V^T \\ &= V \Sigma^T \Sigma V^T \tag{$U^T U = I$} \\ &= V \Sigma \Sigma V^T \tag{$\Sigma^T = \Sigma$, それは$\Sigma$が対称行列であるため} \\ &= V \Sigma^2 V^T \tag{9} \end{align}
与えられた (7) と (9) により、$P = V$ であり、$m D = \Sigma^2$ であることが容易にわかります。ここで、$m$ は定数です。これは、$X^T X$ を計算することなく、$X$ に対して SVD を適用するだけで PCA を解決できることを意味します。