岩波データサイエンスVol.1(ご恵贈お礼)

岩波データサイエンス Vol.1 をご恵贈いただきました.ありがとうございます!

岩波データサイエンス Vol.1

岩波データサイエンス Vol.1

書籍の概要

本書は,「岩波データサイエンス」という6巻シリーズの1巻目です.主にマルコフ連鎖モンテカルロ法(MCMC)などを用いたベイズ統計モデリングについて扱っており,理論から実装,Stanなどの最先端のソフトウェアまで幅広い話題が揃えられています.著者陣は非常に豪華で,ベイズ統計モデリングの著名人で構成されています.ベイズ統計の基礎から最先端の動向まで,わかりやすく理解することができます.

そして,特筆すべきはサポートページの充実ぶり.特集記事だけでも以下のリンクのとおり,記事の補足,理解を促す動画,不採用の原稿,ライブラリのインストール方法などについても手厚くサポートされています.中には,p.4-5の巻頭言を補足するオリジナルビデオまであります.以下のリンク先で,左上の方にある「[特集] ベイズ推論とMCMCフリーソフト」をたどってみてください.

https://sites.google.com/site/iwanamidatascience/

また,なんと芥川賞受賞の円城塔さんの掌編小説まであります.サポートページにあるように,「雑誌のような本」という謳い文句にふさわしい内容に仕上がっています.

総評

以下では,特集「ベイズ推論とMCMCのソフト」に焦点を絞って書評を書かせていただきます.

特集の前半は,ベイズ統計の基本の速習にはじまり,階層ベイズ,時間・空間データのモデリングが扱われています.後半は,MCMCを実行するソフトウェアの使用方法や適用例について説明されています.重点的に説明されているソフトウェアは,Stan, PyMCです.また,前半の久保先生と伊東先生の記事にはBUGSのコードのJAGSによる実行例,WinBUGS/OpenBUGSの実行例が載っています.

本書を一通り読んで,概念,理論と実践のバランスが絶妙だと感じました.前半は過度に理論的な内容に偏ることなく,具体例とともにコードの説明もついており,後半も単なるツールの使用方法にとどまらず実例を挙げて説明しているので実践的という感想をもちました.p.5の特集の巻頭言に,「ツールの利用を前提として,ベイズ推論や階層ベイズモデリングを学ぶことを,もうひとつの目的にすることになった」とありますが,その目的は十分に達成できていると思われます.コラムも実践的な内容が多く,特集の最後には伊庭先生がベイズモデルの表現形式についてまとめてくださっているので,俯瞰的な視野で学習内容を整理できます.また.サポートページで補完する体制が整っており,まさに至れりつくせりです.データ解析に現在関わっている,そして将来志す人にとって必携の一冊です.構成についても,それぞれの記事が関連する箇所を参照し合っているので,内容の関係性を把握しやすいことも好印象でした.

対象としては,ベイズ統計,特に階層ベイズ,状態空間モデル,CARモデル等について専門書に進む前に知りたい,Stanなどの最新のベイズ統計モデリングのソフトウェアについて抑えておきたい,実行例を通して理解したいといったニーズがある読者に最適だと思います.

前提知識は,非ベイズ統計学,特に最小二乗法や信頼区間の考え方,一般化線形モデルは押さえておいた方が良さそうです.時系列解析あたりの基礎知識もあると,理解が向上するかと思います.数式も出てきますが,難解なものはなく大学教養程度の知識で問題ないでしょう.実装については,RかPythonで何かしらのデータ解析経験があった方が読みやすいかと思います.
ベイズ統計の知識については,伊庭先生の超速習コースが用意されているため,必須ではない気もします.とはいえ,事前分布,事後分布などが何を意味しているのか,またベイズ統計ではデータを観測した下でのモデルパラメータの確率分布を事後分布として推定するという世界観は,本文でも説明されているものの,あらかじめざっくりとした理解をしていないと少々厳しいかもしれません.たとえば,豊田先生の書籍の1~3章あたりに目を通しておくと良いかと思います*1

基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門

基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門

また,以下の書籍の1~3章,8章あたりは本書の題材と関係する部分も多く,あらかじめざっと目を通しておいた方が良いかもしれません.

予測にいかす統計モデリングの基本―ベイズ統計入門から応用まで (KS理工学専門書)

予測にいかす統計モデリングの基本―ベイズ統計入門から応用まで (KS理工学専門書)

みどり本こと「データ解析のための統計モデリング入門」を読んでからの方が良いのか,読む前の方が良いかについては意見が分かれるかもしれません.個人的には,読んでいるに越したことがないが,読まなくても内容はある程度理解できるのではないかと思っています.

以下,各特集記事をオーバービューしていきます.

ベイズ超速習コース(伊庭幸人)

伊庭先生によるベイズ統計の導入的な記事.記事にもあるように,ベイズの定理を使って事後確率の計算にとどまる解説が多いのに対して,この記事では非ベイズでの統計解析,たとえば最小二乗法をベイズの枠組みで扱うとモノの見方をどう変えなければならないかが明確かつ簡潔に書かれています.そのため,個人的には,ベイズ統計モデリングだけでなく,機械学習を勉強しようと思ってベイズ的アプローチのバイブル「パターン認識機械学習」(通称,PRML)などを読もうとしている方々にも,本記事は目を通す価値があるように思われました.実装が気になる方は,p.65-70の松浦さんのStan,p.84-89の渡辺さんのPyMCの記事を合わせて読むのも一つの手かと思います.記事の最後に出てくる階層ベイズも「学校と生徒」のように身近な例で説明されているのでわかりやすいです.ただ,この記事ではそこまで詳しくは扱われていないので,次の久保先生の記事を読みましょう.

途中で出てくる普通の統計学での信頼区間の意味を確認するには,たとえば上記の豊田先生の「基礎からのベイズ統計学」p.54-55などを参照すると良いでしょう.

[コラム] 2ページで分かるMCMCの秘密 (伊庭幸人)

Q&A形式で,マルコフ連鎖モンテカルロ法(MCMC)のコンセプト・概要,よくある誤解,使用上の注意点がわかりやすくまとまっています.
Gibbs Sampler法やMetropolis Hasting法などの詳細については,サポートページにある伊庭先生の講義ビデオを観るか,同じく伊庭先生の「計算統計II」を読むと良いでしょう.

https://sites.google.com/site/iwanamidatascience/vol1/support_tokushu#TOC-2-MCMC-

階層ベイズ 最初の一歩(久保拓弥)

ご存知,「みどりぼん」の著者である久保先生による記事.階層ベイズモデルの入門ということで,「複数の県の複数の小学校で,異なる給食を1年間出したときに,生徒の身長の伸びに影響は出るか?」という題材で,対応のない一般化線形モデルでモデリングすることの問題の提起から始まります.その後,このモデルをベイズ化し,最後に対応関係をつけるように階層ベイズモデルを導入していきます.

本書では,巻頭言にもあるように階層ベイズの理解が一つの目的となっていますが,もしかすると伊庭先生の「ベイズ超速習コース」p.14-15の説明と,本記事の対応関係がわかりづらいかもしれません.しかし,その点についても手厚くフォローされているので心配は無用です.以下の,解説記事の2点目のQ&Aを読むとクリアになるでしょう.また,2回の反復測定の経時データを扱っており少々面食らうかもしれませんが,1点目のQ&Aに明確に説明されています.

「この解説を読む助けになるQ and Aを作成しました」
https://sites.google.com/site/iwanamidatascience/vol1/support_tokushu#TOC-JAGS-

この記事は,もう一度頭を整理して読み直そうと思います.

時系列・空間データのモデリング(伊東宏樹)

伊東先生による時系列データ,空間データのベイズモデリングの解説記事.時系列データや空間データでは,時点や空間の位置が近いのデータと相関をもつことが多く,そのようなデータをどのようにモデリングしていくかについて説明されています.

時系列データに対しては,状態空間モデルを扱います.状態空間モデルというと難しい印象を受けますが,最初はわかりやすいローカルレベルモデルから入ってくれているので,予備知識はそこまで必要ないのではないでしょうか.必要ならば,コマンダー,クープマンによる「状態空間時系列分析入門 」の冒頭2章分を読めば良いでしょう.

状態空間時系列分析入門

状態空間時系列分析入門

続いて,トレンドが変化するモデル,ノイズが正規分布に従わない場合,観測値が二項分布に従う場合へと拡張していきます.BUGSのコードも記載されており,わかりやすいです.

空間データは,Intrinsic CARモデルにより空間的に相関のあるデータをモデリングしていきます.RのCARBayesパッケージやWinBUGS/OpenBUGSのコードも載っています.

本文中で説明されているように,以上の状態空間モデルとIntrinsic CARモデルは同じ内容を別の形式で表現した関係にあります.これが,本書の特集の最後で伊庭先生が書かれている「時間・空間を含むベイズモデルのいろいろな表現形式」の「(1) 状態空間モデルによる表現」と「(2) 条件付き分布による表現」の関係の一例になっています.「(1) 状態空間モデルによる表現」と「(4) Full Conditionalによる表現」の関係の一例となっています.

2015/10/10 14:49追記:
伊庭先生から,(1) と (2) の関係よりも,(1) と (4) の関係の方が妥当であるというご指摘をいただきました.後ほど自分で理由を考えて追記します.

[コラム] MCMCソフトを使う前に ― 一般的な準備から統計モデリングまで (松浦健太郎

松浦さんによるMCMCのソフトウェアを使う前に行わなければならない事項,注意点がコンパクトにまとまった記事.

ベイズ統計モデリングに限らず,データ解析というと手法やツールに目が行きがちですが,その前に実験計画を立てて,対象とするデータの素性を理解しなければ何も始まりません.また,モデリングでも最初は簡単なモデルを作って,徐々に表現力と頑健性が高くなるように高度化していくプロセスが必要です.記事の最後には,久保先生と松浦さんのモデリングの手書きイラストが載っていて臨場感にあふれています.コラムという位置付けではありますが,個人的には,相当な場数をこなしてきたプロだからこそ書ける貴重な記事だと思いました.

Stan入門 ― 次世代のベイジアンモデリングツール (松浦健太郎

同じく松浦さんによるStanの使用方法の解説記事.まずは,伊庭先生の「ベイズ超速習コース」で扱われた最小二乗法をStanで実行し,ベイズ信頼区間ベイズ予測区間を求めていきます.次に,Stanの内部で対数事後確率(から事前分布の対数を引いたもの)がどのように表現されているかが説明され,increment_log_prob関数を紹介しています.

さらに,四半期ごとの予約販売数を対象として,季節変動のある時系列データを状態空間モデルで扱う方法,Stanの実装が紹介されています.これを読む前に,前記の「予測にいかす統計モデリングの基本」の8章や同様の話題を扱ったネット上のスライド,ブログなどで状態空間モデルにより季節調整を行っている例を眺めておいた方がわかりやすいかもしれません.個人的に重宝したのは,ベイズ決定まで書かれていることです.なお,ここでは販売数の実績が予測よりも上回った場合の損失コスト,実績が予測よりも下回った場合の廃棄コストの定式化がさらっと書かれていますが,筆者のモデリングセンスが垣間見えた気がします.

最後は,伊東先生の記事で扱われた2階階差のCARモデルを用いて,2次元のプレートを対象にどの処理が有効かの解析をしています.なお,処理は無作為割付の必要性も書かれていて,実験計画の重要性を改めて実感します.

[コラム] Pythonとは(高柳慎一)

高柳さんによる主にPythonの科学技術計算系のライブラリの紹介記事.本書では,これまではR+{Stan, JAGS, WinBUGS/OpenBUGS}が主体で説明されてきました.RユーザがPythonのライブラリを俯瞰する記事としてコンパクトにまとまっていて,重宝するのではないかと思います.

PythonMCMCライブラリPyMC(渡辺祥則)

渡辺さんによるPyMCライブラリの解説記事.松浦さんのStan入門と同様に,まずは最小二乗法を例にPyMCの使用方法の解説から入っていきます.続いて,みどり本10章の階層ベイズモデルの実行例,そして最後はStanが苦手とする離散変数のサンプリングの例が取り上げられています.最後の例により,Stanが苦手とする処理をPyMCでたやすく実現できることが実感できます.

PyMCは触れたことすらないので,これを機会に触ってみようと思います.

[コラム] MCMCソフトウェアの比較 (松浦健太郎

松浦さんによるMCMCソフトウェアを比較した記事.本書で扱われたStan,JAGS,PyMCに加えて4つのソフトウェア,そして自分で実装する場合について,複数観点で比較した表が掲載されています.重宝するのは,その下にどんな時にどのソフトウェアを使えば良いのかについて,筆者のお勧めが載っていることです.わずか1ページですが,良い意味で非常に情報量が多く重宝する記事です.

時間・空間を含むベイズモデルのいろいろな表現形式 (伊庭幸人)

伊庭先生によるベイズモデルの表現形式とそれらの関係性を解説した記事.表現形式を「状態空間モデルによる表現」,「条件付き分布による表現」,「マルコフ場モデルによる表現」,「Full Conditionalによる表現」の4つに分けて,それぞれの表現を本書でこれまでに扱われたモデルを例に説明されています.このように俯瞰的な視点で整理された記事は貴重だと思われます.また,特に良かったのが,これらの表現形式の説明に入る前に,モデリングとは何を行うことであるかが端的に説明されており,その後の表現形式の関係性を理解するのに視座が上がることです.ただ,私自身理解しきれていない部分もあり,またFull Conditionalによる表現で触れられているBrook's lemmaにも興味があるので,サポートページを利用したりして腰を落ち着けて勉強したいと思います.

[コラム] 赤池スクールとベイズ統計(伊庭幸人)

伊庭先生による80年代の統計数理研究所において行われたベイズ統計の研究に関するコラム.当時から盛んに研究が行われていたことがわかります.

おわりに

以上,丁寧な解説,実用的なソフトウェアの使用方法,モデリングの進め方や注意点の指南など,概念,理論と実践のバランスが絶妙で,至れり尽くせりの素晴らしい書籍でした.私も今後実務でベイズモデリングを実施予定です.これまでも少しずつは勉強してきた分野でしたが,このタイミングで本書が出版されることにより,基礎の復習と先端的な話題のキャッチアップができ,非常にありがたかったです.もう何周かしてみようと考えています.

最近出版されたデータ解析の書籍の中では,先月発売された「データサイエンティスト養成読本 機械学習入門編」とともに,データ解析を志す方々の良い指南書となることと思います.

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

一人でも多くの方の手に,この良書が渡ることを祈っています.

*1:豊田先生の書籍では4章以降がMCMCの説明であり,目を通しておくに越したことはありません.