magicスマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。magic機械学習と統計とプログラミングについてちょっとずつ勉強していきます。インターフェイスです。最近のサンプリング法を実装しているといった特徴があります。速度には目を見張るものがあります。モデリングをしてみました。入れればもれなく一緒にインストールされます。今回モデリングするのは、ガウス混合モデルというモデルです。その名の通りいくつかのガウス分布を混合したモデルで、今回は3個の1次元ガウス分布を混合しています。真の分布からデータを生成します。標準偏差は簡単のため全て1としています。ヒストグラムにするとこんな感じのデータです。このデータを用いてMCMCサンプリングを行い、平均と混合比の事後分布を推定する、というのが今回の目的です。Stan言語のインターフェイスなので、Stan言語でモデリングを行い、Pythonから呼び出します。今回のガウス混合モデルのモデリングはこんな感じです。いうファイル名で保存します。C言語のような手続き型の言語です。Pythonとは異なりコードブロックを用いています。基本的に次の4つのブロックがあります。ブロックは用いるデータを宣言しておくブロックです。このブロックにPythonなどのインターフェイスからデータを渡すことになります。今回は、データと、データのサイズと、混合数を渡しています。ブロックはモデルのパラメータを宣言するブロックです。いうのは、ディリクレ分布を事前分布に設定した時に使う特別な型です。ブロックで宣言したパラメータを用いて新しいパラメータを定義するブロックです。ブロックは、モデルを記述するブロックです。Statementの2種類があります。左側にパラメータ、右側に従う分布を描く方法です。(モデルの)平均の事前分布には、平均0、標準偏差100の正規分布を用いています。Probability)の式を記述することによって計算を行う方法です。記述できないようです。呼び出してみましょう。ブロックで宣言した名前をキーにした辞書型にして渡します。データ数と混合数、データを辞書にして渡しています。今回のサンプリングでは、サンプリング回数(iter)は10000回、サンプリング系列数(chains)は1としています。(通常は複数のサンプリングを走らせます。いう処理の対象となります。簡単にいうと、サンプリングの最初の方は精度が悪いので捨てます。この捨てる数はもちろん調整可能です。)サンプリングの結果はこんな感じです。混合比も平均も、おおよそ真値を中心にうまく分布しているのが見て取れますね。サンプリング系列数(chains)を4にするとこんな感じです。今回使用したコードはこちらです。高速だけど記述が面倒、といった印象を受けました。PyMCに比べて記述量が増えるので、Stan言語の記述に慣れるかどうかが1つのポイントかもしれません。書いててC言語を思い出しました。インターフェイスで、Stanコードは共通なので、割りと調べやすかったです。公式の入門手引きの解説もとてもわかり易いです。貴重な日本語の活用事例です。blogマニュアルも非常に細かく書かれています。https://github.com/stan-dev/stan/releases/download/v2.4.0/stan-reference-2.4.0.pdf日本語でマニュアルの解説をしている方の記事です。チュートリアルを作成してくださった方のスライドです。...PyMC3でMCMC入門(2)»プロフィールid:breakbee機械学習とプログラミングについてちょっとずつ。Blog|ブログを報告する。