PCA を試す、PPCA を試す とくると、次は確率的主成分分析を EM アルゴリズムで解いてみよう。今回も R で実装。 さすがにそろそろコードが長くなってきたので、全体は github にて。 http://github.com/shuyo/iir/blob/master/pca/ema.r E-step と M-step のところくらいは載せておこうか。 しかし R にはどうして行列のトレースをとる関数がないのだろう。sum(diag(〜)) なんて、微妙にカッコ悪いんだけど。そう言えばノルムを取る関数もなかったな……。 ### E-step: # E[z_n] = M^-1 W^T (x_n - x^bar) (PRML 12.54) Ez <- t(M_inv %*% t(W) %*% xn_minus_x_bar); # E[z_n z_n^T] = sigma^2 M^-1
![PRML 12章 主成分分析を EM アルゴリズムで解いてみる - 木曜不足](https://cdn-ak-scissors.b.st-hatena.com/image/square/cd283f661a21f0e1d578059d7bdc0a13b5426e3a/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fn%2Fn_shuyo%2F20100527%2F20100527113734.gif)