学習ノート / 工学院大学 情報科学科

ベイズ統計・予測モデリング 学習ノート

共役事前分布の計算パターンから、階層ベイズ・EM法・MCMC・項目反応理論・WAIC まで。すべて手計算で追える自作の数値例つきでまとめた、自分用の整理ノートです。

自作例題 10問+解答 数式は外部ライブラリなし 印刷・PDF化対応 2026-07

1. ベイズ推定の骨格

全部ここに戻ってくる。どんなに式が複雑になっても、やっていることは1行で書ける。

p(θ | D) ∝ p(D | θ) · p(θ)
事後分布 ∝ 尤度 × 事前分布

なぜ「∝」で書けるのか

同時分布は2通りの順序で分解できる(乗法定理)。

p(D, θ) = p(D | θ) p(θ) = p(θ | D) p(D)

同じものを2通りに書いただけなので等号で結び、p(θ|D) について解く。

p(θ | D) = p(D | θ) p(θ)p(D)

分母 p(D) = ∫ p(D|θ)p(θ) dθθ が積分で消えているのでθ についての定数。だから比例関係として書ける。

用語の対応

呼び名意味
p(θ)事前分布 priorデータを見る前の信念
p(D|θ)尤度 likelihoodそのパラメータならこのデータがどれくらい出やすいか
p(θ|D)事後分布 posteriorデータを見た後に更新された信念
p(D)周辺尤度 evidence正規化定数。θ に依存しない
確率と尤度の違い:確率は「パラメータを固定 → データがどうなるか」、尤度は「データを固定 → パラメータがどれくらいもっともらしいか」。式は同じでも、どちらを動かして見ているかが逆。

点推定と事後予測分布

  • 点推定:事後分布の代表値(平均・最頻値=MAP)を1つ選んで「この値だ」と決め打ちする。
  • 事後予測分布:パラメータの迷いごと積分して、次に来るデータの分布を出す。予測の幅が点推定より広くなる
    p(xnew | D) = ∫ p(xnew | θ) p(θ | D) dθ
    分散が「現象そのもののばらつき」+「パラメータ推定の自信のなさ」の和になるため。データが少ないほど幅が広がり、リスクを安全側に見積もれる。

精度(precision)という書き方

ベイズ統計では正規分布を分散 σ2 ではなく、その逆数の精度 τ = 1/σ2 で書くことが多い。

𝒩(x | μ, τ) = τ1/2√(2π) exp{ −τ2(xμ)2 }

理由は式が綺麗になるから。分散のままだと「1/分散」の足し算で分数が重なるが、精度なら

事後の精度 = 事前の精度 + データの精度

という単純な足し算になる。以降このノートでは τ常に精度(分散ではない)。

2. 共役事前分布

尤度に対して、掛けても分布の「形」が変わらないように選んだ事前分布のこと。事後分布が事前と同じ族になるので、積分を一切解かずにパラメータの更新だけで推論が終わる。

共役のうまみ

やっている計算は本質的に指数(べき)の足し算だけ。「元の形(事前)とデータの形(尤度)が同じ数式構造をしているから、混ぜても形が崩れない」と理解しておけばよい。

尤度(データのモデル)未知パラメータ共役事前分布事後分布
ベルヌーイ/二項 成功確率 m Beta(α, β) Beta(α + 成功数,  β + 失敗数)
カテゴリカル/多項 確率ベクトル π Dirichlet(α) Dir(αk + nk)
正規(精度既知 平均 μ 𝒩(m0, τ0) 精度 τ′ = τ0 +
平均 m′ = (τ0m0 + τΣxi) / τ
正規(平均既知 精度 τ Gamma(a, b) Gamma(a + n/2,  b + ½Σ(xiμ)2)
ポアソン 発生率 λ Gamma(a, b) Gamma(a + Σxi,  b + n)
なぜ精度の事前にガンマを使うのか:正規分布の式を μ について見ると2次関数の形だが、τ について見るとガンマ分布と同じ形(τae)をしているから。だから共役になる。

事前分布の影響はいつ消えるか

  • データが少ないうちは事前分布に強く引っ張られる。データが増えるほど尤度が支配的になり、的外れな事前分布の影響は消えていく。データが無限にあれば最尤推定と一致する。
  • 「データが十分多いか」の確認法:まったく違う事前分布をいくつか試して、事後分布が同じ形に重なるかを見る。
  • データが少ないときは、完全に平らな無情報事前分布より、最低限の常識を入れた弱情報事前分布(負の値は取らない、極端に大きくはならない等)の方が推定が安定する。

3. 計算パターン集 手を動かす

共役の4パターンを、自分で作った数値例で最後まで計算する。この手つきが身につけば、あとは数字が変わるだけ。

共通の手順テンプレート

  1. 尤度を書く。順序が指定されていれば二項係数は付けない。複数データなら掛ける(=指数を足す)。
  2. 事前分布を ∝ の形に落とす。正規化定数は全部「定数」に投げる。
  3. 掛ける。指数(べき)を足す。正規分布なら log を取って2次関数の足し算にする。
  4. 既知の分布の形と見比べる。Beta / Gamma / 正規のどれかに必ずなる。
  5. 平均・最頻値を答える
  6. 図を描く。事前より事後が「尖る」「中心が移動する」を示す。

パターン① 二項 × ベータ

例題 3-1
あるボタンのクリック率 m を推定したい。事前分布を p(m) = Beta(m | 2, 3) と見積もった。ボタンを 10 回表示したところ 3 回クリックされた。
(1) 事後分布を求めよ。 (2) 事後分布の平均と最頻値を求めよ。 (3) m ≥ 0.5 となる確率を表す定積分の式を書け。
解答

(1) 尤度は Binomial(3 | 10, m) ∝ m3(1−m)7。事前は Beta(2,3) ∝ m1(1−m)2。掛けて指数を足すと

p(m|D) ∝ m3+1(1−m)7+2 = m4(1−m)9

Beta(α,β) ∝ mα−1(1−m)β−1 と見比べて α = 5, β = 10:

Beta(m | 5, 10)

公式どおり Beta(2+3, 3+7) = Beta(5,10)。成功回数を α に、失敗回数を β に足すだけ

(2) 平均 = α/(α+β) = 5/15 = 1/3 ≈ 0.333
最頻値 = (α−1)/(α+β−2) = 4/13 ≈ 0.308

観測だけなら 3/10 = 0.3。事前が「もう少し高い」と主張していたぶん、わずかに上に寄っている。

(3)

P(m ≥ 0.5 | D) = ∫0.51 Beta(m | 5, 10) dm
p(m|D) │ ╭─╮ Beta(5,10) │ ╱ ╲ │ ╱ ╲ │ ╱ ╲___ │╱ ╲▒▒▒▒▒ ← P(m ≥ 0.5) └┴──┴──────────┴──────── m 0 0.31 0.5 1

要注意:順序が指定された尤度に二項係数は付かない

「4回中2回当たった」なら 4C2 m2(1−m)2
「表・裏・裏・表 の順に出た」なら組み合わせは1通りしかないので m2(1−m)2(係数なし)。
事後分布を求めるだけなら定数倍は ∝ に吸収されるので結果は同じだが、「尤度を書け」と言われたときは区別する。

パターン② 正規 × 正規(平均が未知)

例題 3-2
センサーの測定値 x が平均 μ・精度 4 の正規分布に従うとする:p(x|μ) = 𝒩(x | μ, 4)。
μ の事前分布を p(μ) = 𝒩(μ | 20, 1) とする。x = 25 が観測された。
(1) 対数事前分布・(2) 対数尤度・(3) 対数事後分布を μ の式で表し、(4) 事後分布を正規分布として書け。
解答

(1) 対数事前分布 — log を取ると指数の肩が降りてくる。前の係数は μ に依存しないので定数へ。

log p(μ) = −12(μ−20)2 + C = −0.5μ2 + 20μ + C

(2) 対数尤度

log p(x=25|μ) = −42(25−μ)2 + C = −2μ2 + 100μ + C

(3) 対数事後分布 — 掛け算が log では足し算になる。

log p(μ|x) = (−2μ2 + 100μ) + (−0.5μ2 + 20μ) + C = −2.5μ2 + 120μ + C

平方完成する:

= −2.5(μ2 − 48μ) + C = −2.5(μ − 24)2 + C

(4) −(τ/2)(μm)2 の形と見比べて 精度 τ′ = 5、平均 m′ = 24:

𝒩(μ | 24, 5)

公式で検算:事後精度 = 1 + 4 = 5 ✓/事後平均 = (1·20 + 4·25)/5 = 120/5 = 24 ✓
事前の主張(20)と実測(25)を、それぞれの精度で重みづけした内分点になっている。データの方が精度が高い(4 vs 1)ので、25 寄りに来る。

事後 N(24,5) ╱│╲ 事前 N(20,1) ╱ │ ╲ ╱‾‾‾╲ ╱ │ ╲ ╱ ╲ ────┴───┴───┴────────┴──── μ 20 24 25 事前 事後 データ
この計算の肝は「log を取ると掛け算が2次関数の足し算になる」こと。μ2 の係数を足したものが −τ′/2、平方完成の中心が事後平均。数値が変わっても手順はこれだけ。

パターン③ 正規 × ガンマ(精度が未知)

例題 3-3
x ∼ Gamma(a, b) のとき E[x] = a/b である。
データ x が平均 50・精度 τ の正規分布に従うと仮定し、τ の事前分布を Gamma(τ | 2, 2) とする。
D = {46, 53, 55} を観測した。(1) 事前分布の平均 (2) 事後分布 (3) 事後分布の平均 を求めよ。
解答

(1) E[τ] = 2/2 = 1(=分散1と見込んでいた)

(2) 平均既知・精度未知の正規尤度を τ について整理すると

p(D|τ) ∝ τn/2 exp{ −τ2 Σi(xi − 50)2 }

n = 3、Σ(xi−50)2 = (−4)2 + 32 + 52 = 16 + 9 + 25 = 50。よって

p(D|τ) ∝ τ3/2 exp(−25τ)

事前 Gamma(2,2) ∝ τ2−1e−2τ = τ1e−2τ を掛けて(指数を足すだけ

p(τ|D) ∝ τ3/2 + 1 exp{−(25 + 2)τ} = τ5/2e−27τ

Gamma(α′,β′) ∝ τα′−1eβτ と比較して

Gamma(τ | 7/2, 27)

公式で検算:Gamma(a+n/2, b+½Σ) = Gamma(2+1.5, 2+25) = Gamma(3.5, 27) ✓

(3) E[τ|D] = (7/2)/27 = 7/54 ≈ 0.130

精度が 1 → 0.13 に下がった=分散が大きい(≈7.7、標準偏差 ≈2.8)と学習した。実際データは 50 から ±4, +3, +5 ばらついているので妥当。

p(τ) │▲ 事後 Gamma(7/2,27) 平均0.13 ││╲ ││ ╲ ││ ╲ ╭──╮ 事前 Gamma(2,2) 平均1 ││ ╲__╭╯ ╰──╮ │└ ╰ ╰────── └┴──┴───┴──────────────── τ 0 0.13 1 4

データを得て不確かさが小さくなった=分布が尖ったのがポイント。

パターン④ ポアソン × ガンマ

例題 3-4
1日あたりの問い合わせ件数が Poisson(λ) に従うとする。λ の事前分布を Gamma(2, 0.1) とした。5日間で {8, 12, 10, 9, 11} を観測した。事後分布と事後平均を求めよ。
解答

ポアソン尤度は p(D|λ) ∝ λΣxie。Σxi = 50、n = 5。
事前 ∝ λ2−1e−0.1λ。掛けて

p(λ|D) ∝ λ50 + 1e−(5 + 0.1)λ  ⇒  Gamma(52, 5.1)
事後平均 = 525.110.2

データの平均は 50/5 = 10。事前が 2/0.1 = 20 を主張していたが、データ5日ぶんに押し切られてほぼ 10 に落ち着いた。

パターン⑤ カテゴリカル × ディリクレ

ベータ分布の K 次元版。Beta(α,β) は Dir(α1,α2) の2次元版と理解しておくと一発で書ける。

Dir(π | α) ∝ Πk πkαk−1  ⇒  事後 = Dir(αk + nk)
例題 3-5
3種類のカテゴリ {A, B, C} からなるデータを 20 件観測し、それぞれ 9, 6, 5 件だった。事前分布を Dir(1, 1, 1)(一様)としたときの事後分布と各カテゴリの事後平均を求めよ。
解答 事後 = Dir(1+9, 1+6, 1+5) = Dir(10, 7, 6)
事後平均 = αk / Σα = 10/23, 7/23, 6/23 ≈ 0.435, 0.304, 0.261。
単純な比率 9/20, 6/20, 5/20 = 0.45, 0.30, 0.25 より、事前の一様分布のぶんだけ均等側に少し寄る(=データが少ないカテゴリが極端な値にならない)。

4. 階層ベイズ

何が問題なのか

10 店舗それぞれで「来店客のうち何人が会員登録したか」を記録したとする。ここで取れる立場は2つある。

立場仮定問題点
完全プーリング全店舗で登録率は共通の m店舗ごとの個性を完全に無視する。データのばらつきがモデルより大きくなる
完全独立店舗ごとに mi をバラバラに推定来店客が数人しかいない店舗の推定が極端になる(2人中2人登録 → 100%)
階層ベイズ店舗ごとに mi を持つが、それらは共通の親分布から生まれる両者のいいとこ取り

モデルの形

xi ∼ Binomial(ni, mi) ,   mi ∼ Beta(α, β) ,   α, β ∼ 無情報事前分布
(α) (β) ← 超パラメータ(プレートの外=全グループ共通) ╲ ╱ ↓ ↓ ┌───────────────────┐ │ (m_i) │ ← グループごとのパラメータ │ ↓ │ │ [x_i] │ ← 観測データ(四角=観測済み) │ N = 10 │ └───────────────────┘ プレート(グループ数だけ繰り返し)

グラフィカルモデルを描くときのルール:丸=確率変数(未観測)/四角または塗りつぶし=観測データ/プレート(枠)=繰り返し。全グループ共通の超パラメータはプレートの外に置く。

部分収縮(partial pooling)— これが本質

データが少ないグループは全体の平均に強く引っ張られ、データが十分多いグループは自分の個性がそのまま残る。この調整が自動で行われる。
だから「2人中2人登録した店舗」が 100% と推定されることはなく、全体の傾向に寄せられる。逆にデータが豊富な店舗は、全体から外れていてもその個性が保たれる。

  • 情報の共有:グループ同士がデータを融通し合っている状態。単に変数を増やしているのではない。
  • 超パラメータの事前分布:さらに上の階層については知識がないことが多いので、無情報(幅の広い一様・正規)を置くのが一般的。データが十分あれば下層が上層を自律的に推定してくれる。
  • 限界:階層を3段4段と深くすると変数が「グループ数 × パラメータ数」で膨らみ、MCMC の計算コストが爆発して収束しなくなる。

データの分布とモデルの予測を重ねて見る

完全プーリングが妥当かどうかは、予測分布と実データのヒストグラムを重ね描きすれば見える。

度数 4│ ▓ ▓ ▓ = モデルの予測(二項分布) 3│ ▓ ▓ █ = 実データ 2│ █ █ ▓█ ▓█ █ █ 1│█ █ █ ▓█ ▓█ █ █ █ 0└─┴─┴─┴──┴──┴─┴─┴─── 0 1 2 3 4 5

実データの方が両端(0 や最大値)に厚い=ばらつきが二項分布より大きいなら、「グループごとに確率が違うのでは」という階層モデルの動機になる。この「過分散」の見つけ方は実務でも使う。

5. 混合正規分布・潜在変数・EM法

混合正規分布(GMM)

p(x) = Σk=1K wk 𝒩(x | μk, σk) ,   Σwk = 1
  • 使いどころ:データに山が複数ある場合。例えばWebサイトの滞在時間は「ライトユーザー」と「ヘビーユーザー」で2つの山になる。単一の正規分布で当てると平均が谷間に来て、どちらも説明できない。
  • 潜在変数 z:各データがどの成分から生成されたかを表すラベル。観測できないので推定する。クラスタ番号だと解釈してよい。
    z ∼ Categorical(w) ,   x | z=k ∼ 𝒩(μk, σk)
  • 混合重み wk:各成分の割合。事前分布にディリクレを置く(パターン⑤とつながる)。

EM アルゴリズム

E ステップ(期待値):パラメータを固定して、各データ i が成分 k に属する確率(負担率 γik)を計算する。

γik = wk 𝒩(xi|μk, σk)Σj wj 𝒩(xi|μj, σj)

M ステップ(最大化)γ を重みにして、重み付き平均・重み付き分散でパラメータを更新する。

nk = Σiγikwk = nk/Nμk = Σiγikxinkσk2 = Σiγik(xiμk)2nk

収束するまで交互に繰り返す。対数尤度は毎回必ず増加する(単調増加)

NumPy で書くとこれだけ:

prob   = w * norm(center, sigma).pdf(data[:, None])   # 重み × 尤度
z      = prob / prob.sum(axis=1, keepdims=True)      # E step:負担率
n      = z.sum(axis=0)                                # 各成分の実効データ数
w      = n / data.size                                # M step:混合比
center = (z * data[:, None]).sum(axis=0) / n          # M step:重み付き平均
sigma  = np.sqrt((z * (data[:, None] - center)**2).sum(axis=0) / n)

EM法の弱点:初期値依存性

対数尤度は単調増加するが、たどり着くのは局所最適解。初期値によって違う答えに収束する。対策は ① K-means の結果で初期化する ② 複数の初期値で走らせて尤度が最大のものを採用する。

クラスタ数 K の決め方

  • WAIC / BIC / 交差検証で比較する(→ 第10章)
  • 多すぎる:過学習。1つの山を無理に2つに割り、意味のないクラスタができる。計算も重くなる
  • 少なすぎる:複数の山を1つで表そうとして平均が谷間に来る(表現力不足)
  • そもそも各クラスタが本当に正規分布かは別問題。裾が重いなら t 分布混合などを検討する
EM 法MCMC(ギブスサンプリング)
得られるものパラメータの1点(点推定)パラメータの事後分布そのもの
速度速い遅い
局所解陥りやすい(初期値依存)乱数で探索するので陥りにくい
不確実性わからない信用区間として出せる
使い分けリアルタイム性が要る/データが大量不確実性の評価が要る/意思決定に使う

6. MCMC

何のためにやるのか

共役でない分布では、事後分布の正規化定数 p(D) = ∫p(D|θ)p(θ)dθ が手計算できない。
しかし MCMC は「比」しか使わないので、正規化されていない f(θ) = p(D|θ)p(θ) だけ分かっていればサンプリングできる。

p(q*)p(qj) = f(q*)f(qj)   ← 正規化定数が分母分子で消える

メトロポリス・ヘイスティングス法

  1. 初期値 q0 を適当に決める
  2. 次の候補:前の qj の近くの点を選ぶ  q* = qj + δδ は提案分布から)
  3. 比を計算η = f(q*) / f(qj)
  4. 採用判定r ∼ Uniform(0, 1) を引き、η ≥ 1 なら無条件採用。η < 1 なら確率 η で採用
  5. 採用なら qj+1 = q*、不採用なら候補を選び直す
  • なぜ確率の低い候補も受け入れるのか:常に良い方だけに動くと山を登り切って局所解から出られない。確率的に悪い方にも動くから、分布全体の形をサンプルできる。
  • バーンイン:最初のサンプルは初期値の影響が残っているので捨てる。
  • 提案分布の幅:狭すぎると動かない(サンプル同士の相関が高く非効率)、広すぎると全部却下される。採択率2〜4割が目安。

ギブスサンプリング

多変数のとき、1つの変数だけを、他を固定した条件付き分布から引くのを順番に繰り返す。条件付き分布が共役で簡単に書ける場合(混合正規分布など)に強い。採択・却下の判定がなく必ず受け入れる。

収束の確認

指標見方
trace plot複数チェーンが同じ帯域で毛虫状に混ざっていれば OK。トレンドが残っていたら未収束
(R-hat)複数チェーンが同じ分布に収束しているかを分散の比で見る。1.0 に近ければ OK(1.01 未満が目安)
ESS(有効サンプルサイズ)自己相関を除いた実質的なサンプル数
MCSEモンテカルロ標準誤差。シミュレーション回数が足りているかの指標
divergences事後分布に急な谷があってサンプラーが足を取られた状態。再パラメータ化・target_accept を上げる・事前分布を見直す

7. ロジスティック回帰・項目反応理論(IRT)

ロジスティック関数

σ(z) = 11 + ez
  • どんな実数 z ∈ (−∞, ∞) を入れても出力が (0, 1) に収まるので、そのまま確率として解釈できる。両端で飽和するのでS字型になる。
  • ロジスティック回帰p(y=1|x) = σ(w·x + b)、y ∼ Bernoulli(p)
  • 線形回帰との違い:線形回帰は出力が実数全体で誤差が正規分布。ロジスティック回帰は出力が 0/1(ベルヌーイ)で、線形な部分は対数オッズ(logit)の側にある。
  • ベイズにすると何が嬉しいか:係数が分布で出るので「この変数の効きが 0 をまたぐか」を信用区間で判断できる。予測確率にも不確実性がつく。

項目反応理論(IRT)— 2PL モデル

「誰が・どの問題に・正解したか」の 0/1 表だけから、回答者の能力問題の性質を同時に推定する。

logit pij = ηj ( αiβj ) ,   xij ∼ Bernoulli(σ(logit pij))
記号意味事前分布と注意
αi回答者 i能力𝒩(0, 1)。これは尺度の「定義」なので変えない(平均0・SD1と決めることで能力の物差しを固定している)
βj問題 j難易度𝒩(0, σβ)。α = β のとき正答確率がちょうど 50%
ηj問題 j識別力HalfNormal(ση) = 必ず正。能力差をどれだけ鋭く判別できるか(S字の傾き)

ここが面白いところ

  • 素点ではなく α を使う理由:同じ素点でも「難しい問題を当てた人」と「易しい問題ばかり当てた人」では能力が違う。IRT は問題の難易度 β と識別力 η を同時に推定して補正する。だから同じ得点でも推定される能力値が異なる
  • η が負になったら:能力が高い人ほど間違える異常な項目。設問ミスや選択肢の不備を疑う。だからモデル上は正に制約する。
  • 3PL モデル(当て推量パラメータを追加):現実的だがパラメータが増えて推定が不安定になり、大量のデータが必要。
  • 応用:アダプティブテスト(推定した能力値に応じて次の出題を変える)、資格試験の回次間の難易度調整。

8. 重回帰・多重共線性・変数選択

変数を増やすと何が起きるか

  • 訓練データへの当てはまり(R2)は必ず良くなる。だが未知データへの予測は悪化する = 過学習
  • だから「R2 が高いモデル」を選んではいけない。自由度修正済み R2、AIC/BIC、WAIC/LOO で比較する。

多重共線性

説明変数どうしが強く相関していると、どちらが効いているのか分離できず、係数の推定が不安定になり、符号が反転することさえある

典型例x1x2 に正の相関があり、x2y に負の影響を持つとする。x1 単独で回帰すると、x1 が大きいとき x2 も大きくなって y を押し下げるため、x1 の係数が本来より小さく見える。両方入れると x1 の真の効果が出てくる。
→ 「単回帰と重回帰で係数が大きく変わったら、変数間の相関を疑う」

変数選択の基準

  • 予測性能:WAIC / LOO / 交差検証
  • 解釈しやすさ:意思決定に使うなら、少数の変数で説明できる方が価値が高い
  • 実務上の入手可能性:測るのにコストがかかる変数は落とす
モデル比較の表で「全変数モデルが1位」と出ても、順位だけを見ない。差が標準誤差の範囲に収まっているなら「差はない」と判断し、その場合はシンプルな方を選ぶ(オッカムの剃刀)。

その他の実務論点

  • 欠損値:削除するとサンプルが減りバイアスが入る。平均・中央値補完は分散を過小評価する。ベイズなら欠損自体を確率変数として推定できる。
  • 標準化:係数のスケールを揃えて比較可能にする。パラメータの尺度が揃うので MCMC の収束も良くなる。
  • 係数が「分布」で出る利点:信用区間が 0 をまたぐかどうかで、p 値なしに効果の有無を判断できる。
  • データが少ないとき:弱情報事前分布を入れる。スパースモデリング(ラプラス事前や horseshoe 事前)で不要な係数を 0 に寄せる。

9. 変化点検出・ガウス過程・ベイズ最適化

変化点検出モデル

状況:1日ごとの件数データがあり、後半の方が増えている気がする。本当に増えているのか?

仮説:ある日 t の件数 xt は平均 μt のポアソン分布に従い、ある日 d を中心に μA から μB へ変化する。

μt = μA + (μBμA) · σ( a(td) )
  • d = 変化点、a = 変化の急激さ(a が大きいほど階段状、小さいほどじわじわ)
  • シグモイドを使うと「突然の変化」も「じわじわの変化」も同じ式で表せる。単純な階段関数(where による分岐)は急変専用。
  • 変化点の数(0個/1個/2個…)を変えたモデルを作り、WAIC で比較するのが定石
  • 変化点が複数あるときは順序制約(ordered transform)を入れる。入れないと d1d2 が入れ替わって収束しない(ラベルスイッチング)

ポアソン分布を使う理由:回数データ(非負整数)だから。ただし平均=分散という強い仮定があるので、ばらつきが大きい(過分散)なら負の二項分布などに拡張する。

ガウス過程(ガウシアンプロセス)

  • 考え方:パラメータではなく関数そのものに事前分布を置く。「どんな形かは決めないが、滑らかであってほしい」という仮定だけを与える。
  • カーネル関数 k(x, x′) が「入力が近ければ出力も近い」という仮定を数式にしたもの。カーネルの選択=モデルの仮定の選択
    • RBF(ガウシアン):非常に滑らか
    • Matérn:ギザギザを許容(現実のデータ向き)
    • 周期カーネル:季節変動など繰り返しがある場合
  • 出力が「帯」になる:予測が平均 ± 不確実性で出る。データが密な領域では帯が細く、データがない領域では帯が広がる。この「わからなさが見える」ことが最大の利点。単なる閾値判定と違い、変化が有意かどうかを確率で言える。
  • 弱点:計算量が O(n3)。大規模データは誘導点法などで近似する。

ベイズ最適化

ガウス過程の予測(平均+不確実性)を使って「次にどこを試すか」を決める。
「今わかっている期待値が高い点(活用)」と「まだ分かっていない不確実な点(探索)」のバランスを取る。

同じ発想がバンディット問題にもある。UCB(信頼区間の上限)は、推定した期待値に「不確実性の大きさ」を上乗せした値で候補を比べる。試行回数が少ない選択肢ほど上乗せ分が大きくなるので、初期段階では自動的に探索が優先される。トンプソンサンプリングは事後分布から値をサンプルし、それが最大の選択肢を選ぶ。分布そのものを使うぶん、不確実性が自然に反映される。
環境が途中で変わる場合は、古いデータの重みを下げる割引率スライディングウィンドウ(直近のデータのみ使う)を導入する。

10. モデル比較・WAIC

WAIC の定義

前提:モデル p(xi|θ)、事前分布 p(θ)、データ D = {x1,…,xn}。
MCMC で事後分布からサンプル Q = {q1,…,qm} を得る。

データごとの一般化対数尤度(サンプルで近似):

Ei = ∫ p(θ|D) log p(xi|θ) dθ1m Σj=1m log p(xi|qj)

当てはまりの良さ(大きいほど良い):

L = 1n Σi=1n Ei

推定のばらつき(小さいほど良い):

V = 1n Σi 1m Σj [ log p(xi|qj) − Ei ]2
WAIC = −( LV )   ← 小さいほど良い

意味:尤度 L が大きく、パラメータによるばらつき V が小さいほど良いモデルV が「実質的なパラメータ数(複雑さのペナルティ)」として働き、全体が汎化損失(テストデータに対する損失)の近似になっている。

WAIC の凄さは、真の分布が分からなくても、手元の事後分布のサンプルだけから「未知データへの予測の良さ」を導き出せるところ。

他の指標との比較

指標特徴使いどころ
WAIC事後分布のサンプルから汎化損失を数学的に導出。ただしサンプルが独立に生成されている等の仮定に依存ベイズ・階層モデルの標準
LOO-CV実際に1個抜いて評価する力技。モデルの前提が多少崩れても頑健データが少ない/WAICの仮定が怪しいとき(PSIS-LOOで近似)
k分割CVLOOCV は計算コストが高いので、実務では5分割・10分割データが大量にあるとき
AIC / BIC最尤推定ベース。パラメータ数を直接数える階層モデルでは「実質的なパラメータ数」が数えられないので不向き
周辺尤度/ベイズファクターモデル自体の確率を比較事前分布に敏感なので注意

過学習の罠

グラフの見た目が「綺麗にデータを通っている」としても、それは過学習しているだけで、WAIC は「汎化性能は最悪だ」と警告してくることがある。さらに「事後分布が狭い=推定値に自信満々」であっても、そもそも仮定したモデルの形自体が現実と違えば意味がない。見た目の当てはまり ≠ 汎化性能

11. チートシート

分布の要約

分布平均最頻値(モード)分散
Beta(α, β)αα+βα−1α+β−2α,β > 1)αβ(α+β)2(α+β+1)
Gamma(α, β)αβα−1βα ≥ 1)αβ2
Dirichlet(α)αkΣααk−1ΣαK
Binomial(n, q)nq⌊(n+1)q⌋ 付近nq(1−q)
𝒩(μ, ττ=精度μμ1 / τ
Poisson(λ)λλλ(=平均)

この分野の一行まとめ

ベイズ推定は「持っている分布を、データの方へ少しずつ動かす」作業の繰り返し

式が複雑に見えても、実際にやっているのは分布のパラメータ(平均・精度・カウント)を更新することだけ。どれだけ動くかは、事前とデータそれぞれの「自信の強さ」の比で決まる。データが増えるほど事前の影響は薄れていく。

12. 演習問題

自分で作った確認用。手を動かして解いてから答えを見る。

問1 — 二項 × ベータ
当たり確率 m が分からないくじを 5 回引いたところ、2 回当たった。事前分布を一様分布としたときの事後分布・平均・最頻値を求めよ。
解答 一様分布 = Beta(1,1)。事後 = Beta(1+2, 1+3) = Beta(3, 4)
平均 = 3/7 ≈ 0.429、最頻値 = 2/5 = 0.4(=観測比率 2/5 と一致。一様事前のときは最頻値=最尤推定値になる)。
問2 — 順序指定の尤度
当たり確率 m のくじを 5 回引いて、2 回目と 5 回目だけ当たった。このデータに対する尤度を m の式で書け。また「5 回引いて 2 回当たった」場合の尤度と比べて何が違うか述べよ。
解答 外れ・当たり・外れ・外れ・当たり の順と指定されているので組み合わせは1通り。
p(D|m) = m2(1−m)3二項係数は付かない)。
「5 回引いて 2 回当たった」なら順序を問わないので組み合わせが 5C2 = 10 通りあり、5C2 m2(1−m)3 となる。
事後分布を求めるだけなら定数倍は ∝ に吸収されるので結果は同じ。ただし「尤度を書け」と問われたときは区別する。
問3 — 正規 × 正規
p(x|μ) = 𝒩(x|μ, 2)、事前 p(μ) = 𝒩(μ|0, 1)。x = 6 を観測したときの事後分布を求めよ。
解答 事後精度 = 1 + 2 = 3、事後平均 = (1·0 + 2·6)/3 = 4。𝒩(μ | 4, 3)
検算:log事前 = −0.5μ²、log尤度 = −(2/2)(6−μ)² = −μ²+12μ+C。和 = −1.5μ²+12μ = −1.5(μ−4)²+C
問4 — 正規 × ガンマ
p(x|τ) = 𝒩(x|20, τ)、事前 p(τ) = Gamma(τ | 1, 1)。D = {16, 24} を観測した。事前の平均・事後分布・事後の平均を求めよ。
解答 事前平均 = 1/1 = 1
Σ(xi−20)² = (−4)² + 4² = 32、n = 2。
尤度 ∝ τ1e−16τ、事前 ∝ τ0eτ。掛けて τ1e−17τ
事後 = Gamma(1 + 1,  1 + 16) = Gamma(2, 17)
事後平均 = 2/17 ≈ 0.118(精度が下がった=ばらつきが大きいと学習した。分散 ≈ 8.5、標準偏差 ≈ 2.9 で、データが 20 から ±4 ずれていることと整合する)。
問5 — ポアソン × ガンマ
Poisson(λ) に従うデータを 4 日観測して {3, 5, 4, 4} だった。事前を Gamma(1, 1) としたときの事後分布と事後平均を求めよ。
解答 Σxi = 16、n = 4。事後 = Gamma(1+16, 1+4) = Gamma(17, 5)。事後平均 = 17/5 = 3.4
データの平均は 4。事前 Gamma(1,1)(平均1)に少し引っ張られて 3.4 になっている。
問6 — ディリクレ
4 種類のカテゴリを 30 件観測し、(12, 8, 6, 4) 件だった。事前を Dir(1,1,1,1) としたときの事後分布と第1カテゴリの事後平均を求めよ。
解答 事後 = Dir(13, 9, 7, 5)。Σα = 34。第1カテゴリの事後平均 = 13/34 ≈ 0.382(単純比率 12/30 = 0.4 よりわずかに均等寄り)。
問7 — EM法の1ステップ
2成分の混合正規分布で、現在のパラメータが w = (0.5, 0.5)、μ = (0, 4)、σ = (1, 1) である。データ x = 1 に対する E ステップの負担率 γ1, γ2 を求めよ。
解答
γ1 = 0.5·𝒩(1|0,1)0.5·𝒩(1|0,1) + 0.5·𝒩(1|4,1)
𝒩(1|0,1) ∝ e−1/2 ≈ 0.607、𝒩(1|4,1) ∝ e−9/2 ≈ 0.011。
γ1 ≈ 0.607/(0.607+0.011) ≈ 0.982γ20.018成分1に強く属する
M ステップではこの γ を重みにして μ, σ, w を更新する。
問8 — MH法の採択判定
現在の点で f(qj) = 0.4、候補で f(q*) = 0.3 である。
(1) 比 η を求めよ。 (2) 一様乱数 r = 0.6 のとき採用されるか。 (3) 正規化定数を計算しなくてよい理由を述べよ。
解答 (1) η = 0.3/0.4 = 0.75
(2) η < 1 なので確率 0.75 で採用。r = 0.6 < 0.75 なので採用
(3) 判定に使うのは p(q*)/p(qj) というだけで、両方に同じ正規化定数が掛かっているため分母分子で打ち消し合う。だから f(θ) = p(D|θ)p(θ) が分かっていれば十分。
問9 — IRT
2PL モデル logit pij = ηj(αiβj) について、
(1) αi = βj のとき正答確率はいくらか。
(2) ηj = 2, αi = 1.0, βj = 0.5 のときの正答確率を求めよ。
(3) 同じ素点の2人でも推定される能力 α が異なることがある。その理由を述べよ。
解答 (1) logit = 0 なので σ(0) = 0.5。つまり β は「正答率が50%になる能力値」=難易度の定義そのもの。
(2) logit = 2(1.0 − 0.5) = 1.0、p = 1/(1+e−1) ≈ 0.731
(3) IRT はどの問題に正解したかを見ている。難易度 β の高い問題を当てた人は同じ素点でも能力 α が高く推定される。識別力 η が高い問題での正誤ほど推定に強く効く。
問10 — WAIC
WAIC の定義式を示し、LV がそれぞれ何を表しているか、WAIC が小さいほど良いとされる理由を説明せよ。
解答 WAIC = −(LV)。L は事後分布のサンプルで平均した対数尤度=データへの当てはまりの良さV は対数尤度の分散=パラメータの違いによる予測のばらつき(=モデルの実質的な複雑さ)
当てはまりが良く(L 大)、かつばらつきが小さい(V 小)ほど −(LV) は小さくなる。これは汎化損失(未知データに対する損失)の近似になっているため、小さいほど予測性能が良いモデルと判断できる。V が過学習へのペナルティとして働く。

13. つまずきどころ

  • τ は精度で、分散ではない(分散 = 1/τ)。問題文の定義を最初に確認する
  • 順序が指定された尤度に二項係数を付けない
  • ベイズの定理の証明では「分母は θ に依存しない定数だから」を必ず書く。これがないと ∝ の理由を説明したことにならない
  • Beta の最頻値は (α−1)/(α+β−2)、平均は α/(α+β)。混同しやすい
  • Gamma の平均は α/β、最頻値は (α−1)/β
  • グラフを描くときは軸のラベル・中心の値・事前より尖ったことの3点を入れる
  • グラフィカルモデルは超パラメータをプレートの外に、観測変数は四角
  • 正規分布の計算はまず log を取る。掛け算のまま処理しようとしない
  • モデル比較は順位だけを見ない。差が誤差範囲ならシンプルな方
  • 「見た目の当てはまりが良い」は過学習のサインかもしれない