PRML 12章 主成分分析を試す(棒読み

最近論文読んでばかりでさすがにちょっと飽きてきたので、コードでも書いてみよう。
パターン認識機械学習」(PRML) 12章は「連続潜在変数」、要は「主成分分析」(Principal Component Analysis)。


本文中で使用されている Oil Flow データは、PRML サポートページからリンクされている配布ページが無くなっていて、ダウンロードできなくなっている……。
webarchive から拾えたんだけど、webarchive に負荷をかけるのは悩ましいかなあと思って、リンク無し。再配布したらマズイのかなあ。


では、データを使って PCA を行ってみよう。

oilflow <- read.table("DataTrn.txt");
result <- prcomp(oilflow)   # Rなら主成分分析が1行で書ける!!!

oilflow.labels <- read.table("DataTrnLbls.txt");
col <- colSums(t(oilflow.labels) * c(4,3,2));  # ラベルごとに色を指定
pch <- colSums(t(oilflow.labels) * c(3,1,4));  # ラベルごとにマーカーを指定
plot(result$x[,1:2], col=col, pch=pch, xlim=c(-3,3),ylim=c(-3,3))

わーい、PRML の図12.8とそっくりになったぞー。


って、これじゃあダメですね。すいません。
でも、主成分解析って結局のところ 特異値分解(SVD) なので、実装したって楽しくないのだ。
そのうち確率的主成分分析あたり試すので、勘弁してやって。