logo

統計学における主成分分析 📂統計的分析

統計学における主成分分析

概要

多重回帰分析 YX1,,XpY \gets X_{1} , \cdots, X_{p} を行うとしよう。主成分分析、英語では PCA は、簡単に言えば量的変数が きちんと独立しているように 「再構成」して分析する方法だ。多変量データの分析という観点から見ると、より少ない変数で現象を説明しようとする「次元削減」の意味を持つ。

主成分分析の理論的導出をしっかり理解するためには、線形代数、可能ならば数値線形代数についての知識まで必要だ。全く分からないなら、Step 3, 4も読んで理解してみるといい。数理統計学にある程度自信があるなら、数理統計学での主成分分析 のポストを読むのもいい。

導出 1

Step 1. pp 個の独立変数と nn 個のサンプルがあるデータを標準化

[y1y2yn]=[1x11x1p1x21x2p1xn1xnp][β0β1βp] \begin{bmatrix} y_{1} \\ y_{2} \\ \vdots \\ y_{n} \end{bmatrix} = \begin{bmatrix} 1 & x_{11} & \cdots & x_{1p} \\ 1 & x_{21} & \cdots & x_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{n1} & \cdots & x_{np} \end{bmatrix} \begin{bmatrix} \beta_{0} \\ \beta_{1} \\ \vdots \\ \beta_{p} \end{bmatrix}

は、設計行列を使って Y=Xβ+εY = X \beta + \varepsilon として表せる。この XX を標準化した行列を ZZ というのは、jj 番目の独立変数 XjX_{j} の標本平均 xj\overline{ x_{j} } と標本標準偏差 sXjs_{ X_{j} } に対し (i,j)(i,j) 成分が

(Z)ij:=xijxjsXj \left( Z \right)_{ij}: = {{ x_{ij} } - \overline{ x_{j} } \over { s_{ X_{j} } }}

の行列である。そうすると、新しい回帰係数

Θ:=[θ1θ2θp] \Theta := \begin{bmatrix} \theta_{1} \\ \theta_{2} \\ \vdots \\ \theta_{p} \end{bmatrix}

について、定数項がない回帰分析の計画行列式 Y=ZΘ+εY = Z \Theta + \varepsilon を得ることができる。この Z=[Z1Zp]Z = \begin{bmatrix} Z_{1} & \cdots & Z_{p} \end{bmatrix} は、ベクトル X1,,XpX_{1} , \cdots , X_{p} を標準化した Z1,,ZpZ_{1} , \cdots , Z_{p} で構成された(n×p)( n \times p ) 行列となる。


Step 2.

スペクトル分解について、ZTZZ^{T} Z は、(p×p)( p \times p )対称行列であるが、その定義を考えると、1n1ZTZ\displaystyle {{1} \over {n-1}} Z^{T} ZZ1,,ZpZ_{1} , \cdots , Z_{p} に対する共分散行列となる。特に ZZ は標準化された行列であり、同時に相関係数行列ともなる。スペクトル理論によれば、

{ZTZ=QΛQTQTQ=QQT=I \begin{cases} Z^{T} Z = Q \Lambda Q^{T} \\ Q^{T} Q = Q Q^{T} = I \end{cases}

を満たす直交行列

Q=[q11q12q1pq21q22q2pqp1qp2qpp] Q = \begin{bmatrix} q_{11} & q_{12} & \cdots & q_{1p} \\ q_{21} & q_{22} & \cdots & q_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ q_{p1} & q_{p2} & \cdots & q_{pp} \end{bmatrix}

と、ZTZZ^{T} Z の固有値からなる対角行列

Λ=diag(λ1,λ2,,λp)=[λ1000λ2000λp] \Lambda = \text{diag} ( \lambda_{1} , \lambda_{2} , \cdots , \lambda_{p} ) = \begin{bmatrix} \lambda_{1} & 0 & \cdots & 0 \\ 0 & \lambda_{2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_{p} \end{bmatrix}

が存在する。ここで、便宜上 λ1λ2λp\lambda_{1} \ge \lambda_{2} \ge \cdots \ge \lambda_{p} になるようにし、ZZ もそれに対応して再編成した行列と考えよう。


Step 3. 主成分の構成

I=QQTI = QQ^{T} なので、 Y=ZΘ+ε=ZQQTΘ+ε Y = Z \Theta + \varepsilon = Z Q Q^{T} \Theta + \varepsilon ここで、C:=ZQC := ZQ α:=QTΘ\alpha := Q^{T} \Theta とすると、 Y=Cα+ε Y = C \alpha + \varepsilon これがC=[C1Cp]C = \begin{bmatrix} C_{1} & \cdots & C_{p} \end{bmatrix} に対するC1,,CpC_{1} , \cdots , C_{p}主成分pCsだ。jj 番目の主成分の形は

Cj=q1jZ1++qpjZp=i=1pqijZj C_{j} = q_{1j} Z_{1} + \cdots + q_{pj} Z_{p} = \sum_{i=1}^{p} q_{ij} Z_{j}

元の独立変数を線形結合で再構成したものだ。


Step 4.

主成分の独立性も次の計算で確認できる: ZTZ=QΛQT    QTZTZQ=Λ    (ZQ)T(ZQ)=Λ    CTC=Λ \begin{align*} & Z^{T} Z = Q \Lambda Q^{T} \\ \implies& Q^{T} Z^{T} Z Q = \Lambda \\ \implies& \left( Z Q \right) ^{T} \left( Z Q \right) = \Lambda \\ \implies& C^{T} C = \Lambda \end{align*} つまり、 CjTCj={λj,i=j0,ij C_{j}^{T} C_{j} = \begin{cases} \lambda_{j} & , i=j \\ 0 & , i \ne j \end{cases} これにより、主成分は必ず独立していて、固有値 λj\lambda_{j}00 に近い程度に小さいことは、Cj=i=1pqijZj\displaystyle C_{j} = \sum_{i=1}^{p} q_{ij} Z_{j} がゼロベクトルに近いことを意味し、したがってZ1,,ZpZ_{1} , \cdots , Z_{p} が多重共線性を持つと見なすことができる。

限界

主成分回帰分析 YC1,,CpY \gets C_{1} , \cdots , C_{p} は、固有値に問題のある変数を除去することで多重共線性の問題を回避する。さらに、元の回帰分析と比べるとずっと少ない変数を使うため、次元が削減されたと言える。

しかし、主成分分析は万能のように見えるが、必ずしもそうではない。まず、ZZ を作るために標準化するということは、質的変数変換に対して手を付けにくい点が多いことを意味し、このように「再構成」する過程で分析自体が理解しにくくなる。

統計が統計学を理解していない人にも必要だと考えると、この点はかなり致命的だ。例えば、韓国経済に対する分析に主成分分析を使うとしたら、失業率X2X_{2} や平均初任給X7X_{7} など理解しやすい数字ではなく、「総合雇用指数」C4C_{4} などの変わった言葉で表されることになる。分析者でさえ、使える回帰式を作り出したとしても、その真の意味を掴むことが出来ない大惨事が起こる可能性がある。(コンピュータ科学の分野では、データの理解より予測と分類が重要であるため、この欠点にあまり神経を使わない。)

また、どの主成分も除外せずにYC1,,CpY \gets C_{1} , \cdots , C_{p} をそのまま使う場合、元のYX1,,XpY \gets X_{1} , \cdots , X_{p} と変わらないが、ここでいくつかの主成分を除外すること自体が、元々あったデータを諦めることを意味する。それでも必要ならば使うべきだが、必要なければわざわざ使う理由はない。使う時は、どんな欠点や限界があるかをはっきりと理解して使うべきだ。

条件数 1

一方、導出過程で得られる固有値を通じて多重共線性を診断する数値的指標である条件数condition number

κ:=λ1λp \kappa := \sqrt{ {{ \lambda_{1} } \over { \lambda_{p} }} }

を計算できる。経験的にκ>15\kappa > 15 ならば、元のデータに多重共線性があると推測できるが、それほど広く使われてはいない。

参照


  1. Hadi. (2006). Regression Analysis by Example(4th Edition): p255~257. ↩︎ ↩︎