🎓 レベル:発展 | 重要度:B(標準)
要点(BLUF)
- 情報量規準は、モデルを予測性能で比較する道具。当てはまり(対数予測密度)から**複雑さ(有効パラメータ数)**を引いて罰し、過剰適合を抑えます。
- WAIC 。事後サンプルの点ごと対数尤度から計算し、事後全体を使う完全ベイズ的な規準。小さいほど良い。
- DIC は点推定 ベースの古い規準。WAIC が推奨されます。実装で WAIC が真の次数で最小になり、過小適合・過剰適合の両方を罰することを確かめます。
1. なぜ情報量規準か
事後予測チェック(事後予測チェック)は1つのモデルの欠陥を探す診断でした。複数モデルを比較したいときは、「新しいデータをどれだけうまく予測できるか(予測性能)」で測ります。手元のデータへの当てはまりを上げるだけなら複雑なモデルが勝ちますが、それは過剰適合。情報量規準は当てはまりから複雑さを差し引いて、予測の良さを近似します。
2. WAIC の定義
WAIC は2つの量から成ります。
対数点ごと予測密度(lppd)——各データ点を事後予測でどれだけうまく当てるか(大きいほど当てはまり良い):
有効パラメータ数 ——点ごと対数尤度の事後分散の和(複雑なモデルほど大きい=罰):
これらから 。第1項が当てはまり、第2項が複雑さの罰。小さいほど予測が良い。事後サンプルさえあれば(MCMC でも VI でも)計算でき、点推定でなく事後全体を使うのが AIC や DIC との違いです。
3. コード:多項式回帰で WAIC が次数を選ぶ
2次関数 + 雑音のデータに、次数の違う多項式回帰(ベイズ線形回帰、ベイズ線形回帰)を当て、WAIC を比べます。
import numpy as np
rng = np.random.default_rng(0)
n = 25; sigma = 0.5
x = np.sort(rng.uniform(-1, 1, n))
y = 1.0 + 0.5*x - 1.5*x**2 + rng.normal(0, sigma, n) # 真は2次
def waic(degree, alpha=0.05, S=4000, seed=1):
rng = np.random.default_rng(seed)
Phi = np.vander(x, degree+1, increasing=True) # [1, x, x², …]
beta = 1/sigma**2
S_N = np.linalg.inv(alpha*np.eye(degree+1) + beta*Phi.T@Phi)
m_N = beta*S_N@Phi.T@y
W = rng.multivariate_normal(m_N, S_N, S) # 事後から重みをサンプル
mu = W @ Phi.T # (S, n) 予測平均
ll = -0.5*np.log(2*np.pi*sigma**2) - 0.5*(y[None,:]-mu)**2/sigma**2 # 点ごと対数尤度
lppd = np.sum(np.log(np.mean(np.exp(ll), axis=0))) # 当てはまり
p_waic = np.sum(np.var(ll, axis=0, ddof=1)) # 複雑さの罰
return -2*(lppd - p_waic), p_waic
print(f"{'次数':<6}{'WAIC':>10}{'p_waic':>10}")
for d in [1, 2, 4, 8, 12]:
w, pw = waic(d)
print(f"{d:<6}{w:>10.2f}{pw:>10.2f}")
出力:
次数 WAIC p_waic
1 40.33 1.93
2 27.66 1.36
4 30.25 2.22
8 31.80 2.82
12 32.85 3.16
出力の意味:WAIC は真の次数 で最小()。次数 は当てはまり不足(過小適合、WAIC と大きい)、次数 は当てはまりは上がっても (複雑さ)が増えて罰され、WAIC が逆に上昇します。 が次数とともに と増える——「有効パラメータ数」が複雑さを定量化し、過剰適合に税を課しているのが見えます。当てはまりと複雑さの綱引きで、ちょうど良い複雑さが選ばれます。
4. DIC との違い、WAIC の利点
**DIC(逸脱度情報量規準)**は WAIC の前身で、点推定 (事後平均)での逸脱度を使います。
DIC は事後平均という1点に頼るため、事後が多峰・非対称だと不安定です。WAIC は事後全体(点ごとの予測分布)を使うので、より完全にベイズ的で、漸近的に交差検証(交差検証とLOO)と一致します。実務ではWAIC や LOO が推奨され、DIC は歴史的位置づけです。
| DIC | WAIC | |
|---|---|---|
| 当てはまりの評価 | 点推定 | 事後予測(点ごと) |
| 完全ベイズ性 | 弱い(1点依存) | 強い(事後全体) |
| 多峰・非対称 | 不安定 | 頑健 |
| LOO との一致 | しない | 漸近一致 |
⚠️ よくある誤解
- 「WAIC は周辺尤度(エビデンス)と同じ」ではない:WAIC は予測性能の規準。周辺尤度 (ベイズファクターとモデル平均化)は事前の重みを含む別物で、ベイズファクターに使います。
- 「WAIC 最小なら確実に最良」ではない:WAIC には標準誤差があり、差が SE 以内なら優劣は付きません(§3 の次数 2 と 4 の差は小さい——本来は SE を併記)。
- 「 = パラメータの個数」ではない:事後の不確実性を反映した有効パラメータ数。正則化が効くと実パラメータ数より小さくなります。
- 「当てはまりが良い=予測が良い」ではない:手元データへの当てはまりは複雑なモデルほど上がる。複雑さの罰を引いた WAIC で見ます。
関連ノート
- 事後予測チェック
- 交差検証とLOO(次のトピック・WAIC と漸近一致する LOO-CV)
- ベイズ線形回帰(WAIC を計算した回帰モデル)
- 点推定と損失関数(予測と損失の考え方)
- 第8章 モデル評価と選択 目次
- ベイズ統計テキスト 全体目次