Python実装を通して学ぶ、統計モデリング入門|電子テキスト紹介 #2

f:id:lib-arts:20200229195349p:plain

当ブログの内容を元に電子テキストやその印刷版を、技術書典やnoteやboothなどのプラットフォームで販売を行なっているのですが、あまり内容について紹介してこなかったのでちょっとした宣伝も兼ねてご紹介していくシリーズです。
#1では高校数学の演習と基本的な機械学習アルゴリズムについて取り扱った、「高校数学の演習から理解する、機械学習アルゴリズム」についてご紹介しました。

高校数学の演習から理解する、機械学習アルゴリズム|電子テキスト紹介 #1 - Liberal Art’s diary

#2では、Pythonを用いた「統計モデリング」について取り扱った、「Python実装を通して学ぶ、統計モデリング入門」についてご紹介します。

以下目次になります。
1. 作成にあたってのコンセプト
2. 簡単な内容の紹介
3. 今後のアップデート予定について
4. まとめ

 

1. 作成にあたってのコンセプト
こちらのテキストを作成するに至った背景やコンセプトですが、初心者〜中級者向けの「統計モデリング」の本として有名な「データ解析のための統計モデリング入門」が概要を掴むにあたって非常に良本な反面、細かい記述に違和感を感じたり読み返す際にどこに何が書いてあったか探しずらかったりなどがあったためです。

データ解析のための統計モデリング入門 - 岩波書店

他の人に薦めたり解説などで用いたりするにあたって、どうしてもミスリードを生む点などもありその辺を解消できたらということで、補助としても用いることができるように書いてみました。
「データ解析のための統計モデリング入門」の中で気になった点をまとめておくと下記になります。

・GLMのパラメータ導出に関して
-> MCMC法が書かれているものの、勾配降下法との関連やサンプリングの文脈などが触れられておらず、全体像がつかみにくい形となっていました。

・リンク関数の設定について
-> 書き方が唐突のため、少し理解にあたって戸惑いました。

ベイズ関連の記述について
-> 階層ベイズモデルについて書かれていたものの若干違和感を感じる内容となっていました。また、パラメータの事前分布の導入などについての記述が少々わかりづらい印象でした。

・Rの実装があるものの、ライブラリの使い方が中心である
-> 理論の理解にあたってはライブラリの使い方よりも、計算過程の実装の方が気になるところです。

上記を踏まえて、本書ではこれらについての疑問の解消となるように諸々記述を試みています。


2. 簡単な内容の紹介
2節では簡単に内容についてご紹介します。

f:id:lib-arts:20200229202128p:plain

f:id:lib-arts:20200229202146p:plain

まず第1章ではベースとなる事項として確率分布と最尤法について取り扱っています。この確率分布と最尤法は統計的なモデリングにおいては非常に重要な基本事項なのですが、どちらも意外と抜けがちです。理由としては、確率分布や最尤法は入門書においては難しいトピックである一方で、専門書として書くには初歩的なトピックになっており、しっかりと解説してあるケースが少ないというのが考えられるのではと思います。

f:id:lib-arts:20200229202645p:plain

そこで本書では上記のように確率分布の直感的なイメージから入り、確率分布の数式や最尤法について紹介するようにしています。

f:id:lib-arts:20200229202911p:plain

また、最尤法については具体的な問題の解法を通して、数式展開のイメージをつかんでいただけるようにしています。

f:id:lib-arts:20200229203046p:plain

次に第2章では、一般化線形モデル(GLM; Generalized Linear Model)について解説を行なっています。

f:id:lib-arts:20200229203840p:plain

「データ解析のための統計モデリング入門」では用いる確率分布である指数型分布族(exponential family)についての解説が少ない印象だったので、上記のように指数型分布族の定義に関連して諸々書くようにしました。

f:id:lib-arts:20200229203915p:plain
また、パラメータ導出にあたって、MCMCよりも勾配法を用いる方がDeepLearning系との関連性も見えるのではということで今回は今回は勾配降下法(Gradient Descent)を用いてモデルのパラメータ推定を行ってみました。

f:id:lib-arts:20200229203936p:plain

実装についても上記のように繰り返し演算によってパラメータ推定を行う過程がわかりやすいような実装にしました。

f:id:lib-arts:20200229204059p:plain

f:id:lib-arts:20200229204118p:plain

続いて第3章では、最尤法とベイズ統計モデリングについて記述しています。ベイズの定理をパラメータの推定などに導入し、事前分布などを用いることで正則化(regularization)の方法として知られているリッジ回帰を導出したり、データが少ないケースにおける頑健性を高めるにあたって予測分布の導出などを行っています。こちらについては「データ解析のための統計モデリング入門」には記載がなかったのですが、PRMLの数式をなるべく簡単にして記述するように努めました(3.4だけ導出過程をわかりやすく記述できていないのですが、こちらについては第2版時に改訂できればと考えています)。

f:id:lib-arts:20200229204626p:plain

最後に第4章では、最適化の枠組みでMCMC法について包括的にまとめています。こちらについてはある程度はしっかりとまとめられていると思うのですが、サンプリングについての文脈がまだ反映しきれていないので、こちらについても第2版の際に改訂したいと考えています。

 

3. 今後のアップデート予定について
1節で述べた「データ解析のための統計モデリング入門」の気になった点についての解消としてこちらのテキストは作成しましたが、2節でご紹介した内容だと、MCMCをサンプリングの文脈での記述や、ベイズ線形回帰については軽く触れただけで階層ベイズモデルまでまとめきれていないというのが現状であります。また、予測分布の導出についてもPRMLの記述をもう少し簡単にした記述も加筆したいところです。
こちらについては第2版の改訂の際に追加できればと考えています。

とはいえ現段階の内容だけでも、統計的なモデリングを行うにあたっては回帰分析からさらに一歩進んだ視点で考察することができると思いますので、ここまでご理解いただけたら様々なシーンにおける考察において役に立つのではないかと思います。


4. まとめ
#2では、Pythonを用いた「統計モデリング」について取り扱った、「Python実装を通して学ぶ、統計モデリング入門」についてご紹介しました。
#3では、機械学習について学ぶにあたって最初学ぶ際にネックになりやすい強化学習について解説を行った、「Deep Q-Network を通して学ぶ、強化学習超入門」についてご紹介します。