2009年10月29日木曜日

Tweetup with @syou6162

本日、素敵なTweetup@syou6162さんとご一緒しました。
Web上でも、現実でも、精力的に活動されている姿は尊敬するばかりです。

ところで、日本国籍でない友人に日本人の悪い点を聞くと、すぐにtoo shyと返ってきました。
国民性や個人の性格的なものは無理に変える必要はないと考えていますが、それでもコミュニティに対して何らかのコミットをするのは、コミュニティにとっても、自身にとっても有益なものとなる場合が多いように思います。

しかしながら、そういった行動をおこすには、またそういった方々とお近づきになるには、それなりの労力が必要です。
Twitterに限らず、SNSやWebは、それらの敷居を下げる良い道具ではないかと思います。


抽象的ではありましたが、非常にポジティブな気持ちを想起させる、そんなTweetupでした。
より詳細な会話の内容が知りたい方、また、R, C++, Emacs etc...の良質なtipsをご覧になりたい方は、こちらのサイトをどうぞ。

 Seeking for my unique color.
 Seeking for my unique color.:@TakaakiTalkさんとお食事

Thanks a lot @syou6162!

2009年10月27日火曜日

RとImageMagickで混合分布推定アニメーション

EMアルゴリズムや変分ベイズ、MCMCでは最適化やサンプリングを繰り返すことで確率分布を求めます。
その過程を可視化する際のtipsをまとめてみます。

Rの他に必要なのはこちら。


MacPortでしたら

sudo port install ImageMagick +lcms +jpeg2
sudo port install ffmpeg

でインストール可能です。
動画作成までの道のりは以下のとおりです。

 1. Rプログラムの反復演算の都度画像を生成する
 2. ImageMagickで連結・mpeg変換を行う

いやぁ、簡単。このままではtipsにならないので、サンプルとその生成方法を記載してみます。
まずRにおいて、以下のような画像生成項目を記載します。

name = paste(t, ".png" , sep="")
png(file = paste("img/", name, sep=""), sep="")
 #プロットしたい図のplot
dev.off()

尚、tは反復回数t回目を表します。これによりimgフォルダにt=1から(任意の)収束回数までの連番pngファイルが生成されます。
続いて、imgフォルダ内に以下のようなシェルスクリプトを保存します。

#!/bin/bash
num=${1:?"Usage: $./conv.sh npics"}
for((i=1;i<$(($1+1));++i))
do
 name+=$i.png" "
done
#echo $name
`convert -delay 15 -quality 100% -antialias -compress None $name opt.mpg`

名前をconv.shとしましょう。また、t=100で収束したとします。その際、実行権限を与えた後、以下のように実行します。

chmod u+x conv.sh
./conv.sh 100

これにより、opt.mpgができあがります。表示間隔はdelayの引数を変えることで調整できます。
混合ガウス分布の推定を行った結果がこちら

ImageMagick自体は検索すれば多くのtipsが出てきますが、Rのtipsとして参考にしたのはこちら。

 RjpWiki:グラフィックス参考実例集:自作グラフィックス投稿欄:GIFアニメーション

一枚一枚画像を生成するので非常に時間がかかります(MCMCでやることは考えたくないです)が、視覚的に確認できると楽しいですね。是非お試しあれ。

2009年10月15日木曜日

統計のための線形代数 in C++ (Boost uBLASの参考サイトとtipsまとめ)

最近の僕はより大規模な実験を行うべく、これまで作ってきたtoy programをC++に移植する毎日です。
その過程でどうしてもベクトル・行列演算が必要になったので、時期標準の呼び声高いBoost内のベクトル・行列ライブラリ、uBLASを用いてみました。
今回の記事は、特に僕が必要であった演算を実現すべく、参考にしたサイト及びそれらをまとめたテンプレート関数群をご紹介します。