Auto-Tuner解剖 ①: エンジン概要と設計哲学
EXAWin Auto-Tunerの全体構造を解剖する。6つの学習対象、5段階のデータ成熟度、そして「合わせるのではなく、正確にする」という設計原則を詳細に解説する。
このドキュメントシリーズは、EXAWinのAuto-Tunerエンジンの内部を解剖する。コード一行一行の意味、選択した統計手法の理由、そして各パラメータがなぜその範囲にあるべきかを、講義のように紐解いていく。
このシリーズを最後まで読めば、あなたはAuto-Tunerのすべての推奨値が「なぜその値なのか」を説明できるようになる。
1. Auto-Tunerとは何か
1.1 一行での定義
Auto-Tuner = 過去のプロジェクト(Won/Lost)の結果に基づき、ベイジアンエンジンのパラメータを「正確にする」システム
ここで核心となるのは「正確に」である。P(Win)を単に上げるのではなく、WonになったディールのP(Win)は高く、LostになったディールのP(Win)は低く — つまり現実と一致させる方向にパラメータを調整する。
1.2 自動車の比喩
エンジン(ベイジアンの計算式)自体は変更されない。Auto-Tunerが行うのは燃料の配合比を調整することである:
| エンジン部品 | 自動車の比喩 | EXAWin の対応 |
|---|---|---|
| 点火閾値 | 点火時期(イグニッションタイミング) | T — ステージの閾値 |
| 燃料噴射量 | インジェクター開弁時間 | Impact — シグナルの重み |
| 加速レスポンス | スロットル感度 | k — 傾き (Velocity) |
| 排気処理 | 触媒コンバーター効率 | Dampening — 重複シグナルの減衰 |
| 燃料漏れペナルティ | 燃料漏れ警告 | Silence Penalty — 活動空白のペナルティ |
1.3 設計の5原則
① 合わせるのではなく、正確にすること
② インピーダンスの二重構造を保存すること
③ 推奨値+判断根拠を併せて提供すること
④ 人間の承認を必須とする — 自動適用はしない
⑤ 保存データの不変性 — シミュレーションは純粋な計算のみ
特に⑤は重要だ。Auto-Tunerは一度もDBを変更しない。分析ボタンを押すとメモリ上でシミュレーションが回り、管理者が「適用」ボタンを押して初めてDBがアップデートされる。
2. 6つの学習対象
Auto-Tunerが分析し推奨するパラメータは正確に6つだ。
① Signal Lift — 判別力の分析
"このシグナルが出現した場合、Wonの確率は実際に高まるか?"
各シグナルのLift = (Wonでの出現率) / (Lostでの出現率) を計算する。Lift > 1なら陽性指標、Lift < 1なら陰性指標だ。現在の分類(Positive/Negative)と実際の判別力が一致しているかを検証する。
📌 詳細: ② Signal Lift解剖編
② Impact Score — 最適な重み付け
"Game Changerに5.0という値は本当に最適か?"
各ImpactTypeのスコアを±の範囲内で変更しながら、分離度 (Won avg P(Win) - Lost avg P(Win)) が最大になる値を探す。Phaseごとに探索範囲が拡張される。
📌 詳細: ③ Grid Searchエンジン解剖編
③ T — 閾値の最適化
"各ステージの閾値(Threshold)をどこに設定すれば、WonとLostを最もよく区別できるか?"
YoudenのJ統計量 = Sensitivity + Specificity - 1 を最大化するTのポイントを見つける。J < 0.20の場合、「データはこのステージでWon/Lostを区別できない」という意味になるため、値は推奨されない。
📌 詳細: ④ Threshold · k解剖編
④ k — 傾き (Velocity)
"P(Win)がTを超えた時、どれほど急激に反応すべきか?"
従来は証拠量(α+β)の比率に基づく経験則公式 1 + ln(ratio) を使用していたが、Grid Searchベースに転換し、分離度を直接最大化するkを探索する。上限は理論書に基づき12としている。
📌 詳細: ④ Threshold · k解剖編
⑤ Dampening — 重複シグナル減衰
"同じミーティングでシグナルが3つ同時に出た場合、すべてに同じ重みを与えるべきか?"
Compound Score = MAX(シグナル群) + 残りのシグナル × dampening。dampeningが0なら最も強いシグナルのみ、1ならすべてに同じ重み。現在のデフォルト値0.25をGrid Searchで最適化する。
⑥ Silence Penalty — 活動空白ペナルティ
"顧客に会わない期間が長くなった場合、どれだけのペナルティを与えるべきか?"
βに累積されるペナルティの割合をGrid Searchで最適化する。
3. 5段階のデータ成熟度 (Phase)
Auto-Tunerはデータ不足時の過学習を防止するため、WonとLostのうち少ない方(min)を基準に5段階の信頼等級を付与する。
| Phase | 条件 | Emoji | 調整範囲 | 信頼度 |
|---|---|---|---|---|
| 1 | min < 5 | ❌ | 分析不可 | none |
| 2 | min 5~9 | 🟠 | 方向性の参照のみ、適用不可 | low |
| 3 | min 10~19 | 🟡 | Impact, T, k | moderate |
| 4 | min 20~49 | 🟢 | Impact, T, k, Dampening, Silence | high |
| 5 | min ≥ 50 | 🔵 | 全体 + MCMC事後分布 | stable |
なぜ min を基準にするのか?
Wonが100件でもLostが3件しかなければ、「Lost3件だけでこのパラメータにおいてLostがよく区別される」とは言えない。 統計的有意性は常に少ない方のサンプルに制限される。
Phaseによって変化するもの
Phaseが上がるとAuto-Tunerの働きは段階的に拡張される:
| 動作 | Phase 2 | Phase 3 | Phase 4 | Phase 5 |
|---|---|---|---|---|
| Signal Lift最小出現 | 3回 | 5回 | 8回 | 10回 |
| Grid Search範囲 | ±20% | ±30% | ±40% | ±50% |
| T/k の調整 | ❌ | ✅ | ✅ | ✅ |
| Dampening/Silence の調整 | ❌ | ❌ | ✅ | ✅ |
| MCMC事後分布 | ❌ | ✅ | ✅ | ✅ |
| Prior α/βの推奨 | 手動 | モーメント法 | MLE | MLE |
4. コア指標: 分離度 (Separation)
Auto-Tunerの目的関数(objective function)は分離度である。
- Separation > 0.40: Excellent (A) — パラメータが現実をよく反映している
- 0.25 ~ 0.40: Good (B) — 改善の余地あり
- 0.10 ~ 0.25: Needs Improvement (C)
- < 0.10: Urgent (D) — パラメータの早急な調整が必要
分離度の限界とAUC
分離度は平均値の差のみを測定する。分布の重なりは考慮しない。
例:
- シナリオA: Wonの平均 0.70、Lostの平均 0.30 → Separation 0.40 → Excellent!
- シナリオB: Wonの範囲 [0.20, 0.90]、Lostの範囲 [0.10, 0.80] → 平均の差は同じだが大きく重なっている
これを補完するためにROC AUCを導入した。AUCは「ランダムにWonを1つ、Lostを1つ選んだ時、WonのP(Win)の方が高い確率」である。重なりが大きいとAUCは低下する。
📌 詳細: ⑤ 統計検証解剖編
5. シミュレーション・エンジン
Auto-Tunerの核心はメモリベースのシミュレーションである。DBに保存された実際のBayesianUpdateを使用せず、元データ(活動、シグナル、Prior)から最初から再計算を行う。
なぜ再計算するのか?
パラメータを変更してテストするには「もしImpactが3.0だったら、P(Win)はどのように変わっていただろうか?」を計算しなければならない。これはDBに保存された過去の結果からは分からない。仮想のパラメータを用いて最初からシミュレーションして初めて結果が分かる。
シミュレーション 1回のフロー:
α, β ← Priorの初期値
for 各活動 (時間順):
→ 該当する活動のシグナルからCompound Scoreを計算
→ α += SWV × 陽性Compound
→ β += SWV × 陰性Compound
→ β += 沈黙ペナルティ (活動空白時)
P(Win) = α / (α + β)
このシミュレーションをすべてのWon/Lostプロジェクトに対して繰り返すことで、そのパラメータにおける分離度を導き出す。
DBクエリ = 0
シミュレーション中、DBへのクエリは一度も実行されない。初期化時に全データをメモリ上にプリロードし、それ以降は純粋な計算のみを実行する。これが設計原則⑤の実装である。
6. ドキュメントシリーズ案内
| 編 | タイトル | 内容 |
|---|---|---|
| ① [現在] | エンジン概要と設計哲学 | 全体構造、6つの学習対象、Phase、分離度 |
| ② | Signal Lift 解剖 | Lift計算、Laplace smoothing、分類検証 |
| ③ | Grid Searchエンジン解剖 | Impact最適化、Phase別範囲、Dampening、Silence |
| ④ | Threshold · k 解剖 | Youden J、T最適化、k Grid Search |
| ⑤ | 統計検証 解剖 | AUC、K-fold CV、Prior推奨 |
| ⑥ | MCMC事後分布 解剖 | Emcee Ensemble MCMC、モデル定義、HDI、収束診断 |