Kunst Site
Blogブログ
About Site当サイトについて
Portfolioポートフォリオ
Contact問い合わせ

PCAについて理解したい(理論編)


データサイエンス次元削減教師なし学習
更新日:2022-02-22

この記事は古川研究室 Advent Calendar13 日目の記事です。 本記事は古川研究室の学生が学習の一環として書いたものです。内容が曖昧であったり表現が多少異なったりする場合があります。

本記事では、PCA こと主成分分析について理解した**”い”**をコンセプトに記事を書きました。

はじめに

まず PCA についてざっくりと書きます。

主成分分析とは、多次元の次元を下げる教習なし学習のことです。多次元データを人間が見やすいように 2 次元や 3 次元に落とし込むといったことを行います。低次元空間へ落とし込むとき、データの情報をできるだけ損なわないように、つまりデータの情報を最も含むように(分散値が大きくなるよう)にして落とし込みます。

何が嬉しいのか

では次元削減することで何が嬉しいのでしょうか?

例えば、ワインの成分には水、エタノール、有機酸、糖、グリセリン、アミノ酸、核酸、タンニン、炭酸ガスがあり 9 次元データになります。これらのデータにワインの評価を含めて 10 次元データを考えてみましょう。関係性を図やグラフなどで可視化することで"どういう成分比のときに評価値が高いのか"といったことを把握したいですが、我々人間には 4 次元以上の次元はわかりにくいです。そこで、PCA で我々人間が見やすい 2 次元、3 次元に次元を落とそうとして PCA を使うわけです。

主成分分析

主成分分析では、データの情報を主成分軸という軸に情報を落とし込みます。3 次元に落とし込むなら 3 本の主成分軸、2 次元に落とし込むなら 2 本の主成分軸です。 注意してほしいことは、”空間を平面に"、"平面を直線に"落とし込んでいるのではなく、高次元から低次元への射影を行っているのです。

下図はイメージ図です。赤点のデータ点を 1 本の主成分軸に落とし込んでいます。

主成分分析

前処理

PCA の前処理として中心化というのがあります。中心化ではデータの値から、それらの平均値を引くことで平均 0 にすることです。これにより、データは原点を中心に分布します。

xip=xip−xpˉx_{ip}=x_{ip}-\bar{x_p}xip​=xip​−xp​ˉ​

主成分分析前処理

中心化する理由としては後述します。

どのようにしてやるのか

主成分分析では、情報をできるだけ損なわずにデータを射影します。裏を返せば得られる情報量が最大になればいいということです。したがって、次元削減して得られたデータの分散が最大になればいいということです。これを図を用いて考えてみます。ここで 9 つのデータの 1 つのデータ A に着目します。データを第 1 主成分z1z_1z1​で表す場合、xix_ixi​の情報損失量は主成分軸z1z_1z1​に対して垂線を引いたAB⃗\vec{AB}ABです。

主成分分析データ

ここで、ピタゴラスの定理からOA⃗2=AB⃗2+OB⃗2\vec{OA}^2=\vec{AB}^2+\vec{OB}^2OA2=AB2+OB2の関係が成り立ちます。このとき、データA の情報量はOA⃗\vec{OA}OAで、得られる新たな情報量がOB⃗\vec{OB}OBになり主成分得点と言います。 したがって、9 点のデータに対して以下の関係性が成り立ちます。

”元情報量の 2 乗和=新たな情報量の 2 乗和+損失情報量の 2 乗和” この関係性からわかりますが、損失情報量を最小にすると、新たな情報量が最大になるのがわかります。

この考えは多変数の場合も同じです。したがって、

主成分分析とは変数x1,x2,x3,…,xpx_1,x_2,x_3,\dots,x_px1​,x2​,x3​,…,xp​をできるだけ元々の情報量を損なわないように、N 個の主成分z1,z2,z3,…,zNz_1,z_2,z_3,\dots,z_Nz1​,z2​,z3​,…,zN​に変換する手法のことです。つまり、P 次元から N 次元へ縮小

zn=w11x1+w12x2+w13x2+⋯+w1mxm=∑i=1Nxiwip (p=0,1,2,…,N)z_{n}=w_{11}x_1+w_{12}x_2 + w_{13}x_2 + \cdots + w_{1m}x_m=\sum_{i=1}^{N}x_iw_{ip}~(p=0,1,2,\dots,N)zn​=w11​x1​+w12​x2​+w13​x2​+⋯+w1m​xm​=∑i=1N​xi​wip​ (p=0,1,2,…,N)

z1z_1z1​が第 1 主成分、z2z_2z2​が第 2 主成分、znz_nzn​が第 n 主成分と言います。

主成分分析では、損失情報量を最小にすると、新たに得られる情報量が最大になります。この特性を利用して新たな情報量を最大化する最適化問題として扱うことができます。

max⁡w 1N∑i=1Nf(xi)2=1N∑i=1N(xiwip)2\max_{w}~\frac{1}{N}\sum_{i=1}^Nf(x_i)^2=\frac{1}{N}\sum_{i=1}^N(x_iw_{ip})^2maxw​ N1​∑i=1N​f(xi​)2=N1​∑i=1N​(xi​wip​)2

subject  to       wTw=1subject~~to~~~~~~~w^Tw=1subject  to       wTw=1

この subject to は制約条件です。wTww^TwwTwは主成分軸zzzに対してwwwに正規直交基底の役割を持たしています。

式を変形していきます。

\begin{equation*}\begin{split}\frac{1}{N}\sum_{i=1}^N(x_iw_{ip})^2= \frac{1}{N}\sum_{i=1}^N(x_iw_{ip})^T(x_iw_{ip})=\frac{1}{N}\sum_{i=1}^{N}w_{ip}^{T}x_{i}^Tx_{i}w_{ip}=\frac{1}{N}w^T\sum_{i=1}^N(x_i^Tx_i)w=w^TX^TXw\end{split}\end{equation*}

この式のXTXX^TXXTXはN×DN \times DN×Dの行列であり、それぞれの要素はxi−xˉx_i-\bar{x}xi​−xˉです。したがって、XTXX^TXXTXは分散・共分散行列になります。

ここで主成分分析の最適化問題を行列として表現します。

[st-mybox title="主成分分析の最適化問題" fontawesome="" color="#757575" bordercolor="#f3f3f3" bgcolor="#f3f3f3" borderwidth="0" borderradius="5" titleweight="bold" fontsize="" myclass="st-mybox-class" margin="25px 0 25px 0"]

max⁡w 1NwTΩw\max_{w}~\frac{1}{N}w^T \Omega wmaxw​ N1​wTΩw

subject  to       wTw=1subject~~to~~~~~~~w^Tw=1subject  to       wTw=1

Ω=XTX\Omega=X^TXΩ=XTXは学習データの分散・共分散行列

上記の式において制約条件がない場合を考えると、明らかに解wwwは∞\infty∞であることがわかります。 制約条件の付いた最適化問題を解く手法としてラグランジュの未定乗数法があります。本記事ではラグランジュの未定乗数法を用います。

ラグランジュの未定乗数法

ラグランジュの未定乗数法自体については別記事を参考にしてください。

まず、最適化問題からラグランジュ関数L(λ,w)L(\lambda,w)L(λ,w)の作成をします。

L(w,λ)=wTΩw−λ(wTw−1)L(w,\lambda)=w^T \Omega w-\lambda(w^Tw-1)L(w,λ)=wTΩw−λ(wTw−1)

変数wwwについて偏微分すると

∂L∂w=(Ω+ΩT)w−2λw=0\frac{\partial L}{\partial w} = (\Omega+\Omega^T)w-2\lambda w=0∂w∂L​=(Ω+ΩT)w−2λw=0

Ω\OmegaΩは分散・共分散行列であり対称行列なのでX=XTX=X^TX=XTが成り立つ。したがって次の式が成り立つ。

2Ωw−2λw=02\Omega w-2\lambda w=02Ωw−2λw=0

Ωw=λw\Omega w = \lambda wΩw=λw

この微分式の例は以下です。

wTXw=(w1,w2)(x11x12x21x22)(w11w21)=w1w1x11+w2w1x21+w1w2x12+w2w2x22w^TXw=(w_1, w_2)\begin{pmatrix} x_{11} & x_{12} \\ x_{21} & x_{22} \end{pmatrix}\begin{pmatrix} w_{11} \\ w_{21} \end{pmatrix}=w_1w_1x_{11}+w_2w_1x_{21}+w_1w_2x_{12}+w_2w_2x_{22}wTXw=(w1​,w2​)(x11​x21​​x12​x22​​)(w11​w21​​)=w1​w1​x11​+w2​w1​x21​+w1​w2​x12​+w2​w2​x22​

\begin{equation*}\begin{split}\frac{\partial (w^TXw)}{\partial w}=\begin{pmatrix}\frac{\partial (w^TXw)}{\partial w_1}\ \\ \frac{\partial (w^TXw)}{\partial w_2}\end{pmatrix}=\begin{pmatrix}2w_1x_{11}+w_2x_{21}+w_2x_{12}\\ w_1x_{21}+w_1x_{12}+2w_{2}x_{22}\end{pmatrix}=\begin{pmatrix}x_{11}+x_{11} & x_{12}+x_{21} \\ x_{21}+x_{12} & x_{22}+x_{22} \end{pmatrix}\begin{pmatrix}w_{1} \\ w_{2}\end{pmatrix}=(X+X^T)w\end{split}\end{equation*}

変数λ\lambdaλについて偏微分すると

∂L∂λ=−wTw−1=0\frac{\partial L}{\partial \lambda} = -w^Tw-1=0∂λ∂L​=−wTw−1=0

wTw=1w^Tw=1wTw=1

これらΩw=λw\Omega w = \lambda wΩw=λw、wTw=1w^Tw=1wTw=1から主成分分析の最適化問題はラグランジュ未定乗数λ\lambdaλを固有値、ベクトルλ\lambdaλを固有ベクトルとした分散・共分散行列GGGの固有値問題ということがわかる。

したがって、分散・共分散行列GGGの固有値問題を解くことで最大となる固有値λ∗\lambda*λ∗を求め、それに対応する固有ベクトルw∗w*w∗を求めることで主成分軸が得られる。

以上のことを踏まえると PCA のアルゴリズムは学習データxxxが与えられたとき次のようになる。

PCA のアルゴリズム

①xi−x‾x_i-\overline{x}xi​−xにより中心化を行う

② 分散・共分散行列XTXX^TXXTXを解く

③ 下記の固有値問題を解くmax⁡λ Ωw=λw         subject  to       λ≧0\max_{\lambda}~\Omega w = \lambda w~~~~~~~~~subject~~to~~~~~~~\lambda\geqq0maxλ​ Ωw=λw         subject  to       λ≧0

④ 得られる固有値λ\lambdaλをそれぞれλ1≧λ2≧λ2⋯≧λd≧0\lambda_1 \geqq \lambda_2 \geqq \lambda_2 \dots \geqq \lambda_d \geqq 0λ1​≧λ2​≧λ2​⋯≧λd​≧0とする。

⑤ それぞれの固有値に対応する固有ベクトルw1,w2,…,wdw_1,w_2,\dots,w_dw1​,w2​,…,wd​を主成分軸の正規直交基底とし、縮小したい次元(2 次元なら 2 個)分を選択する。このとき、w1,w2,…w_1,w_2,\dotsw1​,w2​,…を順に第1主成分、第2主成分,,,となる。

⑥ 選択した固有ベクトルw1,w2…,wDw_1,w_2\dots,w_Dw1​,w2​…,wD​の行列W(w1,w2… )W(w_1,w_2\dots)W(w1​,w2​…)の行列を作成し、学習データを低次元空間へ写像したときの主成分得点F=(f1(x1),f2(x2),…,fD(xD))F=(f_1(x_1),f_2(x_2),\dots,f_D(x_D))F=(f1​(x1​),f2​(x2​),…,fD​(xD​))を算出する。 F(X)=XWF(X)=XWF(X)=XW

Profile

kunst

データサイエンティスト兼フロントエンジニアのkunstです!
最近は山登りにハマっています。

目次

kunst Site

Welcome to kunst Site. Stay updated with the latest posts.

Privacy PolicyAbout Blog|BlogAbout SitePortfolioContact

Copyright © 2024 kunst Site