LoginSignup
10
15

More than 5 years have passed since last update.

主成分分析のあれこれ

Posted at

主成分分析のあれこれ

主成分分析の拡張である確率的主成分分析,ベイズ的主成分分析,カーネル主成分分析の比較

主成分分析(PCA)

高次元のデータを低次元に次元削減する方法
色々求め方はあるが,特異値分解と解釈するのが早い

$$ X = UDV^T $$

  • $X$: サンプル数×次元数の元データ
  • $U$: ×次元数のユニタリー行列
  • $D$: 次元数×次元数の対角行列(対角成分は固有値)
  • $V^T$: 次元数×次元数の固有ベクトル行列(行が1つの固有ベクトル)

さらに次元削減のベクトルは

$$ X_{pca} = XV_{pca} $$
で求めることができる.
ただし$V_{pca}$は行列Vから削減した次元数から作成する.(2次元に次元削減したのなら,$V_{pca} = V[:,[0,1]]$)

確率的主成分分析(Probabilistic PCA)

ガウス分布を用いて確率的に次元削減を行う
求め方は複数あるが,EMアルゴリズムで求める場合,
E-stepでは

M = W^TW+\sigma^2I \\
E[z_n] = M^{-1}W^T(x_n-\bar{x}) \\
E[z_{n}z_{n}^T]=\sigma^2M^{-1}+E[z_n]E[z_n]^T

ただし,

  • $M$: 削減後の次元数×削減後の次元数の行列
  • $W$: 元の次元数×削減後の次元数の行列(ランダムに初期化)
  • $\sigma^2$: スカラー
  • $I$: 単位行列
  • $E[z_n]$: n番目のデータの次元削減後のベクトル
  • $x_n$: n番目のデータの次元削減前のベクトル
  • $\bar{x}$: 次元削減前のデータの平均ベクトル
  • $E[z_nz_n^T]$: 削減後の次元数×削減後の次元数の行列

M-stepでは

W = \bigl[\sum_{n=1}^{N}(x_n-\bar{x})E[z_n]^T\bigr]\bigl[\sum_{n=1}^{N}E[z_nz_n^T]\bigr]^{-1}\\
\sigma^{2} = \frac{1}{ND}\sum_{n=1}^{N}\bigl\{||x_n-\bar{x}||^2 - 2E[z_n]^TW^T(x_n-\bar{x}) + Tr(E[z_nz_n^T]W^TW)\bigr\}

ただし,

  • N: データ数
  • D: 元の次元数

で求めることができる.

ベイズ的主成分分析(Bayes PCA)

ガウス分布にハイパーパラメータを導入してベイズ推定を行う.

Probabilistic PCAの場合と比較して,M-stepが異なり,

\alpha_i = \frac{D}{w_i^Tw_i} \\
W = \bigl[\sum_{n=1}^{N}(x_n-\bar{x})E[z_n]^T\bigr]\bigl[\sum_{n=1}^{N}E[z_nz_n^T] + \sigma^2A \bigr]^{-1}\\
\sigma^{2} = \frac{1}{ND}\sum_{n=1}^{N}\bigl\{||x_n-\bar{x}||^2 - 2E[z_n]^TW^T(x_n-\bar{x}) + Tr(E[z_nz_n^T]W^TW)\bigr\}

ただし,

  • $w_i$: 行列Wのi行目のベクトル
  • $A$: $diag(\alpha_i)$

である.

カーネル主成分分析

カーネルによって,データ数×次元数の行列をデータ数×データ数の行列に変換したのちに主成分分析を行う

$$\tilde{K} = K - 1_{N}K - K1_N+1_NK1_N$$

ただし,

  • $K$: i, j成分がkernel($x_i$, $x_j$)の行列
  • 1_{N}: 全成分が$1/N$のデータ数×データ数の行列

このようにして求めた$\tilde{K}$に対して,主成分分析の時と同様に,固有値と固有ベクトルを求めることによって次元削減を行う

実験

主成分分析(PCA),確率的主成分分析(PPCA),ベイズ的主成分分析(BPCA),カーネル主成分分析(KPCA)を用いて次元削減を行う.

用いたデータはirisのデータ(3種類の植物のデータが4次元のベクトルで表現されている,各種類ごとに50データ存在する).

コードはここに
https://github.com/kenchin110100/machine_learning

2次元に次元削減後,プロットしたものが以下の図

  • PCA
    PCA_iris.png

  • PPCA
    PPCA_iris.png

  • BPCA
    BPCA_iris.png

  • KPCA
    KPCA_iris.png

PCAよりも,PPCA,BPCAの方が種類間の境界線がはっきりとわかる.
KPCAはまた違う感じだが,確かに種類ごとにプロットができている.

終わりに

4種類の主成分分析を行なった,BPCAあたりは使い勝手が良さそう
PCAの拡張方法として確率的に求めるか,kernelを使うかという2軸があるが,
それらを組み合わせた最強の主成分分析なるものがあるらしい・・・

10
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
15