読者です 読者をやめる 読者になる 読者になる

Bag of ML Words

ML = Machine Learning, Music Love, and Miscellaneous things in daily Livings

Python: Bayesian Methods for Hackers 1章

それでは第1章を読みましょう!

http://nbviewer.ipython.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter1_Introduction/Chapter1_Introduction.ipynb

 

iPython Notebookの読み込み

まずはGithubレポジトリをクローンします。

CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers · GitHub

そして、第1章のノートブックファイルをipythonで開きます。

 

ちょっと分かりにくいですが、任意のファイルを開くには

ここをクリックします。

f:id:Dr_KayAi:20140330174847p:plain

ほら、読み込めました。

f:id:Dr_KayAi:20140330175044p:plain

 

読み始める。

The Bayesian state of mind、Our Bayesian framework

まずはベイジアンと頻度主義の違いとかについて、型どおりのイントロをしています。

Again, this is appropriate for what naturally occurs: different individuals have different beliefs of events occurring, because they possess different information about the world.

 これはベイジアンとしては大事な観点ですよね。

あと、事後確率とかの読み方。

We denote our updated belief as P(A|X), interpreted as the probability of A given the evidence X. .

こうやって英語として読めば事後確率と事前分布、どっちがどっちか迷わないんですけどね、ということをM2だったころの私に伝えたい*1

 

とにかく、イントロ部分は初めてベイズに接するプログラマの方々がこれで本当に理解できるのかどうかは分かりません。とくにベイズ則の説明は全くなっていませんからね・・・。ただのアルゴとして飲みこむならまあいいですけど。

 

あっ、コードだ!

コードが出てきましたね・・・

f:id:Dr_KayAi:20140330183308p:plain

 

上のほうのrunをぽちっと。

f:id:Dr_KayAi:20140330183321p:plain

 

おおおおお!!!すごい!これがiPythonのパワーか!!

 

 Example: Inferring behaviour from text-message data、Introducing our first hammer: PyMC

さて、具体的にデータをベイズモデリングして解いてみせるパートです。

モデリングの方法はまあしょうがない。いきなり読者には無理ですから、天下りに与えるしかない。解く際にPyMCを導入するってことで、つまり事後分布の手計算は要らないのが嬉しいですね~ってことですね。

ぽちぽちとセルを実行していく*2

f:id:Dr_KayAi:20140330185612p:plain

ひいい、なんか分からないうちに2混合指数分布が解かれている!PyMC、恐ろしい子

 

評価:70点

この第1節だけの判断ではこんなとこですかね。

Pros

  • ベイジアンと頻度主義の説明をなんとなくしている
  • サンプル増えると推定良くなるね!がなんとなく見えるようになってる
  • なんとなくモデリング的なことをした
  • PyMCの凄さはなんとなく伝わった

Cons.

  • 全部なんとなく

うーん、なんでしょう。どれもしっかり理解できるようには書いていないと思うんですよね。Prosの前者2つは、

Bayesian Methods for Hackers is designed as a introduction to Bayesian inference from a computational/understanding-first, and mathematics-second, point of view. 

といっているのでいいんですが、後者2つもどうなんでしょう?

私はべいじあんなので、話の中身は全部分かるし、だからこそPyMCのコーディングも「おおぉ~っ」ってなりましたけど、この本ってそういう読者がメインターゲットじゃなかったですよね?

 

そういう方々にとって、これはどうなんでしょう?この先も読んでみよっかなぁ~ってなるのかなぁ?

まあ、導入だし、これから後の章を読めばしっかり理解して使えるようになると思うんですけどね。

 

ワタクシ個人的にはiPython notebookのすごさがすこーしだけ分かったので、それでOK.あとPyMCのインストール成功も確認できましたしね!

*1:というか当時のパイセン達に言いたい。あと数式は文章だってことも。そのことを知るのに、就職してから数年かかりましたからね・・・

*2:この部分、完全にMatlab editorのノリだ。すばらしい