thumbnail

カーネル主成分分析(カーネルPCA)の数式の導出方法を徹底解説

カーネル主成分分析(以下カーネルPCA)の数式を導出・解説します。流れが詳しくわかるよう、丁寧に式変形するよう心がけております。カーネルPCAは読んで字が如く、主成分分析(以下PCA)でカーネル法を用いたものです。PCA同様に主軸を変換しますが、この第1主軸がカーネル行列の最大固有値に対応する固有ベクトルの向きであることを数式で説明します。

概要

通常のPCAでは線形データにしか対応できないが、カーネルPCAは読んで字が如くカーネルトリックを用いるので、非線形データに対してPCAを適用することが可能となる。

PCAの数式の導出はこちらの記事から。

数式

①最適化問題導出まで

データをN次元ベクトルx\mathbf{x}で表す。

元のデータx\mathbf{x}が存在する空間をΩ\Omegaとし、Ω\Omegaから高次元特徴空間HHへの写像をϕ:ΩH\boldsymbol{\phi}:\Omega \to Hとする。
空間Ω\Omega上のデータ{xi}i=1N\left\{\mathbf{x}_i\right\}_{i=1}^Nを写像した{ϕ(xi)}i=1N\left\{\boldsymbol{\phi}(\mathbf{x}_i)\right\}_{i=1}^Nに対して、特徴空間HHでの第一主軸をf\mathbf{f}とし、この1次元上での最大分散を考える。内積の記号を,\langle\cdot , \cdot\rangleとすると、

maxf=1Var[f,ϕ(x)]=maxf=11Ni=1N(f,ϕ(xi)1Nj=1Nϕ(xj))2\begin{align*} &\quad\max_{\|\mathbf{f}\|=1}\mathrm{Var}[\langle \mathbf{f}, \boldsymbol{\phi}(\mathbf{x}) \rangle] \\&= \max_{\|\mathbf{f}\|=1}\frac{1}{N}\sum_{i=1}^N\left(\langle\mathbf{f},\boldsymbol{\phi}(\mathbf{x}_i)-\frac{1}{N}\sum_{j=1}^N \boldsymbol{\phi}(\mathbf{x}_j)\rangle\right)^2 \cdots①\end{align*}

ϕ(xi)\boldsymbol{\phi}(\mathbf{x}_i)からϕ(x)\boldsymbol{\phi}(\mathbf{x})の平均を引いたものをϕ~(xi)\tilde{\boldsymbol{\phi}}(\mathbf{x}_i)とおくと、

ϕ~(xi)=ϕ(xi)1Ni=1Nϕ(xi)\tilde{\boldsymbol{\phi}}(\mathbf{x}_i) = \boldsymbol{\phi}(\mathbf{x}_i) – \frac{1}{N}\sum_{i=1}^N\boldsymbol{\phi}(\mathbf{x}_i)

より、①式は

maxf=11Ni=1Nf,ϕ~(xi)2\max_{\|\mathbf{f}\|=1}\frac{1}{N}\sum_{i=1}^N\langle\mathbf{f},\tilde{\boldsymbol{\phi}}(\mathbf{x}_i) \rangle^2\cdots②

ここで、

f=i=1Naiϕ~(xi)\mathbf{f}=\sum_{i=1}^N a_i\tilde{\boldsymbol{\phi}}(\mathbf{x}_i)\cdots③

とおける。なぜならば、span{ベクトルの集合}をベクトルの集合が張る空間とすると、H0=span{ϕ~(xi)}i=1NH_0 = \mathrm{span}\left\{\tilde{\boldsymbol{\phi}}(\mathbf{x}_i)\right\}_{i=1}^Nとしたとき、H=H0H0H=H_0\oplus{H}_0^\botと分解でき、f=f0f(f0H0,fH0)\mathbf{f}=\mathbf{f}_0\oplus\mathbf{f}_\bot(\mathbf{f}_0\in{H_0},\mathbf{f}_\bot\in{H_0^{\bot}})となる。

ゆえにfϕ~(xi)\mathbf{f}_\bot\bot\tilde{\boldsymbol{\phi}}(\mathbf{x}_i)となり、②式の内積計算において、f\mathbf{f}f\mathbf{f}_\bot成分と、それに対応するϕ~(xi)\tilde{\boldsymbol{\phi}}(\mathbf{x}_i)の成分の項の積は0となり、②式の評価と関係がなくなる。したがってf\mathbf{f}は③式の形、すなわちH0H_0の元として表せれば十分である。よって②式は、

maxf=11Ni=1Nj=1Najϕ~(xj),ϕ~(xi)2=maxf=11Ni=1N(j=1Naj)2ϕ~(xi),ϕ~(xj)2=maxf=11Ni=1N(j=1Naj)2Kij2=maxf=11NaK2a \begin{align*} & \max_{\|\mathbf{f}\|=1}\frac{1}{N}\sum_{i=1}^N\Bigg\langle\sum_{j=1}^Na_j\tilde{\boldsymbol{\phi}}(\mathbf{x}_j), \tilde{\boldsymbol{\phi}}(\mathbf{x}_i) \Bigg\rangle^2 \\ &= \max_{\|\mathbf{f}\|=1}\frac{1}{N}\sum_{i=1}^N\left(\sum_{j=1}^Na_j\right)^2\langle\tilde{\boldsymbol{\phi}}(\mathbf{x}_i),\tilde{\boldsymbol{\phi}}(\mathbf{x}_j)\rangle^2 \\ &=\max_{\|\mathbf{f}\|=1}\frac{1}{N}\sum_{i=1}^N\left(\sum_{j=1}^Na_j\right)^2K_{ij}^2 \\ &=\max_{\|\mathbf{f}\|=1}\frac{1}{N}\mathbf{a}^\top\mathbf{K}^2\mathbf{a} \end{align*}

ここで、K\mathbf{K}はカーネル行列(グラム行列)である。

また、

f2=1Niaiϕ(xj),1Niaiϕ(xj)=aKa\begin{align*} \|f\|^2 &= \Bigg\langle\frac{1}{N}\sum_{i}a_i\boldsymbol{\phi}(\mathbf{x}_j),\frac{1}{N}\sum_{i}a_i\boldsymbol{\phi}(\mathbf{x}_j)\Bigg\rangle \\&=\mathbf{a}^\top\mathbf{K}\mathbf{a}\end{align*}

②最適化問題を解く

したがって、第一主軸は最大化問題

maxmize1NaK2as.t.aK2a=1 \begin{align*} & maxmize \qquad \frac{1}{N}\mathbf{a}^\top\mathbf{K}^2\mathbf{a} \\ & s.t. \qquad\qquad\quad\mathbf{a}^\top\mathbf{K}^2\mathbf{a}=1 \end{align*}

となる。ここでb=K12a\mathbf{b}=\mathbf{K}^\frac{1}{2}\mathbf{a}とおくと、

maxmize1NbKbs.t.b=1 \begin{align*} & maxmize \qquad \frac{1}{N}\mathbf{b}^\top\mathbf{K}\mathbf{b} \\ & s.t. \qquad\qquad\quad\|\mathbf{b}\|=1 \end{align*}

この最適化問題のラグランジュ関数Lは

L(b,λ)=1NbKbλ(bb1)L(\mathbf{b},\lambda)=\frac{1}{N}\mathbf{b}^\top\mathbf{K}\mathbf{b}-\lambda(\mathbf{b}^\top\mathbf{b}-1)

Lb=0\frac{\partial{L}}{\partial\mathbf{b}}=\mathbf{0}とすると

1N2Kb2λb=0\frac{1}{N}2\mathbf{K}\mathbf{b}-2\lambda\mathbf{b} = \mathbf{0}
Kb=Nλb\therefore \mathbf{K}\mathbf{b}=N\lambda\mathbf{b}

となり、固有値問題に帰着する。結局、グラム行列の最大固有値に対応する固有ベクトルが第一主軸になる。

なお、行列の微分による式変形がわからない方は、以下の記事を参考にされたし。