Mímisbrunnr知恵の泉

← 意思決定分析 一覧

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

📎 前提:マクシミン・マクシマックス基準 | 関連:完全情報の価値(EVPI)(機会損失)・ラプラス基準・基準の比較

要点(BLUF)

1. リグレット(機会損失)とは

意思決定の後、状態が判明したとき、「あのときこっちを選んでいれば…」という後悔が生まれます。これを定量化したのがリグレットです。状態 ss が起きたとき、行動 aa のリグレットは

R(a,s)=maxaf(a,s)f(a,s)R(a,s) = \max_{a'} f(a',s) - f(a,s)

「その状態でありえた最良の利得」から「実際に選んだ行動の利得」を引いたもの。最良を選べていればリグレットは0、外していればその差だけ後悔します。リグレットは必ず 0\ge 0 です。

2. リグレット表を作って最大後悔を最小化

手順は2段階です。①各状態で最良利得を求め、利得表との差を取ってリグレット表を作る。②各行動の最大リグレット(どの状態で最も後悔するか)を求め、それが最小の行動を選ぶ。

import numpy as np

actions = ["拡張", "維持", "縮小"]
states = ["好況", "普通", "不況"]
payoff = np.array([[100, 40, -40], [60, 50, 10], [20, 25, 30]])

col_max = payoff.max(axis=0)        # 各状態での最良利得
regret = col_max - payoff           # リグレット表(機会損失)

print("各状態の最良利得:", col_max)
print("リグレット表:")
for a, r in zip(actions, regret):
    print(f"  {a}: {r}  最大リグレット = {r.max()}")

max_regret = regret.max(axis=1)
best = actions[int(np.argmin(max_regret))]
print(f"ミニマックスリグレット -> {best}(最大後悔を最小化 {max_regret.min()})")

出力:

各状態の最良利得: [100  50  30]
リグレット表:
  拡張: [ 0 10 70]  最大リグレット = 70
  維持: [40  0 20]  最大リグレット = 40
  縮小: [80 25  0]  最大リグレット = 80
ミニマックスリグレット -> 維持(最大後悔を最小化 40)

出力の意味:各状態の最良は好況100・普通50・不況30。拡張は好況なら後悔0(最良)ですが、不況だと最良30に対し−40で後悔70。縮小は不況なら後悔0ですが、好況だと最良100に対し20で後悔80。維持はどの状態でもそこそこで、最大の後悔が40に収まります。3行動の最大後悔(70・40・80)で最小なのが維持。「どんな状態が来ても、後悔を40以内に抑えられる」のが維持——大勝ちは狙わないが大後悔もしない、バランス型の選択です。

3. なぜマクシミンと違う結論になるか

同じ利得表でも、マクシミン・マクシマックス基準のマクシミンは縮小、ミニマックスリグレットは維持を選びました。両者の違いは「何を最小化するか」です。

縮小は最悪利得は高い(不況で30)が、好況のとき100を取り逃して後悔80と大きい。リグレット基準はこの「機会損失」を嫌い、絶対額は中庸でも後悔の小さい維持を選びます。リグレット基準は「事後に後悔したくない」という心理を捉えており、現実の意思決定者の感覚に近いとされます。

数式の直観的意味:EVPIの機会損失と同じもの

リグレット R(a,s)=maxaf(a,s)f(a,s)R(a,s) = \max_{a'} f(a',s) - f(a,s) は、完全情報の価値(EVPI)で見た機会損失とまったく同じ式です。EVPIは「機会損失の期待値」(確率で平均)でしたが、ここは確率がないので「機会損失の最悪値」(最大を取る)を使う。

EVPI:sp(s)R(a,s)vsミニマックスリグレット:minamaxsR(a,s)\text{EVPI}: \sum_s p(s) R(a^\ast,s) \qquad\text{vs}\qquad \text{ミニマックスリグレット}: \min_a \max_s R(a,s)

同じリグレット表に、確率があれば期待値、なければ最悪値を適用する——リスク下と不確実性下で「機会損失をどう集約するか」が違うだけ。リグレットという共通の言語で、第3章(情報の価値)と第6章(不確実性下の基準)が繋がります。なお、ミニマックスリグレットは新たな行動を追加すると既存のリグレット(各状態の最良が変わる)が変化し、順位が逆転しうる——AHPの階層分析法(AHP)と同じ無関係な選択肢からの独立性の破れを抱えます。

⚠️ よくある誤解

対応シミュレーション

本文のコードで、行動を1つ追加するとリグレット表の各列の最良が変わり、既存行動の最大リグレットと順位が動く——無関係な選択肢からの独立性の破れを実験できます。

関連ノート