Mímisbrunnr知恵の泉

← ベイズ統計 一覧

🎓 レベル:標準 | 重要度:A(必須)

📎 前提:ベイズ更新と逐次推論 | 数理:ベイズ推定・MAP推定(統計)・正則化の理論(機械学習)

要点(BLUF)

1. 点推定 = 期待損失の最小化

真値 θ\theta を推定値 θ^\hat\theta で代用したときの「まずさ」を損失 L(θ,θ^)L(\theta,\hat\theta) で測ります。θ\theta は事後分布に従う確率変数なので、事後で平均した期待損失を最小化する θ^\hat\theta がベイズ推定量です。

θ^  =  argminθ^  E[L(θ,θ^)D]\hat\theta \;=\; \arg\min_{\hat\theta}\; \mathbb{E}\big[L(\theta,\hat\theta)\mid D\big]

ここで損失関数を3通り入れると、それぞれ有名な要約統計量が出てきます。

2. 損失関数ごとの最適点

二乗損失 L=(θθ^)2L=(\theta-\hat\theta)^2 → 事後平均。期待損失を θ^\hat\theta で微分して0と置くと、

ddθ^E[(θθ^)2D]=2E[θθ^D]=0    θ^=E[θD]\frac{d}{d\hat\theta}\,\mathbb{E}[(\theta-\hat\theta)^2\mid D] = -2\,\mathbb{E}[\theta-\hat\theta\mid D] = 0 \;\Longrightarrow\; \hat\theta = \mathbb{E}[\theta\mid D]

絶対損失 L=θθ^L=\lvert\theta-\hat\theta\rvert → 事後中央値。期待絶対偏差を最小にするのは中央値、という統計の標準結果がそのまま効きます。

0-1損失(外したら一律ペナルティ)→ MAP(事後最頻値)。連続では「θ^\hat\theta の近傍に確率が最も集まる点」、すなわち事後密度を最大化する点になります。

graph TD
  POST["事後分布 P(θ|D)"] --> L1["二乗損失"]
  POST --> L2["絶対損失"]
  POST --> L3["0-1損失"]
  L1 --> M1["事後平均"]
  L2 --> M2["事後中央値"]
  L3 --> M3["MAP(最頻値)"]

3. コードで3つのずれを見る

非対称な事後 Beta(2,6)\mathrm{Beta}(2,6)(左に偏る)で、3つの点推定を計算して重ねます。

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import japanize_matplotlib  # 日本語ラベル用

# 非対称な事後分布の例:Beta(2, 6)(左に偏る)
post = stats.beta(2, 6)
theta = np.linspace(0, 1, 500)
pdf = post.pdf(theta)

mean = post.mean()              # 二乗損失で最適
median = post.median()          # 絶対損失で最適
mode = theta[np.argmax(pdf)]    # 0-1損失で最適(MAP)

print(f"事後平均  (二乗損失) = {mean:.3f}")
print(f"事後中央値(絶対損失) = {median:.3f}")
print(f"MAP/最頻値(0-1損失)  = {mode:.3f}")

plt.figure(figsize=(7, 4))
plt.plot(theta, pdf, lw=2, label="事後 Beta(2,6)")
plt.axvline(mean,   color="C1", ls="--", label=f"平均 {mean:.2f}")
plt.axvline(median, color="C2", ls="-.", label=f"中央値 {median:.2f}")
plt.axvline(mode,   color="C3", ls=":",  label=f"MAP {mode:.2f}")
plt.xlabel("θ"); plt.ylabel("事後密度")
plt.title("損失関数ごとに最適な点推定が違う(非対称な事後)")
plt.legend(); plt.tight_layout(); plt.show()

出力:

事後平均  (二乗損失) = 0.250
事後中央値(絶対損失) = 0.228
MAP/最頻値(0-1損失)  = 0.166

出力の意味:非対称な事後では、平均(0.250)>中央値(0.228)>MAP(0.166)と3つがはっきりずれます。平均は裾の重い側(右)に引っ張られ、MAP は密度のピーク(左)に来ます。MAP の 0.166 は解析値 a1a+b2=160.167\frac{a-1}{a+b-2}=\frac{1}{6}\approx0.167 と一致します(グリッド解像度の差だけ)。もし事後が対称なら3つは重なり、どの損失でも同じ答えになります。

4. MAP は最尤・正則化と地続き

MAP は事後密度の最大化、すなわち「尤度 × 事前」の最大化です。

θ^MAP=argmaxθ  [logP(Dθ)+logP(θ)]\hat\theta_{\text{MAP}} = \arg\max_\theta\; \big[\log P(D\mid\theta) + \log P(\theta)\big]

⚠️ よくある誤解

関連ノート