Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PyMCで入門するマルコフ連鎖モンテカルロ法

ctylim
April 26, 2018

 PyMCで入門するマルコフ連鎖モンテカルロ法

社内勉強会で使った資料となります
GitHub: https://github.com/ctylim/PyMC-Learning

ctylim

April 26, 2018
Tweet

More Decks by ctylim

Other Decks in Education

Transcript

  1. ベイズ推論で解かれる問題 基本的には頻度主義と同じ + • データの解釈の幅が広がる(追加で知りたくなった量に関しても柔軟に
 評価可能)。 • ex: 前述問題の答え以外に、デザインAとデザインBが
 あった場合デザインBの方を選ぶ確率を答えることができる。

    • 常識や分析者の信念を事前情報として数式で与えることができる。
 (事前情報モデリングを前提とするのでデータの生成過程を明示的に説明可能) • 正規分布以外からのサンプルを前提としたデータも、データの数によらず
 同じ方法で分析可能。 ※頻度主義とベイズ推論の違いに関しては、[1]冒頭でとてもわかりやすく解説されています。 3
  2. 詳細釣り合い条件、可逆性 19 詳細つりあい条件とは: を定常分布とする時、任意の において 但し は のi行j列目 が成立することである。 この性質を可逆性という。

    系:詳細釣り合い条件は、  が定常分布
 となるための十分条件となる。 詳細つりあい条件をみたすMCMCのアルゴリズムとは…
  3. MCMC & PyMC まとめ • MCMC 手順 1. 観測モデルと事前分布のデザインで先にデータ解釈の前提
 となるストーリーを作る

    2. 乱択アルゴリズムによって事後分布をサンプリング 3. 観測を反映した事後分布でデータを解釈 • PyMC • with pm.Model • 手順を機械的に追うだけでなく、評価方法の妥当性を確認
 (イテレーション数・自己相関など:PyMCの機能を駆使) • 多変数の複雑なモデルに関してもシンプルさを保ったまま
 柔軟に実装可能(むしろそちらで威力を発揮する印象) • 計算時間が気になる場合は共役事前分布の活用を視野に入れる • 頻度主義の検定手法と目的に応じて使い分けられると良い 30
  4. References [1] Bayesian Methods for Hackers https://github.com/CamDavidsonPilon/Probabilistic-Programming- and-Bayesian-Methods-for-Hackers (邦訳本もとても良いのだけれど、PyMC「2」なのが残念…
 本家はPyMC2,

    3両方サポート) [2] データ解析のための統計モデリング入門、久保拓弥 [3] 岩波データサイエンス Vol.1 [4] 確率と確率過程、伏見正則 [5] パターン認識と機械学習 下、C.M.Bishop 11章にMCMCについての説明あり [6] MCMC講義、伊庭幸人 https://www.youtube.com/watch?v=wO8jd0z5YRQ 31
  5. 頻度主義と比較したベイズ推論 良いところ • 事前に設計したモデルにフィットする分布を推定することができる のでより詳細なデータの解釈が可能。(適用できる問題範囲が広い) • 集めたデータ量に対してスケーラビリティが高い分析ができる。
 (少ないデータ量でも不確実性を含めたデータの解釈が可能) 悪いところ •

    再現性が低い。(色々な仮定を事前に人間が設定するので、それらの 情報が詳細に共有されている必要がある) • 複雑なモデルを設定するとハイパーパラメータ地獄になる。
 ハイパーパラメータとは、推定の対象外となる定数のこと。最終的 にはこれらを人の手で決めつける必要がある。今回扱った例だと、 ベータ分布の が該当する。 • 比較的計算量が多い(アルゴリズムによる。単純比較はできない) 33
  6. MCMCが実装されているパッケージ 34 Just Another Gibbs Sampling http://mcmc-jags.sourceforge.net/ Basian Inference Using

    Gibbs Sampling http://www.openbugs.net/w/FrontPage Stan (RStan, PyStan) https://cran.r-project.org/web/packages/bsts/index.html Basian Structural Time Series (Google) https://github.com/facebook/prophet Prophet (Facebook) PyMC (2, 3) http://www.mrc-bsu.cam.ac.uk/software/bugs/ WinBUGS