ベイズロジスティック回帰(Logistic Regression)モデル|PyMC3チュートリアルに学ぶ統計モデリング #3

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

当シリーズではPyMC3のチュートリアルを元に統計モデリングについて確認しています。PyMC3はベイズ統計モデリングのためのPythonのパッケージで、Pythonにおいてベイズ統計を取り扱うにあたってはデファクトとみて良いパッケージだと思います。
#1では導入としてPyMC3の概要の確認とインストールと簡単な動作確認を、#2ではベイズ線形回帰(Linear regression)モデルについて行いました。

#3では下記を参考にベイズロジスティック回帰(Logistic Regression)モデルについて取り扱います。

GLM: Logistic Regression — PyMC3 3.9.3 documentation

以下、目次になります。
1. 理論的な内容の確認
2. 実装の確認
3. まとめ


1. 理論的な内容の確認

GLM: Logistic Regression — PyMC3 3.9.3 documentation
1節では上記の理論的な内容をざっくりと俯瞰します。

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

まずは問題設定を確認します。上記のようなサンプルがある際に、一番右の列の"income"が50Kドル以上かを予測するというのがここでの問題設定です。1ドルを100円と考えるなら、50,000ドルは約500万円となり、説明のところに"$50,000 per year"とあるので、年収が5万ドル(約500万円)以上かどうかを予測する問題とざっくり把握することができます。

f:id:lib-arts:20200903170254p:plain
(中略)

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

年収の予測にあたって、上記では年齢(age)と教育を受けた年数(year of education)、1週間あたりの勤務時間(hours worked per week)を用いてロジスティック回帰でモデリングを行なっています。

上記でモデリング部分の記載についてはだいたい確認できたので1節はここまでとします。


2. 実装の確認
2節では実装の確認を行います。

f:id:lib-arts:20200903171607p:plain
モデリングは上記で実行しています。#2で二つ紹介した実装方法の二つ目の実装方法(Rに似た記載方法)になっています。この表記だと事前分布の設定などがどうなっているのかわかりづらいので、デフォルトの設定の確認も兼ねて#4以降ではTutorialの先に確認していければと思います。とはいえ、ここでの記載を見る限りではpm.glm.GLM.from_formulaの引数では、モデリングに当たっての数式の設定と、利用したサンプルの設定、目的変数の確率分布の設定を行っています。そのため、通常のロジスティック回帰の設定を行っているであろうことは少なくとも読み取れます。

f:id:lib-arts:20200903172328p:plain
また、上記はMCMCを行った結果です。切片(intercept)や係数(coefficient)などのパラメータに対して、右はMCMC計算が収束したのちの値の変化を(初期値の周りはノイズになるのでburn-in期間とします)、左は右の値をヒストグラムと同様の要領で分布化した結果になります。

PyMC3の利用にあたって、気になる箇所については一通り確認できたので2節はここまでとします。


3. まとめ
#3では#2に引き続き"Examples"から、"GLM: Logistic Regression"について確認しました。
だいたいの雰囲気は掴めてきたものの、少々実装の解釈が曖昧になっているので、#4以降では先に"Tutorial Notebooks"の内容を読み進めていければと思います。

tutorials_notebooks — PyMC3 3.9.3 documentation