MCMC

【統計学】stanでロジスティック回帰の実行を割と詳しく解説してみる(w/ Titanic dataset)

StanをつかってTitanicデータをロジスティック回帰してみて、さらに分類の性能評価を少し行ってみるという記事です。 この記事で使う確率的プログラミング言語「Stan」では分布のパラメーターの推定に、ハミルトニアンモンテカルロ法(HMC法)とNUTSという手法が用いられています。厳密には乱数の発生原理が異なるのですが、もう少しシンプルな手法にマルコフ連鎖モンテカルロ法 メトロポリス・ヘイスティングス法(MH法)があります。この動作原 […]

emceeでマルコフ連鎖モンテカルロ法(MCMC)によるサンプリング

本稿ではemceeという、マルコフ連鎖モンテカルロ法(MCMC)によるサンプリングを行うモジュールの使い方を紹介します。 マルコフ連鎖モンテカルロ法(MCMC)について すでに色んな記事に説明があるのでここでは説明せず、これを参考に https://qiita.com/shogiai/items/bab2b915df2b8dd6f6f2 https://qiita.com/AIKI_SHI/items/0d2cd63d89a643364 […]

MCMCについて整理してみた。

マルコフ連鎖モンテカルロ法(MCMC法)について ・MCMC法とは何か? ・MCMC法の種類とPythonモジュール をまとめてみました。 0.マルコフ連鎖モンテカルロ法(MCMC法)とは? マルコフ連鎖を用いることで、モンテカルロ法を強化したものです。 後で詳しく書きますが、 モンテカルロ法は、真にランダムにサンプリングを行うため ・計算コストがかさむ ・精度も向上しない という課題があります。 そこでマルコフ連鎖モンテカルロ法は、 […]

pythonでガウス過程を実装する。パラメータの調整はマルコフ連鎖モンテカルロ法(MCMC)を使う

本稿ではnumpyでガウス過程を実装します。パラメータの調整はマルコフ連鎖モンテカルロ法(MCMC)を使います。 ガウス過程について 実装に専念するので、基礎の説明は省略します。 ガウス過程は色んな記事に説明がありますが、一番お勧めはこちら http://www.ism.ac.jp/~daichi/lectures/H26-GaussianProcess/gp-lecture1-matsui.pdf ガウス過程では、自変数たち$\bf […]

ハミルトニアンモンテカルロ法

はじめに 「ハミルトニアンモンテカルロ法」は、モデルのパラメータを推定する手法であり、 マルコフ連鎖モンテカルロ法(MCMC法)の一種である。 確率的プログラミング言語のStanやPyMCで実装されており、誰でも容易に使うことができる。 様々なパラメータの推定手法 このようなモデルのパラメータを推定する方法に、「EMアルゴリズム」がある。 EMアルゴリズムは、Jensenの不等式を用いて、周辺化対数尤度を下限で近似する。 $ log\ […]

PyMCでコインの確率推定

PyMCでコインの確率推定 前回の続き見たいなもの。 PyMC3で同じようなことをやってみる。 PyMC PyMCとはPythonのMCMCライブラリの一種。他にはpystan,emceeなどがあるが、現在主流なのはpystanとPyMC。速度はpystan > PyMCだけど、PyMCは離散変数のモデルの計算ができ、Pythonicな方法でモデルを記述できるのでpythonに慣れた人からすれば学習コストは比較的低い。 PyMCに […]

【統計学】マルコフ連鎖モンテカルロ法(MCMC)によるサンプリングをアニメーションで解説してみる。

Pythonでマルコフ連鎖モンテカルロ法を実装して解説してみる記事です 『計算統計 II マルコフ連鎖モンテカルロ法とその周辺』のp16に この節の内容を実感するために一番良い方法は、どんな計算機言語でもいいから、 ここで述べたことを白紙から実装してみることである。 という事で、素直にやってみました。せっかくなのでコードと仕組みの解説をしようと思います。 先に結果のアニメーションとプロットを表示しておきます (Burn-in期間:1-3 […]

【統計学】MCMCサンプリングのMultiprocessing化

MCMCのスクラッチ実装をMultiprocessing化で高速化してみる記事です。 先日の記事、「【統計学】マルコフ連鎖モンテカルロ法(MCMC)によるサンプリングをアニメーションで解説してみる。」では、chainを実装していなかったので、1つのchainのみでしたが、これを複数chainでサンプリングを行い、かつマルチプロセスとして実行できるようにしてみました。MCMCはchain毎に独立しているので、単にプロセスをわけるだけでOK […]

PyMC3で簡単なMCMCチュートリアルを試したメモ

概要 Pythonで使えるフリーなMCMCサンプラーの一つにPyMC3というものがあります.先日.「PyMC3になってPyMC2より速くなったかも…」とか「Stanは離散パラメータが…」とかいう話をスタバで隣に座った女子高生がしていた(ような気がした)ので,公式チュートリアル https://pymc-devs.github.io/pymc3/getting_started/ を試しながら,いくつかのエラーや追加実験についてのメモを書い […]