Table of contents
Open Table of contents
概要
- PRML12章の確率的主成分分析 (Probabilistic PCA; PPCA) について解説・実装しました。
確率的主成分分析 (PPCA)
確率的主成分分析(PPCA)は、主成分分析(PCA)をガウス分布に基づく生成モデルとして再定義したものです。
通常のPCAは、データの分散を最大化する軸を求める手法であり、決定論的な手法です。
これに対しPPCAは、観測されたデータ
生成モデルとして定式化することで、尤度に基づくモデルの比較や欠損値の統計的な補完、さらに複数のPPCAを組み合わせた混合モデルへの拡張など、通常のPCAでは難しい拡張が可能になるという利点があります。
生成モデルの定式化
全体の流れを先に話すと、データ
それでは定式化を始めます。
観測された
具体的には、
ここで、重み行列
これで
解析解による最尤推定
1) \boldsymbol{\mu} に関する偏微分
導出の詳細
なので、
2) \mathbf{W} に関する偏微分
が得られます。ただし、
行列の微分を計算すると、
となります。
トレースの等式の証明
に関する偏微分の成分計算
途中の式変形で
の場合(自明な解) 、すなわち の場合- それ以外の場合(
かつ )
2-1) \mathbf{W}=0
ここで、
- 固有値分解
は の固有値 を対角成分に並べた対角行列 は の対角成分 に対応する固有ベクトル を横に並べた行列
を用いました。
2-2) \mathbf{C}=\mathbf{S}
が得られます。2つの結果を比較すると、
となります。
2-3) \mathbf{W}\neq0 かつ \mathbf{C}\neq\mathbf{S}
これは
が得られます。ここで
3) \sigma に関する偏微分
PPCAの最尤推定まとめ
PRML に書いてあることを整理しました。
- 全体の計算量は
- 潜在変数空間は回転不変性を持つ
のとき、 の各列 (つまり共分散行列 の固有ベクトル ) は でスケール(数値シミュレーションの重み行列の比較で確認) から明らか
EM アルゴリズムによる最尤推定
ここでは反復法で最尤推定解を求める方法を説明します。
確率分布
と書けます。EMアルゴリズムは後述するEステップとMステップを交互に反復することで
式の導出
E-step
計算する必要があるのは
よって、
PRMLでは
M-step
E-step では
M-step では
が得られます。
数値シミュレーション
実装したコードは PPCA.ipynb にあります。 データは Digits データセット2 を使いました。
このデータセットは、データ数
また、
PCA と PPCA での潜在表現の比較
データを第一・第二主成分ベクトルに射影した結果を下図に示します。
横軸は
- (a) :
の平均を使って を に変換して最初の2成分をプロット - (b) :
を PCA の主成分ベクトル を並べた行列 と思って各主成分ベクトルに射影し、最初の2成分をプロット - (c) : PRML通りに自分で実装した PCA を使って第二主成分までプロット
- (d) :
scipy.decomposition.PCAを使って第二主成分までプロット
(a) と (b) はほとんど同じように見えますが、値のレンジが大きく異なります。これは式を比較すると分かるように
(c) と (d) を比較すると、原点対称の関係にあることが分かります。これは scipy.decomposition.PCA の処理3の中で、左特異ベクトルを並べた
PRMLでも説明されているように、PPCAは潜在空間の回転不変性があるため特に問題にはなりません。
PCA と PPCA での重み行列の比較
PCA の主成分ベクトルを並べた行列
EM アルゴリズムの解と解析解の比較
EMアルゴリズムにより、