xiangze's sparse blog

機械学習、ベイズ統計、コンピュータビジョンと関連する数学について

RStanのサンプル(soft K-means)の実行

StanのReference Manual(pdf)はサンプルコードが非常に充実していて、書き方の参考になるばかりではなく、そのまま使用することさえ出来ます。

 今回は混合ガウス分布の推定をMCMCで行うというサンプルを実行してみました。

 

 

code

以下のようなコードを使用しました。model部分はStan User's Guide and Reference Manual 119 pageのものを埋め込んでいます。

 

 

こちらのブログでも紹介されているようにincrement_log_probという便利な関数があります。

dot_selfという関数も気になります。Stanには色々な組み込み関数(Built-in Functions)がありそれらもReference Manualで説明されています。

 

parametersで定義した変数のうち、parで指定したものが結果として出力されます。今回のようなデータ毎に隠れた変数がある場合、全て出力すると大変なことになってしまいます。画像、時系列などでは使えそうです。

結果

f:id:xiangze:20131126071825p:plain

この程度であれば推定は簡単です。

 

 注意点

クラスタリングMCMCで行う場合の難点としてラベルを交換した場合の尤度に違いがない為に、複数のpathに対してラベルを交換したものに相当する異なる推測値が得られてしまうことがあるそうです。

またそれと関連して到達できないパラメータ領域がでてきてしまいがちなため、色々な初期値から試行し、最適な値を選ぶのが良いということらしいです(Reference Manual page 122)。

Reference 

MCMCの計算にStanを使ってみた(超基礎・導入編) - 銀座で働くデータサイエンティストのブログ

id:TJOさんによるロジスティック回帰の結果です。

ガッキーより竹内結子

上記記事の補足説明です。参考になります。

R, Stan and NUTS: A Hierarchical Linear Model Example