Mímisbrunnr知恵の泉

← 意思決定分析 一覧

🎓 レベル:基礎 | 重要度:A(必須)

📎 前提:なし(このサイトの出発点) | 関連:確実性・リスク・不確実性決定木と後ろ向き帰納(利得表を時間軸に展開した姿)

要点(BLUF)

1. 意思決定の3つの構成要素

意思決定の問題は、登場人物を3種類に分けると一気に見通しがよくなります。

意思決定者がコントロールできるのは行動だけ。状態は「引き当てる」もので、選べません。自分が動かせる軸と動かせない軸を分離する——これが意思決定分析の最初の一歩です。

2. 利得表という共通言語

3要素を表にまとめます。行に行動、列に状態をとり、マス目に利得 f(ai,sj)f(a_i, s_j) を書いたものが利得表です。

行動 \ 状態好況 s1s_1横ばい s2s_2不況 s3s_3
新製品投入 a1a_112040−60
既存品強化 a2a_2705010
現状維持 a3a_3303030

この一枚の表に、意思決定問題の情報がほぼすべて入っています。あとは「状態をどう評価するか」(確率があるか・無いか)で使う道具が変わるだけ。表を眺めると、新製品投入は当たれば大きいが外すと痛いハイリスク、現状維持は状態によらず一定のノーリスク、という性格の違いも読み取れます。

3. 状態の確率が分かるとき:期待利得

状態の確率 p(sj)p(s_j) が分かるなら、各行動の利得を確率で重みづけた平均——期待利得(expected payoff)——で比較できます。

E[利得ai]=jp(sj)f(ai,sj)\mathbb{E}[\text{利得} \mid a_i] = \sum_{j} p(s_j)\, f(a_i, s_j)

好況30%・横ばい50%・不況20%として、各行動の期待利得を計算してみます。

import numpy as np

# 状態(列):好況・横ばい・不況、それぞれの確率
probs = np.array([0.3, 0.5, 0.2])

# 行動(行)ごとの利得表(万円)
actions = ["新製品投入", "既存品強化", "現状維持"]
payoff = np.array([
    [120, 40, -60],   # 新製品投入
    [70,  50,  10],   # 既存品強化
    [30,  30,  30],   # 現状維持
])

# 各行動の期待利得 = 利得 × 確率 の和(行列×ベクトル)
expected = payoff @ probs
for a, e in zip(actions, expected):
    print(f"{a}: 期待利得 = {e:.1f} 万円")
best = actions[int(np.argmax(expected))]
print(f"期待利得が最大の行動 -> {best}")

出力:

新製品投入: 期待利得 = 44.0 万円
既存品強化: 期待利得 = 48.0 万円
現状維持: 期待利得 = 30.0 万円
期待利得が最大の行動 -> 既存品強化

出力の意味:期待利得で比べると、いちばん高いのは既存品強化(48.0)です。新製品投入は好況の 120 が魅力ですが、不況の −60 が足を引っ張り、ならして 44.0。利得表という共通の土俵に乗せると、こうした「ならした価値」で横並び比較ができます。ただし期待利得が最大の行動を選ぶ規範(期待値原理)には限界があり、そこを修正するのが第2章の期待効用と効用関数です。

4. 数式の直観的意味:なぜ「表」にこだわるのか

利得 f(a,s)f(a,s) を「行動 × 状態 → 数値」の関数として書くことには意味があります。意思決定の不確実性は、すべて状態 ss に押し込められている、という宣言だからです。行動 aa を固定すると、残る不確実性は ss の分だけ。だから「行動を選ぶ」とは「ss に関する利得の分布(その行のばらつき)を1つ選ぶ」ことに等しい。

この見方に立つと、意思決定問題は「どの確率分布(くじ)を引き受けるか」の選択になります。第2章の期待効用と効用関数で扱うくじ(lottery) は、まさにこの「表の各行」を抽象化したものです。利得表は、その最も素朴で具体的な姿です。

⚠️ よくある誤解

対応シミュレーション

本文のコードがそのまま検証例です(decision-study/simulations/ にも収録予定)。利得表を変えて、期待利得が最大の行動がどう変わるかを試すと、表の感覚がつかめます。

関連ノート