ベイズ モデリング というか ベイズ統計の本を幾つか買ったので書いてみたいと思います。
使いたい本は Baysian Analysis with Python (2nd edition) で、それと 私の英語力では、きついのので訳本も参照します。こちらはPython によるベイズ統計モデリング です。ただしこれは 初版の訳本です。
どちらかと言うと文系向けに書かれた本のようですが、先ず理論よりコードって感じです。 ただし、RやStanのときの話も出来たら交えて書きたい。で、特に知り合いの栄養士さんたちが使えるようにしたいというのが念頭になります。とはいえ、まず自分が慣れなければ(^^;。
ディープラーニングとも絡めて行きたいです。というのも機械学習、実際はテストするとしたら、やはり単純な例で現象を把握する必要があると思うので、その際やはりこういう分析が必要になると勝手に思ってます。
何よりも身近なデータでいろいろデータからいろんな規則性や推論をしていく作業が楽しくできればと思います。
https://github.com/PacktPublishing/Bayesian-Analysis-with-Python
にサンプルコードがあり、かつ、ブラウザー上で実行内容がみられます。github は Jupyter Notebook のMarkdownを使うことが出来るのでこのようなことが可能で、自分でJupyter Notebook にコピペして、実行結果を見ながら、コードの意味を確認することも可能です。
また https://www.packtpub.com/big-data-and-business-intelligence/bayesian-analysis-python-second-edition
から サンプルコードをダウンロードしてもよいし、さきほどのgithubからダウンロードするか、git clone でとってもよいです。
Rのほうは Stanですが Python では PyMC3 を使うようで、
PyMC3's base code is written using Python, and the computationally demanding parts are
written using NumPy and Theano.
Theano is a Python library that was originally developed for deep learning and allows us
to define, optimize, and evaluate mathematical expressions involving multidimensional
arrays efficiently. The main reason PyMC3 uses Theano is because some of the sampling
methods, such as NUTS, need gradients to be computed, and Theano knows how to
compute gradients using what is known as automatic differentiation. Also, Theano
compiles Python code to C code, and hence PyMC3 is really fast. This is all the information
about Theano we need to have to use PyMC3. If you still want to learn more about it, start
reading the official Theano tutorial
at http://deeplearning.net/software/theano/tutorial/index.html#tutorial.
つまり MCMC法を実際にはHMCを 使うのですが、その際Stanは C/C++でコンパイルしてサンプリングを生成しますが、この部分が PyMC3 では NumPy and Theano を使いTheanoは機械学習のパッケージですが、多分、行列計算をここでやってかつC/C++にコードを変換してコンパイルして実行するようです。
Theano は 開発が止まってるので、そのうち Tensorflowが代わりになるようです。ちなみに訳本は、サンプリングの様々な手法の説明がありましたが、英語の方はいきなりPythonのコードでコイン投げ話に行くようです。
ベイス統計のやり方は、事後確率の確率分布をサンプリングで作ってしまうというやり方で、これは最尤度法における実質、尤度関数を求めてるわけで、それを数式ではなく、ヒストグラムとして実現するから、有限の操作になっていて、積分などは数え上げですから、いろんなことが、計算可能ということです。
だから、どういうモデルを採用するか? それの妥当性、ないしは出てきたヒストグラムから色んな情報を引き出すための操作を覚える、基本的にこれではないかと勝手に予想しています。この点 例えば豊田氏の放送大学の心理統計法の授業のサンプルコードで、実際出てきたヒストグラムから、いろんなデータを読み出す操作の関数を自前で作ってあって、それと同じようなことを比較しながらやれば良いのかなぁって勝手に思い込んでます。
まぁ違えば違ったらそれはそれで。。。
文系出身の方に言いたいのは、エディター使いましょうということ、あとはファイルシステムになれるということ。かりにPythonだったらJupyter NorebookやIpython使ってればエディターいらないけど、やはり色んな場面で必要になrますし、Rのスクリプトを編集するにも必要。そして一人でやらずにお友達と一緒に、コードを共有していくと、人の書いたものを利用したり真似たりすることで、いろんなメリットがあると思います。