『ベイズデータ解析』はベイズ統計学を用いる全ての実務家が座右に置くべき第一級の鈍器 - 渋谷駅前で働くデータサイエンティストのブログ

渋谷駅前で働くデータサイエンティストのブログ

元祖「六本木で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木→渋谷駅前

『ベイズデータ解析』はベイズ統計学を用いる全ての実務家が座右に置くべき第一級の鈍器

先日のことですが、『ベイズデータ解析』を訳者のお一人菅澤さんからご恵贈いただきました。もう一目見ただけで「鈍器」以外の語が出てこないくらいの立派な鈍器で(笑)、原著のBDA3*1に負けないくらいの鈍器っぷりが見事な一冊です。菅澤さんといえば名著『標準ベイズ統計学』の翻訳も手掛けておられますが、先日直にお話を伺った際は「本書の方が標準ベイズよりもさらに理論的な内容に踏み込んでしっかり書かれていて良い」とのコメントでした。


ということで、早速本書をレビューしていこうと思います。ただ、何分にも全体で888ページもある大著であり、ぶっちゃけ斜め読みするだけでも1ヶ月近くかかるという有様でしたので、内容の理解が不完全であったり誤ったりしている可能性があります。それらの不備を見つけられた際は、何なりとご指摘くだされば幸いです。

本書の概要


全体としては5部構成になっており、端的に言えば「基礎から応用」という流れに沿って書かれています。内容によっては標準ベイズと重複する箇所も多いですが、より理論的な側面をしっかり重視した構成と言えるかと思います。

第I部 ベイズ推論の基礎

  • 第1章 確率と推論
  • 第2章 単一のパラメータをもつモデル
  • 第3章 マルチパラメータモデル入門
  • 第4章 漸近理論と非ベイズアプローチの関係
  • 第5章 階層モデル


まず導入に当たる第1部ですが、一般的な統計モデリングの説明を与えていった上で徐々にベイズに入っていくという流れになっています。よって、何の数理統計学の素養もなしにいきなり本書で統計学なりベイズなりに入門しようというのは(標準ベイズ同様に)不可能だという点にご留意ください。


具体的な内容としては、ごくごく一般的な統計モデリング用語の紹介から入っていきます。説明変数(共変量)、尤度、ベイズルール、データモデルと事前・事後分布といった話題をカバーした上で、幾つかのデータセットに対する基礎的な分析の進め方が紹介されます。「スペルチェック」の例題は、"radom"という単語が"random"のスペリングミスかそうでないかを判定するというもので、面白かったです。


その上で、まず導入として二項分布やポアソン分布といった単一パラメータモデルのパラメータ推定(そして事後分布の推定)という鉄板の例題が示された上で、共役事前分布や無情報事前分布といったベイズではお馴染みの概念が紹介され、そこから正規分布などのマルチパラメータモデルの場合のアプローチ(同時事後分布もここで出てくる)へと発展していきます。この辺の内容は標準ベイズと共通しており、同書を適宜参照しながら読み進めても良いでしょう。


一方で、この最初の部は全体の基礎という位置付けでもあり、大標本理論やベイズ推論の頻度論的評価といった非ベイズアプローチとの関係性についても触れられています。それらの基礎を踏まえた上での第5章での階層モデルの導入という流れになっており、流石はBDA3という風情があります。階層モデルはここより先のほぼ全ての部でキーとなる概念であり、どれほど斜め読みであってもここだけはしっかり読んでおくべきだと思います。お馴染みeight schoolsの例題もここで最初に提示されます。

第II部 ベイズデータ解析の基礎

  • 第6章 モデル診断
  • 第7章 モデルの評価,比較,拡張
  • 第8章 データ収集を考慮に入れたモデリング
  • 第9章 意思決定分析


第2部では打って変わって、実際のベイズ統計データ分析を念頭に置いたモデル診断の話題が展開されます。まずモデル診断(妥当性など)の総論が述べられた上で、モデル評価指標や交差検証・情報量規準といった概念が提示されていきます。


ここではベイズで情報量規準ということで、AICが最初に説明された上で次に来るのはDIC、そして皆さん*2大好きWAICと来て、BICの特異性に触れた上で、Leave-one-out (LOO) CVが取り上げられ、AIC / WAICとLOO-CVとの関係についての解説がなされています。当ブログで再現性問題を論じた際に言及したベイズファクターもこの部で登場します。


また、この部では「データの集め方・扱い方」にも触れられていて、欠損値処理や実験計画の立て方、そこからさらに踏み込んで観察研究などのバイアスが明示的に含まれるデータへの対処、といった話題にも紙面が割かれています。その上で、近年注目が集まっている「意思決定分析」即ちベイズ推論の結果としてどのような意思決定をすべきか、またそれが可能かといった話題にも一つの章を割いて解説しています。

第III部 発展的な計算


ここからは具体的なMCMC*3の話題に入っていきます。標準ベイズでも触れられていましたが、現代ベイズ統計学は種々のMCMCサンプリング技法の開発に大きく支えられている側面があり、それらに通じておくことは実践面においても重要です。本書でも一般的な(ベイズ向けの)モンテカルロ法で得られたサンプルによるパラメータ推定の話題から入って、ギブスサンプラーメトロポリスヘイスティングスアルゴリズムハミルトニアンモンテカルロ、NUTS、また少し話を戻してEM、変分推論といった話題が展開されていきます。


ただ、この辺の話題は他書との重複が多いところでもあるので、どちらかというと生実装つきのテキストと併せて本書のこのパートを読んだ方がより理解が深まるかもしれません。勿論標準ベイズでも良いと思いますが、個人的には個々のMCMCアルゴリズムに生Rコードによる実装が付された『モンテカルロ統計計算 データサイエンス入門シリーズ』を併せると分かりやすいかなと思いました。

第IV部 回帰モデル

  • 第14章 回帰モデルの導入
  • 第15章 階層線形モデル
  • 第16章 一般化線形モデル
  • 第17章 頑健推測のモデル
  • 第18章 欠測データのモデル


いよいよここからが本書の核心部ともいうべき、ベイジアンモデリング即ちベイズによる回帰モデル諸論が展開されていくパートです。ただし、この部最初の14章で識別可能性や共線性や交互作用、さらには正則化・次元削減や不均一分散といった回帰分析そのものの基礎的要素の話題が本書においては初めて出てくるので、繰り返しになりますが本書でいきなり統計学や回帰分析全体の基礎から学ぼうとするのは避けた方が無難だと思います。


その上で、まず展開されていくのが階層線形モデル・混合効果モデルの話題。ここで改めてeight schoolsも出てきます。ベイジアンにありがちな「データの生成過程を表した数式をそのままStanなどの確率的プログラミング言語(PPL)で書けば動く」感じの記述が盛り沢山です。個人的に(sensitiveなテーマではありますが)分かりやすいと思ったのが16章の16.4節「(ニューヨーク市で)警察官に呼び止められる回数に対する過分散ポアソン回帰」のモデルですね。要件だけ読むと一見かなり複雑になりそうな気がするんですが、16.4.2節で解説されているように白人・黒人・ヒスパニック*4の各エスニックグループを e = 1, 2, 3とし、NY市の75ある管区を pとし、オフセットとしてその管区におけるその人種グループの逮捕件数 n_{ep}を置くと、呼び止め回数 y_{ep}

 y_{ep} \sim Poisson( n_{ep} exp (\alpha_e + \beta_p + \epsilon_{ep}) )
 \beta_p \sim N(0, \sigma^2_{\beta})
 \epsilon_{ep} \sim N(0, \sigma^2_{\epsilon})

となり、求める「管区を考慮した後に逮捕数に対する呼び止めの相対的な割合」となる指数化された係数 exp(\alpha_{\epsilon})は、データセットから単純にこの生成過程に沿ってサンプリングすれば求められるというわけです。本書ではBUGSで実装したと但し書きがありますが、Stanで書いても難しくないはずです。


また、この部では実用的なモデリングということでロバスト推測や欠測データの話題もカバーしています。お馴染み多重代入法もここで紹介されていますし、eight schoolsの例題に対する感度分析の話題もここで出てきます。

第V部 非線形・ノンパラメトリックモデル

  • 第19章 パラメトリック非線形モデル
  • 第20章 基底関数モデル
  • 第21章 ガウス過程モデル
  • 第22章 有限混合モデル
  • 第23章 ディリクレ過程モデル


最後に紹介されるのは、ベイズ統計学というよりはむしろベイズ機械学習方面で親しまれているモデルたちといった方が良いかもしれません。19章ではドメイン知識に基づく非線形モデルのベイズ的というかMCMCへの導入が例題と共に解説される一方で、その後は基底関数モデル、ガウス過程回帰といったより柔軟性の高い非線形回帰モデルの話題が展開されます。


そして最後の最後に出てくるのが、ベイズならではともいうべき確率的クラスタリングの話題。まず有限混合モデルをお馴染みEMでやる場合とMCMC(というかギブスサンプラー)でやる場合のアプローチが解説された上で、Chinese Restaurant processの比喩であまりにも有名なディリクレ過程の紹介へと移行していきます。余談ですが、僕はここを読んで初めて階層ディリクレ過程(DPが入れ子になっている)というものがあることを知りました。頭が爆発しそうです(笑)。


本書の特筆すべき点


斜め読みするだけでも1ヶ月ぐらいかかる第一級の鈍器ゆえ、何を特筆したら良いかを考えるだけでもぶっちゃけ物凄く大変なんですが(笑)、折角なので個人的に本書を読んで良かったと感じた点を列挙しておきます。

これまで複数のベイズ本に分かれていた内容が一冊にまとまっている


何と言っても最重要なのはこれでしょう。即ち標準ベイズや渡辺ベイズ、はたまたモンテカルロ統計計算やベイズ機械学習といった「ベイズ統計学の個々のテーマ」を掘り下げたテキストは多々ありますが、それらの内容を全て一箇所にまとめた本というのは少なくとも邦書ではこれまでなかったように思います*5。もっとも紙面の都合もあって個々の項目のダイジェスト版という感じになっているという側面も否めませんが、それでも「これ一冊でベイズ統計学の全体像が見渡せる」というのは本書の最大のセールスポイントと言って良いでしょう。

実データへの適用が非常に強く意識されている



本書を一読すればすぐお気付きになるかと思いますが、とにかくサンプルとなる実データセットを持ってきて、そこにどうベイズ的アプローチを適用するか、そして個々のアプローチをどうデータに適合させるか、という話題が満載なのが個人的には気に入っています。勿論、それらのデータセットの多くが原著者Gelmanのサイト以下各所で公開されている上に、RやStanによる実装例(PyStanながらPython版も)も公開されているのは実務家にとっては有難い限りです。お馴染みeight schoolsに至ってはStanのドキュメント記載のデモにまで収録されているので、皆さんも良くご存知かと思います。

一方で理論的な話題も広汎に網羅されている


これは菅澤さんからも直にコメントをいただいた点で、近年の「実装面の解説つき統計学テキスト」というと兎角コーディング実装のところにフォーカスが偏りがちで、理論的な話題は端折られてしまう傾向が否めないのですが、本書ではがっつり理論面の解説も(その豊富な紙面に物を言わせて)カバーしています。例えば8章「データ収集を考慮に入れたモデリング」では、細かに事後分布の計算過程を解説することによって「何の条件を受け容れたら何が得られて何が失われるか」といった、不確実性とそのモデリングの方法についての理解を促す構成になっています。僕のような数学が大の苦手民にとっては嬉しい悲鳴です(笑)。


感想・コメントなど


僕がお聞きした範囲では既に本書は今後の重版が決まっているとのことで、これほど大部の技術書としては極めて異例なのだとか。けれども、個人的な感想としてはもっともっと本書が世に広まって、少しでも確かなベイズ統計学の知識を持つ実務家が増えてくれたら良いと願っている次第です。


一つだけ本書の難点を挙げるとすれば、「生RコードかStanコードでの実装しか想定されていない」点でしょうか。やはりここはPython隆盛の現代に合わせて、PyStan以外にもPyMCやNumPyroといったモダンなベイズ実装フレームワークでの実装例と合わせた解説書が求められているのではないかと思いました。この点も先日菅澤さんと直にお話させていただいた際に出てきた話題でして、いずれGelman当人もしくは周辺からそういうテキストが出てくることを期待したいと思います。

*1:Bayesian Data Analysis (Chapman & Hall/CRC Texts in Statistical Science Book 106) (English Edition)

*2:渡辺ベイズ読者限定かもですが

*3:MCMCとは何ぞや?という方のために念の為貼っておきます→Stanで統計モデリングを学ぶ(2): そもそもMCMCって何だったっけ? - 渋谷駅前で働くデータサイエンティストのブログ

*4:アジア系は無視されているらしい

*5:洋書というか原著ではちょこちょこありますが