🎓 レベル:基礎 | 重要度:A(必須)
📎 前提:意思決定問題の構造(行動・状態・結果・利得表)・確実性・リスク・不確実性 | 関連:完全情報の価値(EVPI)・逐次意思決定と動的計画
要点(BLUF)
- 決定木は、意思決定問題を「決定 → 不確実性 → 結果」の時間順に枝分かれで表した図です。決定ノード(□) は自分が選ぶ分岐、偶然ノード(○) は自然が選ぶ分岐。
- 後ろ向き帰納(backward induction):木の末端(利得)から根に向かって、偶然ノードでは期待値を、決定ノードでは最大値を取って畳み込む。
- これだけで最適な行動が求まります。利得表(第1章)を時間軸に展開した姿が決定木で、情報の価値(EVPI/EVSI)もこの木の上で計算できます。
1. 決定木の構成要素
決定木は3種類の部品でできています。
- 決定ノード(□, decision node):意思決定者が枝を選ぶ。例「投入する/見送る」。
- 偶然ノード(○, chance node):自然が確率的に枝を選ぶ。各枝に確率がつく。例「高需要(0.4)/低需要(0.6)」。
- 末端(leaf):その経路をたどった結果の利得。
新製品を投入するかの判断を木にします。投入すれば需要次第で +200 か −100、見送れば 0。
flowchart LR
D["□ 決定<br/>投入する?"] -->|投入| C["○ 需要"]
D -->|見送り| S["利得 0"]
C -->|"高需要 (0.4)"| H["利得 +200"]
C -->|"低需要 (0.6)"| L["利得 -100"]
左から右に時間が流れ、まず自分が決め(□)、次に自然が需要を決める(○)。この向きで描いておくと、評価は逆向き(右から左)に畳み込みます。
2. 後ろ向き帰納:末端から畳み込む
評価は末端から根へ進めます。ルールは2つだけ。
- 偶然ノード(○):枝の利得を確率で重みづけた期待値を、そのノードの値とする。
- 決定ノード(□):枝の値のうち最大を選び、それをそのノードの値とする(最大化)。
なぜ後ろからか。先(未来)の最適行動が決まらないと、手前(現在)の枝の価値が評価できないからです。未来から確定させて現在へ戻る——これは逐次意思決定と動的計画の動的計画と同じ発想です。
import numpy as np
# 事前確率
p_high, p_low = 0.4, 0.6
# 偶然ノード(投入後の需要)の期待値
EV_launch = p_high*200 + p_low*(-100)
# 見送りは確実に 0
EV_skip = 0.0
print(f"○ 偶然ノード EV(投入) = {EV_launch:.1f} 万円")
print(f" EV(見送り) = {EV_skip:.1f} 万円")
# 決定ノード:最大化
value = max(EV_launch, EV_skip)
best = "投入" if EV_launch > EV_skip else "見送り"
print(f"□ 決定ノードの値 = max = {value:.1f} 万円 -> 最適行動:{best}")
出力:
○ 偶然ノード EV(投入) = 20.0 万円
EV(見送り) = 0.0 万円
□ 決定ノードの値 = max = 20.0 万円 -> 最適行動:投入
出力の意味:偶然ノードで投入の期待値は 。見送りは 0。決定ノードでは大きい方(20)を取り、最適行動は投入、決定の価値は20万と確定します。木全体が「20万・投入」という1つの値と方針に畳み込まれました。この「決定の価値20」が、第3章でこのあと情報の価値を測るときの基準(情報なしのベースライン)になります。
3. 利得表との対応:時間軸への展開
決定木は意思決定問題の構造(行動・状態・結果・利得表)の利得表と同じ情報を持ちますが、時間の流れと情報の到着順を明示できる点が違います。
- 利得表:行動 × 状態のマス目(静的なスナップショット)
- 決定木:決定 → 不確実性 → (新情報)→ 決定 …(動的な流れ)
この「流れ」が効くのは、途中で情報が入る場合です。市場テストをしてから投入を決める、という2段階の判断は、決定木なら自然に表せます(ベイズ更新と意思決定で、テスト結果による枝分かれを足します)。利得表のままでは、この「情報の到着」を描けません。
数式の直観的意味:なぜ max と E が交互か
後ろ向き帰納の値は、ノードの種類に応じて
を交互に適用したものです。 は「自分の自由(最良を選べる)」、 は「自然への従属(確率に従うしかない)」 を表します。コントロールできる軸では最大化し、できない軸では平均する——意思決定問題の構造(行動・状態・結果・利得表)で分けた「動かせる軸/動かせない軸」が、そのまま演算の違いになっています。この と の交替が、第7章の逐次意思決定と動的計画ではベルマン方程式 という1本の式に統合されます。
⚠️ よくある誤解
- 「決定ノードで期待値を取る」は誤り:決定ノードは自分が選べるので最大化。期待値(平均)を取るのは偶然ノードだけです。ここを混同すると、選べるはずの行動を確率で薄めてしまいます。
- 「前向きに解く」と最適にならない:手前から「とりあえず良さそうな枝」を選ぶと、先の最適行動を織り込めません。必ず末端から畳み込みます。
- 「利得=金額」前提に注意:リスク選好を入れたいなら、末端を利得そのものでなく効用 に置き換えて期待効用で畳み込みます(期待効用と効用関数)。期待値のままだとリスク中立を仮定したことになります。
対応シミュレーション
本文のコードがそのまま最小の後ろ向き帰納です。利得や確率を変えると最適行動が切り替わる閾値(例:高需要確率が何%を割ると見送りになるか)を探れます。
関連ノート
- 第3章 決定木と情報の価値 目次
- 意思決定問題の構造(行動・状態・結果・利得表) — 前提:利得表(決定木の静的版)
- ベイズ更新と意思決定 — 次のトピック:情報の枝を木に足す
- 完全情報の価値(EVPI) — この「決定の価値20」が情報価値の基準
- 逐次意思決定と動的計画 — 後ろ向き帰納の一般化(ベルマン方程式)
- 意思決定分析・リスク分析 全体目次