fMRI解析の基礎 (10):主成分分析

最終更新日: 2020年7月19日

主成分分析(PCA)は、多変量統計手法の1つで、他の手法の前処理としてノイズや次元を削減するために使われています。

1. PCA

多変量正規分布に従うデータ [xi,yi][x_i,y_i] を考えます。

[xi,yi]N([μx,μy],[σx2covxycovxyσy2])[x_i,y_i] \sim N \left([\mu_x,\mu_y], \begin{bmatrix} \sigma_x^2 & cov_{xy} \\ cov_{xy} & \sigma_y^2 \end{bmatrix} \right)

[xi,yi][x_i,y_i]相関がある場合は、合わせて1つの指標として用いることが次元削減に繋がります。まずは、分散共分散行列を固有値分解します。

[σx2covxycovxyσy2]=[v1v2][d100d2][v1Tv2T]\begin{bmatrix} \sigma_x^2 & cov_{xy} \\ cov_{xy} & \sigma_y^2 \end{bmatrix} = \begin{bmatrix} \bold{v}_1 & \bold{v}_2\end{bmatrix} \begin{bmatrix} d_1 & 0 \\ 0 & d_2 \end{bmatrix} \begin{bmatrix} \bold{v}_1^T \\ \bold{v}_2^T \end{bmatrix}

分散共分散行列は半正定値なので、固有値 dd は正となります。固有ベクトル vv は、データがつくる楕円形の等高線の軸に直交し、それら同士も直交します。固有ベクトル(主成分)の方向に新しい軸をとれば、多数の値を1つの軸で説明できるわけです

固有値は、固有値ベクトルの方向における分散と一致します。ということは、各軸における情報量(寄与率)は、固有値に比例することになります

pca.png

第 r 主成分までの累積寄与率は、以下の式で求められます。これは、第 r 主成分までに説明しうる情報量の割合を示しています。

d1+d2++drd1+d2++dn\frac{d_1+d_2+\ldots+d_r}{d_1+d_2+\ldots+d_n}

2. fMRIデータへの適用

yj(i)y_{j}^{(i)}ii 番目のTRの jj 番目のボクセルにおける値だとします。PCAを適用するときは、各ボクセルの平均を0にした行列 YCY_C を用います

YC=[y1(1)yNv(1)y1(NTR)yNv(NTR)][11][yˉ1yˉNv]Y_C=\begin{bmatrix} y_{1}^{(1)} & \ldots & y_{N_v}^{(1)} \\ \vdots & \ddots & \vdots \\ y_{1}^{(N_{TR})} & \ldots & y_{N_v}^{(N_{TR})} \end{bmatrix}- \begin{bmatrix} 1 \\ \vdots \\ 1 \end{bmatrix} \begin{bmatrix} \bar{y}_{1} & \cdots & \bar{y}_{N_v}\end{bmatrix}

これを用いて、分散共分散行列 ΣRNv×Nv\Sigma \in \R^{N_v \times N_v} を推定できます。

Σ^=1NTR1YCTYC\hat{\Sigma} = \frac{1}{N_{TR}-1}Y_C^TY_C

Σ^\hat{\Sigma} を固有値分解して固有ベクトルを算出し、その方向に射影します。Σ^\hat{\Sigma} のランクは YCY_Cと一致するので、00ではない固有値 dd は最大でTRの数 NTRN_{TR} だけあります。

Σ^=[v1vNv][d100dNv][v1vNv]\hat{\Sigma} = \begin{bmatrix} \bold{v}_1 & \cdots & \bold{v}_{N_v}\end{bmatrix} \begin{bmatrix} d_1 & \cdots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \cdots & d_{N_v} \end{bmatrix} \begin{bmatrix} \bold{v}_1^{\top} \\ \vdots \\ \bold{v}_{N_v}^{\top} \end{bmatrix}
zj(i)=yˉj+divijz_{j}^{(i)}=\bar{y}_j+d_i v_{ij}

タスクに敏感な信号は固有値が大きく、ノイズは固有値が小さくなると期待するわけです

3. ノイズ除去

固有値が小さい要素を除くことで、ノイズを削減できます

YYを正規化してYcsY_{c_s}とし、分散共分散行列を計算し、固有値分解します。しかし、分散共分散行列 Σv=YcsYcsRNv×Nv\Sigma_v=Y_{c_s}^\top Y_{c_s} \in \R^{N_v \times N_v} は大きいので、固有値を出すためなら

T=YcsYcs=UDURNTR×NTRT=Y_{c_s}Y_{c_s}^\top=UDU^\top \in \R^{N_{TR} \times N_{TR}}

と近似できます。最初の r 個を選択して UrRNTR×rU_r \in \R^{N_{TR} \times r} とし、これを用いて YCY_C を射影します

YC(r)=UrYCRr×NTRY_{C(r)}=U_r^\top Y_C \in \R^{r \times N_{TR}}

この YC(r)Y_{C(r)} が、ノイズを削減した成分となります。

ボクセル空間に戻すには?

ノイズ削減後に元の空間に戻して、始めに引いた平均を加算してあげます。

Y^r=UrUrYC+1yˉ\hat{Y}_r=U_rU_r^\top Y_C+ \bold{1} \bold{\bar{y}}^\top

r の決め方

固有値を大きい順に並べて、Kinkと呼ばれる歪みの位置を基準にします(スクリープロット)。視覚的に見つからなければ、累積寄与率が90%となるようにします。

pca_scree.png

4. SVD

特異値分解 (SVD) がを使うと、分散共分散行列を直接必要としません。特異値分解は、次のように表されます。

YC=UGVY_C=UGV^\top

ただし、U,VU,Vは直交行列で、GGは対角行列と零行列を並べたものです。

このとき、TTは以下のように簡単に計算できます。

T=YCsYCs =1NTR1YCYC =1NTR1(UGV)(VGU) =1NTR1UGGU =U[1NTR1b2000]U\begin{array}{rcl} T &=& Y_{C_s}Y_{C_s}^\top \\ \ \\ &=& \frac{1}{N_{TR}-1}Y_CY_C^\top \\ \ \\ &=& \frac{1}{N_{TR}-1}(UGV^\top )(VG^\top U) \\ \ \\ &=& \frac{1}{N_{TR}-1}UGG^\top U \\ \ \\ &=& U \begin{bmatrix} \frac{1}{N_{TR}-1}b^2 & 0\\ 0 & 0 \end{bmatrix}U^\top \end{array}

SPMでは、SVDを適用して UU から相関を取ってきているようです。


Reference

  • Ashby, F. G. (2019). Statistical analysis of fMRI data. MIT press. url