【技術本】Pythonでスラスラわかるベイズ推論「超」入門
https://amzn.to/46n5n5k
【技術本】Pythonでスラスラわかるベイズ推論「超」入門
へポスト
ベイズモデルで最低限必要な基礎的な確率分布から解説してくれる書籍。
よく利用される確率分布として、ベルヌーイ分布、二項分布、正規分布、一様分布、ベータ分布、半正規分布などを紹介。
ベイズ推論実習においては「確率が一定で前回結果が次回に影響を与えないくじ引きを、5回引いて当たりの確率分布を求める」という問題を紹介。
応用問題として「データ分布のベイズ推論」、「線形回帰のベイズ推論」、「階層ベイズモデル」、「潜在変数モデル」を紹介。
最終的な実践的な業務活用事例として「ABテストの検証効果」「IRTによる学力模擬テスト結果の評価」などを紹介。
それぞれ全てpythonコードも踏まえて紹介してくれている。
本書を読むことで、ベイズ推論はどういった性質を持ち、どのような問題に適用できるかイメージできるようになる。上述の応用問題、業務活用事例をなぞるだけでも、類似問題をベイズ推論できるようになる。
本書のキャッチフレーズ通り、実装が得意な人がコードからベイズ推論を導入するのに適した書籍だと感じた。
---------
以下、内容メモ
●1章 確率分布を理解する
5回くじを引いてあたりの数を求める問題(離散分布)
当たりの確率p(0<=p<=1)、くじを5回引いた時あたりがk回出たとする
分布関数:P(X=k) = 5_C_k・p^k(1-p)^5-k
確率分布:
確率変数X :0 1 2 3 4 5 (5回くじを引いた時のあたりの数)
確率値P(X):1/32 5/32 5/16 5/16 5/32 1/32
上記では、確率変数は6通り(n=5 0,1...5)しかないが、1000回くじを引いた時を考える
すると、5回のときよりなめらかな確率分布図ができあがる。
nを極限まで増やしていけば、棒グラフの形状を連続関数でも代用できるのではと仮定する。
確率変数が連続的に変化する値をとる場合は連続分布となる。
連続分布は、確率密度関数と呼ばれている
確率密度関数を一定の区間で積分した結果が確率値になる
●2章 よく利用される確率分布
★ベルヌーイ分布(離散分布):確率変数Xの値が、1:くじにあたったとき、0:くじにはずれたとき、の2通りである場合の確率分布
P(X=k)=p^k・(1-p)^1-k
kの値は1,0の2通り。それぞれ代入すると以下の2つの式を同時に表していることになる
P(X=1)=p^1・(1-p)^0=p
P(X=0)=p^0・(1-p)^1=1-p
★二項分布(離散分布):独立なベルヌーイ試行をn回実施した場合の当たりの回数Xを確率変数とする確率分布
P(X=k)=n_C_k・p^k(1-p)^n-k
★正規分布(連続分布):テストの得点分布で想定される、平均、標準偏差で説明できる確率分布
f(x)=(1/√2πσ)exp(-(x-μ)^2/2σ^2)
μ:平均
σ:標準偏差
★一様分布(連続分布):一様乱数の確率モデルからなる確率分布
一様分布の確率密度関数
f(x)=1/(b-a) a<=x
区間[0,1]の一様分布は
f(x)=1 0<=x<1
★ベータ分布(連続分布):二項分布の観測値から推定される確率分布
正規分布同様に連続分布:しかし実世界との対応がわかりにくい部分もある
★半正規分布:常に正の連続値を取る確率分布。正規分布モデルの標準偏差用の確率変数として良く用いられる
f(x)=√(2/πσ^2)exp(-x^2/2σ^2)
●3章:ベイズ推論とは
統計的分析の一手法
事前分布と観測された事象から、其れの起因である原因事象を確率的に推論する(事後分布を求める)
最尤推定と比較して、ベイズ推論の性質を説明:
別の推論方法:最尤推定 これも確率分布のパラメータ値を推測する
しかし、実現するための手段と最終的に言えられる結果はベイズ推論と異なる
最尤推定は、事前にパラメータに関する尤度関数が定まっていることが前提>確率モデルと観測値から尤度関数を定めている
尤度関数の値が最大になるパラメータを求める。勾配降下法などが用いられる
もっとも確からしい、特定のパラメータ値(点)を求めるのが目的
>最尤推定の結果は1点の値
ベイズ推論では、特定のパラメータ値でなく、パラメータ値の確率分布を求めるのが目的。
これにより、「予測値は0.29〜0.55の範囲に含まれる」という幅による予測が可能になる。
>ベイズ推論の結果は確率分布
幅による予測の方が、現実世界ではより活用できる可能性が高い。
例:キャンペーンのDMを1万人にうって、何人の応募があるかを予測する
観測値として利用できる情報は、人数を絞って実施したモニターテストの結果など。
最尤推定だと:もっとも確からしい人数は4000人と点による予測になる
ベイズ推論だと:応募者は2900人から5500人の範囲、という結果が得られる
不確かな予測をしたい案件に対して、現実のビジネス判断をするうえで有益な情報を提供可能な分析手段>ベイズ推論
※補足 94%HDI:94%の確度で確率変数pがどの範囲に収まるか示されている点
●4章:ベイズ推論実習
「確率が一定で前回結果が次回に影響を与えないくじ引きを、5回引いて当たりの確率分布を求める」というくじ引きの問題を実装
最尤推定で、確率値を推定>0.4という確率値が導出される
ベイズ推論:ベルヌーイ分布を使った確率モデル定義で、確率分布を推定>平均0.43、94%HDI=0.12〜0.76という分布を導出
ベイズ推論:2項分布をつかった確率モデル定義で、確率分布を推定>平均0.43、94%HDI=0.12〜0.76という分布を導出
試行回数を増やしてみる>より確率分布範囲が狭まるのを確認>平均0.41、94%HDI=0.29〜0.55という分布を導出
事前分布の変更をしてみる>事前分布の範囲を狭めてみる>94%HDIの範囲が狭まり、推論の精度が向上しているのを確認
ベイズ推論の対象にしている確率モデルは、確率分布としてはベータ分布になることが数学的に証明されている。
ベータ分布で、直接確率分布を求めてみる。
●5章:ベイズ推論プログラミング
アイリス・データセット(3種類のアヤメの花の花弁とがく片の長さと幅を測定した結果のデータセット)を利用した推論
5.1:データ分布のベイズ推論:一つの花の単項目のデータ分布を正規分布と仮定し、平均と標準偏差を求める
ベイズ推論の特徴のひとつ:サンプル数が少ない、統計的にも厳しい条件でも比較的精度の高い推論結果を出せる
今回は約50件のデータから、連続的な曲線の正規分布を推論できた
5件に絞っても、ほぼ大きく変わらず推論できた
5・2:線形回帰のベイズ推論:2項目間の関係が一次関数であることを仮定し、一次関数の傾きと切片を求める
サンプル数50と、サンプル数3の推論を実施
後者のサンプル数が少ない推論では、サンプル関数でtarget_acceptパラメータを指定しないと、推論結果の回帰直線の分布が広い範囲にわたっており、予測精度が不十分気味になる
5・3:階層ベイズモデル:少ないサンプル数の線形回帰のベイズ推論を、複数の花の種類に対してまとめて行う
データ件数が少ない時、似た傾向にあるデータも参考にすることで、精度の高い推論ができるのが階層ベイズモデル
5・4:潜在変数モデル:2つの花の、単項目のデータ分布が混在してして観測されたとき、元の2つのデータ分布(正規分布)をそれぞれ推測する
データ分布に2つのピークがあり、2つの異なる正規分布に従う確率変数のデータが同時にふくまれる仮説を検証する
どちらのグループのデータがどういう比率なのか判断する場合などに、2つの正規分布の混在比率、平均、標準偏差を同時に求めるのが潜在モデルの推論内容
この問題は、3つ以上に拡張することも可能
階層ベイズモデルと洗剤変数モデルは、確率分布を想定する確率モデルから、観測値との対応付けが可能な確率モデルの間に、もう一段階、別の確率モデルが介在するモデル
●6章:ベイズ推論の業務活用事例
6.1:ABテストの効果検証:WEBページの改善案が有効化の検証でABテストを行う。その検証結果を正しく評価する際にベイズ推論を使用する
2人のWebデザイナーが担当ページの改善案のABテストを実施。
Xさんのページは表示件数が少ない。ページA 40, ページB 25
Yさんのページは表示件数が十分にある。ページA 1200, ページB 1600
改善前のページAは両者のクリック率は同じ。ともに5%
改善後のページBば、Xさんの方がわずかにクリック率が高い。8%と6.88%
この場合、それぞれどちらのページの実装を優先すべきかの問題
それぞれXさんのA,Bページ、YさんのA,Bページのクリック率が高い確率分布求める
結果は、Yさんの方が改善した確率が高い
6.2:ベイズ回帰モデルによる効果検証:機械学習の回帰モデルを作成する場合、予測結果を利用するのでなく、各説明変数の寄与度を分析しそこから知見を導出する方法を使うことが多い。その場合、ベイズ推論で寄与度を確率分布としてわかることは効果的な分析方法となる。
回帰型機械学習モデルの活用法は、大きく分けてう「予測」と「分析」の2つ。
分析:教師無し学習のクラスタリングなど
ベイズ推論を用いた回帰モデルは、「分析」を目的とした活用法と相性がいい
6.3:IRTによるテスト結果評価:
ベイズ推論で、受験者の能力値と、設問の難易度と識別力を求める。
テスト評価で汎用的に用いられる数学モデルをベースに、ベイズ推論モデルを構築し、その推論結果を活用する方法を紹介。
へポスト
