Mímisbrunnr知恵の泉

← 意思決定分析 一覧

🎓 レベル:標準 | 重要度:B(推奨)

📎 前提:マクシミン・マクシマックス基準 | 関連:ラプラス基準・基準の比較

要点(BLUF)

1. 悲観と楽観の折衷

マクシミン・マクシマックス基準は、最悪だけ(悲観)か最良だけ(楽観)かの両極端でした。現実の意思決定者は、その中間にいることが多い。「最悪も最良も両方気にするが、自分はやや楽観寄り」——この態度を1つの数字 α[0,1]\alpha \in [0,1] で表すのがハーヴィッツ基準です。

H(a)=αmaxsf(a,s)最良+(1α)minsf(a,s)最悪,α[0,1]H(a) = \alpha\,\underbrace{\max_s f(a,s)}_{\text{最良}} + (1-\alpha)\,\underbrace{\min_s f(a,s)}_{\text{最悪}}, \qquad \alpha \in [0,1]

α\alpha楽観係数(coefficient of optimism)α\alpha が大きいほど最良を重視(楽観)、小さいほど最悪を重視(悲観)。H(a)H(a) が最大の行動を選びます。

2. αを動かして結論の変化を見る

マクシミン・マクシマックス基準と同じ投資の利得表で、α\alpha を0から1まで動かします。

import numpy as np

actions = ["拡張", "維持", "縮小"]
payoff = np.array([[100, 40, -40], [60, 50, 10], [20, 25, 30]])
row_min = payoff.min(axis=1)   # 最悪
row_max = payoff.max(axis=1)   # 最良

print("H(a) = alpha*最良 + (1-alpha)*最悪")
for alpha in [0.0, 0.25, 0.5, 0.75, 1.0]:
    H = alpha*row_max + (1-alpha)*row_min
    best = actions[int(np.argmax(H))]
    print(f"  alpha={alpha:.2f}: H={np.round(H,1)} -> 最良 {best}")

出力:

H(a) = alpha*最良 + (1-alpha)*最悪
  alpha=0.00: H=[-40.  10.  20.] -> 最良 縮小
  alpha=0.25: H=[-5.  22.5 22.5] -> 最良 維持
  alpha=0.50: H=[30.  35.  25. ] -> 最良 維持
  alpha=0.75: H=[65.  47.5 27.5] -> 最良 拡張
  alpha=1.00: H=[100.  60.  30. ] -> 最良 拡張

出力の意味α\alpha を上げる(楽観的になる)につれ、推奨が 縮小 → 維持 → 拡張 と移ります。α=0\alpha=0(完全悲観)は縮小=マクシミン、α=1\alpha=1(完全楽観)は拡張=マクシマックスと、両端でちょうど前ノードの結論に一致します。中間の楽観度では、バランス型の維持が選ばれる帯がある。自分の楽観度 α\alpha を決めれば、対応する行動が一意に決まる——主観(楽観度)を1つのパラメータに明示して意思決定する枠組みです。

3. 切り替え点(順位逆転)を求める

H(a)H(a)α\alpha について直線です(最悪を切片、最良−最悪を傾きとする1次関数)。だから行動間の順位逆転は2直線の交点で厳密に求まります。

つまり、α<0.25\alpha < 0.25 なら縮小、0.25<α<0.5560.25 < \alpha < 0.556 なら維持、α>0.556\alpha > 0.556 なら拡張。この境界を図にすると、各行動の直線が交差して「楽観度の帯ごとに勝者が変わる」様子が見えます。

import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib

actions = ["拡張", "維持", "縮小"]
payoff = np.array([[100, 40, -40], [60, 50, 10], [20, 25, 30]])
row_min = payoff.min(axis=1); row_max = payoff.max(axis=1)

alphas = np.linspace(0, 1, 101)
plt.figure(figsize=(7, 4.5))
for i, a in enumerate(actions):
    H = alphas*row_max[i] + (1-alphas)*row_min[i]
    plt.plot(alphas, H, lw=2, label=a)
for xc in [0.25, 0.556]:
    plt.axvline(xc, color="gray", ls=":", alpha=0.6)
plt.xlabel("楽観係数 α(0=悲観・1=楽観)"); plt.ylabel("ハーヴィッツ評価 H(a)")
plt.title("ハーヴィッツ基準:α で最良の行動が切り替わる")
plt.legend(); plt.grid(alpha=0.3); plt.tight_layout(); plt.show()

図の意味:3本の直線が交差します。左端(悲観)では縮小が最上、右端(楽観)では拡張が最上、中間では維持が頭を出す。点線の交点(α=0.25, 0.556\alpha=0.25,\ 0.556)が順位逆転点。この図は「自分の楽観度をどこに置くかで結論がどう変わるか」の地図で、重み付けと感度分析の感度分析とまったく同じ構造(パラメータに対する線形な評価と交点)です。

数式の直観的意味:αは「主観確率」のなれの果て

ハーヴィッツの H(a)=αmax+(1α)minH(a) = \alpha\max + (1-\alpha)\min をよく見ると、最良の状態に確率 α\alpha、最悪の状態に確率 1α1-\alpha を割り当てた期待値の形をしています。つまりハーヴィッツ基準は、「確率は分からないが、最良と最悪の2点に α:(1α)\alpha:(1-\alpha) で主観確率を置く」という割り切り。中間状態を無視する点はマクシミン系の弱点を引き継ぎますが、α\alpha という1パラメータで悲観〜楽観を連続的に動かせる柔軟さがあります。α\alpha を「最良が起きる主観確率」と解釈すれば、確率不明の不確実性を、最小限の主観確率でリスク化した姿——確実性・リスク・不確実性で触れた「主観確率を貼ればリスク化できる」の、最も倹約的なバージョンです。

⚠️ よくある誤解

対応シミュレーション

本文の図コードで、α\alpha 軸上の交点が「順位逆転点」であることを確認できます。利得表を変えると交点が動き、ある行動が全 α\alpha で最良(他を常に上回る)になる=支配されるケースも作れます。

関連ノート