主成分分析(以下、PCA)の数式を導出・解説します。流れが詳しくわかるよう、丁寧に式変形するよう心がけております。PCAはデータ分布の様子をなるべく保持したままデータを低次元表現する手法です。その際主軸を変換するのですが、この主軸がデータの共分散行列の固有値問題に帰着し、最大固有値に対する固有ベクトルの向きが第一主軸となることを示します。
概略
PCAでは、データ分布の分散、すなわち広がりが大きくなるような方向の主軸を見つけ、相関の少ないデータの表現を得る。この際、分散が大きい軸のみをピックアップすることで、データ分布の情報をなるべく残したまま、データの次元を削減することが可能となる。
数式
①平均ベクトルを求める
まず、m次元空間中に、N個のデータxi(i=1,…,N)があるとする。データの平均ベクトルmは
m=N1i=1∑Nxi
②データをずらす
N個のデータxiを、平均ベクトル分mずらしたものをriとおくと
ri=xi−m
これにより白色化し、riの平均rˉはrˉ=0となる。
③単位ベクトルへ射影
白色化したデータriをある1次元単位ベクトルuに射影(ri⊤u)し、分散Sを計算する。
S=N1i=1∑N(ri⊤u−rˉ⊤u)2=N1i=1∑N(ri⊤u)2=N1i=1∑N(ri⊤u)⊤(ri⊤u)=N1i=1∑Nu⊤riri⊤u=u⊤(N1i=1∑Nriri⊤)u=u⊤(N1i=1∑N(xi−m)(xi−m)⊤)u=u⊤Σu
ここで、Σはxiの共分散行列であり、u⊤Σuは二次形式である。
④固有値問題に帰着
共分散行列は半正定値対称行列なので、直交対角化が可能である。つまり、共分散行列Σのある固有値λiに対する固有ベクトルをuiとすると、Σui=λiuiとなるのでU=[u1⋯uN]とおくと、
ΣU∴U⊤ΣU=Σ[u1⋯uN]=[Σu1⋯ΣuN]=[λ1u1⋯λNuN]=[u1⋯uN]λ1⋱λN(λ1≥⋯≥λN)=UΛ=Λ
となり、共分散行列の対角化の式となる。
ここで、uを直交行列U⊤により変換したものをu’(直交変換なので単位ベクトル)とおく。
すなわち、u’=U⊤u⇔u=Uu’ とすると
u⊤ΣuS=(Uu’)⊤Σ(Uu’)=u’⊤U⊤ΣUu’=u’⊤Λu’=i=1∑Nλiui’2≤λ1i=1∑Nui’2=λ1
ここで、左辺は③より分散Sを表していることに注意する。
- 一般に、対称行列Aの2次形式x⊤Axを最大にする単位ベクトルはAの最大固有値λ1に対する固有ベクトルで、その値はλ1となる
すなわち、共分散行列の固有値は、データ分布を一次元に落としたときの分散を表しており、固有ベクトルはその分散が得られる軸方向を表す。そして、固有値の大きい順に対応する軸が決まる。
⑤結論
以上より、PCAの第1主軸は、
u1=∣∣u∣∣=1argmaxu⊤Σu
すなわち、データの共分散行列の最大固有値に対応する固有ベクトルの向きが第一主軸となる。
発展
カーネルトリックを用いた、カーネルPCAについて式の導出を解説しております。