DOCUMENTATION

Auto-Tuner解剖 ⑥:MCMC — 不確実性まで知るエンジン

Grid Searchが「最善の1点」を見つけるのに対し、MCMCは「あり得るすべての点の分布」を推定する。Emcee Ensemble MCMCを用いた事後分布推定、収束診断、HDI解釈を解剖。

前編:⑤ 統計的検証解剖ではAUC、K-fold CV、Prior推奨を解説しました。本編ではAuto-Tunerの最も高度なツール——MCMC事後分布推定を解剖します。



1. Grid Searchが残した隙間

Grid Searchは点推定を提供します。しかし:

  • 4.2でも4.7とほぼ同じ結果かもしれない
  • 4.7が最善だとして、どの程度確信できるか?
  • ImpactとDampeningを同時に変えたときの相互作用は?

MCMCはピン1本ではなく確率の等高線図全体を描画します。



2. Emcee — 32人の探検隊

EXAWinはEmcee(Affine-Invariant Ensemble Sampler)を使用。通常のMCMCが1人の探検家を送るのに対し、Emceeは32人のウォーカーを同時に派遣し、互いの位置を参照(「ストレッチムーブ」)します。

主な利点:

  1. 勾配不要 — 尤度関数の値のみ必要
  2. アフィン不変 — スケールの違い(Impact 5.0 vs dampening 0.25)に自動対応
  3. 並列探索 — 局所最適に陥りにくい

確率モデル

# Impact — 常に正
impact_gc     ~ LogNormal(log(5.0), 0.5)
# Dampening — 0~1範囲
dampening     ~ Beta(5, 15)    # 平均 ≈ 0.25
# Silence — 0~1範囲
silence_ratio ~ Beta(3, 7)     # 平均 ≈ 0.30

尤度関数

各プロジェクトでRubyのsimulate_projectと同一のロジックをPythonで実行。Bernoulli尤度:

P(outcomeθ)=pwiny(1pwin)1yP(\text{outcome} \mid \theta) = p_{\text{win}}^{y} \cdot (1 - p_{\text{win}})^{1-y}

3. 実行アーキテクチャ

BayesianAutoTuner.full_report
MCMCService.run(company, tuner_data)
JSONシリアライズ
    → python3 lib/mcmc/mcmc_runner.py input.json output.json
     (subprocess, 最大300秒タイムアウト)
    → 結果JSON解析 → レポートにマージ

subprocessによるプロセス分離:メモリ安全、マルチテナント安全、障害分離。MCMC失敗時もGrid Search結果は正常に返却。



4. 結果の読み方

HDI(最高密度区間)

95% HDI =「パラメータがこの範囲内にある確率が95%」

Game Changer: HDI [3.5, 6.2]
→ 現在値5.0は範囲内 → 変更不要

Game Changer: HDI [2.0, 3.5]
→ 現在値5.0HDI外 → 過大評価の可能性 → 3.0前後に調整推奨

R̂(R-hat)— 収束の証明

解釈
< 1.01完璧な収束 ✅
1.01~1.05収束OK
1.05~1.10要注意 ⚠️
> 1.10非収束 🚨


5. Grid Search × MCMC クロスリファレンス

一致する場合 → 高い確信で推奨:

Grid Search: 4.7    MCMC HDI: [3.8, 5.9], 平均 4.8 → 強い証拠

食い違う場合 → MCMCのより広い探索を優先:

Grid Search: 2.0    MCMC HDI: [3.5, 6.0], 平均 4.7Gridが局所的に嵌まった可能性


シリーズ全目次:
  1. エンジン概要と設計思想
  2. Signal Lift解剖
  3. Grid Searchエンジン解剖
  4. Threshold · k解剖
  5. 統計的検証解剖
  6. MCMC事後分布解剖 [現在]

参考文献

  1. Foreman-Mackey, D. et al. (2013). "emcee: The MCMC Hammer." PASP, 125(925), 306-312.
  2. Goodman, J. & Weare, J. (2010). "Ensemble samplers with affine invariance." CAMCS, 5(1), 65-80.
  3. Gelman, A. & Rubin, D.B. (1992). "Inference from Iterative Simulation Using Multiple Sequences." Statistical Science, 7(4), 457-472.