最近論文読んでばかりでさすがにちょっと飽きてきたので、コードでも書いてみよう。
「パターン認識と機械学習」(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) なので、実装したって楽しくないのだ。
そのうち確率的主成分分析あたり試すので、勘弁してやって。