Skip to content

决策科学资源专题

Decision Science Resources


📚 核心理论体系

决策科学的三大支柱

graph TB
    A[决策科学] --> B[规范决策理论]
    A --> C[描述决策理论]
    A --> D[预测决策理论]

    B --> B1[期望效用理论]
    B --> B2[理性选择理论]
    B --> B3[贝叶斯决策]

    C --> C1[前景理论]
    C --> C2[启发式与偏差]
    C --> C3[有限理性]

    D --> D1[预测模型]
    D --> D2[机器学习辅助]
    D --> D3[专家判断校准]

🎯 规范决策理论 (Normative Decision Theory)

回答: "理性的人应该如何决策?"

1. 期望效用理论 (Expected Utility Theory)

创始人: von Neumann & Morgenstern (1944)

核心公式: $$ EU(A) = \sum_{i} p_i \cdot u(x_i) $$

其中: - \(EU(A)\): 行动 A 的期望效用 - \(p_i\): 结果 i 发生的概率 - \(u(x_i)\): 结果 i 的效用值

公理体系: | 公理 | 说明 | |------|------| | 完备性 | 任何两个选项都可以比较偏好 | | 传递性 | 如果 A>B 且 B>C,则 A>C | | 连续性 | 偏好不会因概率微小变化而反转 | | 独立性 | 无关选项不影响原有偏好顺序 |

应用案例

# 投资决策的期望效用计算
def calculate_expected_utility(options):
    """
    options: list of dict, each with 'outcomes' and 'probabilities'
    返回期望效用最大的选项
    """
    best_option = None
    best_eu = float('-inf')

    for option in options:
        eu = sum(p * u for p, u in zip(option['probabilities'], 
                                        option['utilities']))
        if eu > best_eu:
            best_eu = eu
            best_option = option

    return best_option, best_eu

# 示例:三个投资项目
investment_A = {
    'outcomes': ['高收益', '中收益', '亏损'],
    'probabilities': [0.3, 0.5, 0.2],
    'utilities': [100, 50, -80]  # 效用值
}

best, eu = calculate_expected_utility([investment_A])
print(f"最优投资期望效用:{eu}")


2. 贝叶斯决策理论 (Bayesian Decision Theory)

核心思想: 在不确定性下,使用贝叶斯方法更新信念并做出最优决策。

贝叶斯公式: $$ P(\theta|D) = \frac{P(D|\theta) \cdot P(\theta)}{P(D)} $$

决策流程

graph LR
    A[先验分布 P(θ)] --> B[收集数据 D]
    B --> C[计算后验 P(θ|D)]
    C --> D[计算各行动期望效用]
    D --> E[选择最优行动]

Python 实现

import numpy as np
from scipy import stats

def bayesian_decision_making(prior, likelihood, data, actions):
    """
    prior: 先验分布
    likelihood: 似然函数
    data: 观测数据
    actions: 可选行动及其效用函数
    """
    # 计算后验分布
    posterior = prior * likelihood(data)
    posterior = posterior / np.sum(posterior)  # 归一化

    # 计算每个行动的期望效用
    expected_utilities = {}
    for action_name, utility_func in actions.items():
        eu = np.sum(posterior * utility_func())
        expected_utilities[action_name] = eu

    # 选择最优行动
    best_action = max(expected_utilities, key=expected_utilities.get)
    return best_action, expected_utilities

应用场景: - 医疗诊断(基于症状更新疾病概率) - 质量控制(基于样本更新批次合格率) - 金融投资(基于市场信号更新资产配置)


🧠 描述决策理论 (Descriptive Decision Theory)

回答: "人们在现实中实际如何决策?"

1. 前景理论 (Prospect Theory)

创始人: Kahneman & Tversky (1979)

核心发现: 人们决策时系统性地偏离期望效用理论。

价值函数特征

graph TB
    A[价值函数 v(x)] --> B[参考点依赖]
    A --> C[损失厌恶]
    A --> D[敏感度递减]

    B --> B1[相对变化比绝对值更重要]
    C --> C1[损失痛苦 ≈ 2 倍收益快乐]
    D --> D1[边际效用递减]

价值函数公式: $$ v(x) = \begin{cases} x^\alpha & \text{if } x \geq 0 \ -\lambda(-x)^\beta & \text{if } x < 0 \end{cases} $$

典型参数: - \(\alpha = \beta = 0.88\) (敏感度递减) - \(\lambda = 2.25\) (损失厌恶系数)

四重模式 (Fourfold Pattern):

概率 收益域 (Risk Averse) 损失域 (Risk Seeking)
高概率 风险规避
(接受确定性收益)
风险寻求
(冒险避免确定损失)
低概率 风险寻求
(买彩票)
风险规避
(买保险)

案例: - 确定性效应: 80% 概率得 4000 元 vs 100% 得 3000 元 - 期望值:3200 vs 3000 - 多数人选择 3000(风险规避)

  • 反射效应: 80% 概率损失 4000 元 vs 100% 损失 3000 元
  • 期望损失:-3200 vs -3000
  • 多数人选择冒险(风险寻求)

2. 启发式与偏差 (Heuristics and Biases)

经典论文: Tversky & Kahneman (1974) "Judgment under Uncertainty: Heuristics and Biases"

三大启发法

A. 可得性启发法 (Availability Heuristic)

定义: 人们依据记忆中容易回想起来的例子来评估事件发生的概率。

经典实验: - 问题:字母 K 在单词中更常出现在第一个位置还是第三个位置? - 结果:多数人认为第一个位置更多(因为更容易想到 K 开头的词) - 事实:第三个位置的 K 更多

现实案例: | 场景 | 偏差表现 | 统计数据 | |------|---------|---------| | 空难 vs 车祸 | 觉得飞机更危险 | 车祸死亡率是空难的 100 倍 | | 鲨鱼袭击 | 过度担忧 | 每年约 10 起 | | 跌倒受伤 | 不够重视 | 每年约 100 万起 |

Python 模拟

import random

def availability_bias_simulation():
    """模拟可得性偏差对风险评估的影响"""

    # 真实风险概率
    real_risks = {
        'car_accident': 0.01,      # 车祸
        'plane_crash': 0.00001,    # 空难
        'shark_attack': 0.0000001  # 鲨鱼袭击
    }

    # 媒体报道频率(影响可得性)
    media_coverage = {
        'car_accident': 1,         # 很少报道
        'plane_crash': 100,        # 大量报道
        'shark_attack': 50         # 过度报道
    }

    # 感知风险(受可得性影响)
    perceived_risks = {}
    for event in real_risks:
        # 感知风险 = 真实风险 × 媒体曝光度
        perceived_risks[event] = real_risks[event] * media_coverage[event]

    print("真实风险 vs 感知风险:")
    for event in real_risks:
        print(f"{event}: {real_risks[event]:.6f}{perceived_risks[event]:.6f}")

    return perceived_risks

availability_bias_simulation()


B. 代表性启发法 (Representativeness Heuristic)

定义: 判断某事物属于某一类别的概率时,过度关注它是否具备该类别的典型特征,而忽视基础概率。

经典实验: - 描述: "Steve 很害羞,喜欢秩序,做事细致" - 问题: Steve 更可能是图书管理员还是农民? - 结果: 多数人选图书管理员(符合刻板印象) - 忽略的事实: 农民人口是图书管理员的 20 倍

基础概率忽略公式: $$ P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} $$

人们只看 \(P(B|A)\)(相似性),忽略 \(P(A)\)(基础概率)

现实案例

def base_rate_fallacy():
    """基础概率忽略案例"""

    # 基础概率
    p_programmer = 0.01  # 程序员占比 1%
    p_salesman = 0.10    # 销售员占比 10%

    # 特征匹配概率
    p_quiet_given_programmer = 0.8   # 80% 程序员安静
    p_quiet_given_salesman = 0.1     # 10% 销售员安静

    # 贝叶斯计算
    p_programmer_given_quiet = (
        p_quiet_given_programmer * p_programmer /
        (p_quiet_given_programmer * p_programmer + 
         p_quiet_given_salesman * p_salesman)
    )

    print(f"看到安静的人,是程序员的概率:{p_programmer_given_quiet:.2%}")
    print(f"人们直觉判断:>50%(忽略基础概率)")

base_rate_fallacy()

C. 锚定与调整启发法 (Anchoring and Adjustment)

定义: 人们在进行判断时,容易过分依赖获得的第一条信息(锚点),后续调整不足。

经典实验: - 转动幸运轮盘得到数字 65 或 10 - 问:联合国中非洲国家占比是多少? - 结果: - 轮盘 65 组:平均估计 45% - 轮盘 10 组:平均估计 25% - 真实值:约 28%

锚定效应公式: $$ Estimate = Anchor + \Delta $$

其中 \(\Delta\) 调整量通常不足。

商业应用: | 策略 | 锚点设置 | 效果 | |------|---------|------| | 价格谈判 | 先出高价 | 最终成交价更高 | | 商品定价 | 原价 1000,现价 500 | 显得划算 | | 限购提示 | "每人限购 12 个" | 购买量增加 |


其他重要认知偏差

偏差 说明 案例
确认偏误 (Confirmation Bias) 只寻找支持自己观点的证据 只关注利好新闻
过度自信 (Overconfidence) 高估自己的判断准确性 预测区间过窄
后见之明 (Hindsight Bias) "我早就知道会这样" 事后诸葛亮
框架效应 (Framing Effect) 同一问题不同表述影响决策 存活率 90% vs 死亡率 10%
禀赋效应 (Endowment Effect) 拥有后估值更高 二手物品不愿低价卖
沉没成本 (Sunk Cost) 因已投入成本而继续错误决策 不愿止损
群体思维 (Groupthink) 群体压力导致一致性 会议室没人反对

3. 双系统理论 (Dual Process Theory)

著作: 《Thinking, Fast and Slow》(Kahneman, 2011)

graph TB
    A[大脑决策系统] --> B[系统 1: 快思考]
    A --> C[系统 2: 慢思考]

    B --> B1[自动、直觉、情绪化]
    B --> B2[90% 日常决策]
    B --> B3[易受偏差影响]

    C --> C1[主动、逻辑、理性]
    C --> C2[懒惰、耗能]
    C --> C3[可纠正系统 1]

系统特征对比

特征 系统 1 (快) 系统 2 (慢)
速度 瞬间 缓慢
努力 不费力 费力
意识 无意识 有意识
控制 自动 主动
典型任务 认人脸、2+2 复杂计算、写论文
易错性

卡尼曼的建议:

"如果你真想显著提高决策水平,那就一个字——算法。做不到算法,就让自己慢下来。"


🎲 风险与不确定性

Knight 不确定性 (Knightian Uncertainty)

提出者: Frank Knight (1921)

核心区分

维度 风险 (Risk) 不确定性 (Uncertainty)
定义 已知可能状态及概率 未知可能状态或概率
可量化
例子 骰子、彩票、保险 新技术、地缘政治、疫情
决策方法 期望值计算 情景规划、鲁棒决策

2008 金融危机的教训

"银行将真正的不确定性视为风险问题来处理,这是根本性的认知错位。"


风险管理决策

决策流程

graph LR
    A[风险识别] --> B[风险评估]
    B --> C[风险应对策略]
    C --> D[实施与监控]

    B --> B1[概率分析]
    B --> B2[影响评估]
    B --> B3[风险矩阵]

    C --> C1[风险规避]
    C --> C2[风险降低]
    C --> C3[风险转移]
    C --> C4[风险接受]

风险评估工具

1. 蒙特卡洛模拟 (Monte Carlo Simulation)

import numpy as np
import matplotlib.pyplot as plt

def monte_carlo_risk_analysis(project_cost, uncertainty, iterations=10000):
    """
    项目成本风险分析
    project_cost: 基准成本
    uncertainty: 不确定性范围 (±%)
    iterations: 模拟次数
    """
    # 模拟成本分布(假设正态分布)
    simulated_costs = np.random.normal(
        loc=project_cost,
        scale=project_cost * uncertainty,
        size=iterations
    )

    # 分析结果
    mean_cost = np.mean(simulated_costs)
    p50 = np.percentile(simulated_costs, 50)
    p90 = np.percentile(simulated_costs, 90)
    p10 = np.percentile(simulated_costs, 10)

    print(f"基准成本:¥{project_cost:,.0f}")
    print(f"平均模拟成本:¥{mean_cost:,.0f}")
    print(f"50% 概率不超过:¥{p50:,.0f}")
    print(f"90% 概率不超过:¥{p90:,.0f}")
    print(f"10% 概率不低于:¥{p10:,.0f}")

    # 可视化
    plt.figure(figsize=(10, 6))
    plt.hist(simulated_costs, bins=50, alpha=0.7, edgecolor='black')
    plt.axvline(mean_cost, color='red', linestyle='--', label=f'均值:¥{mean_cost:,.0f}')
    plt.axvline(p90, color='green', linestyle='--', label=f'P90: ¥{p90:,.0f}')
    plt.xlabel('项目成本')
    plt.ylabel('频数')
    plt.title('蒙特卡洛模拟:项目成本风险分布')
    plt.legend()
    plt.show()

    return simulated_costs

# 示例:基准成本 100 万,±20% 不确定性
monte_carlo_risk_analysis(project_cost=1000000, uncertainty=0.2)

2. 敏感性分析 (Sensitivity Analysis)

def sensitivity_analysis(base_case, variables, changes):
    """
    敏感性分析:分析各变量变化对结果的影响
    """
    results = {}

    for var_name, var_value in variables.items():
        # 正向变化
        variables_up = variables.copy()
        variables_up[var_name] = var_value * (1 + changes[var_name])
        result_up = base_case(variables_up)

        # 负向变化
        variables_down = variables.copy()
        variables_down[var_name] = var_value * (1 - changes[var_name])
        result_down = base_case(variables_down)

        # 计算敏感度
        sensitivity = (result_up - result_down) / (2 * changes[var_name] * var_value)
        results[var_name] = {
            'sensitivity': sensitivity,
            'impact_up': result_up - base_case(variables),
            'impact_down': result_down - base_case(variables)
        }

    # 排序
    sorted_results = sorted(results.items(), 
                          key=lambda x: abs(x[1]['sensitivity']), 
                          reverse=True)

    print("敏感性分析结果(按影响程度排序):")
    for var, data in sorted_results:
        print(f"{var}: 敏感度={data['sensitivity']:.2f}, "
              f"影响范围=[{data['impact_down']:.2f}, {data['impact_up']:.2f}]")

    return results

🛠️ 决策支持工具

1. 决策树分析 (Decision Tree Analysis)

结构

决策节点 (□)
  ├─ 方案 A
  │   ├─ 自然状态 1 (概率 p1) → 结果 1
  │   └─ 自然状态 2 (概率 p2) → 结果 2
  └─ 方案 B
      ├─ 自然状态 1 (概率 p1) → 结果 3
      └─ 自然状态 2 (概率 p2) → 结果 4

Python 实现

class DecisionNode:
    def __init__(self, name, children=[]):
        self.name = name
        self.children = children

class ChanceNode:
    def __init__(self, name, probability, outcome):
        self.name = name
        self.probability = probability
        self.outcome = outcome

def calculate_expected_value(node):
    """递归计算期望值"""
    if isinstance(node, ChanceNode):
        return node.probability * node.outcome
    elif isinstance(node, DecisionNode):
        return sum(calculate_expected_value(child) for child in node.children)

# 示例:产品开发决策
# 决策:开发新产品 vs 改进现有产品
develop_product = DecisionNode("开发新产品", [
    ChanceNode("市场成功", 0.6, 5000000),   # 60% 概率赚 500 万
    ChanceNode("市场失败", 0.4, -2000000)   # 40% 概率亏 200 万
])

improve_product = DecisionNode("改进现有产品", [
    ChanceNode("成功", 0.8, 2000000),       # 80% 概率赚 200 万
    ChanceNode("失败", 0.2, -500000)        # 20% 概率亏 50 万
])

ev_develop = calculate_expected_value(develop_product)
ev_improve = calculate_expected_value(improve_product)

print(f"开发新产品期望值:¥{ev_develop:,.0f}")
print(f"改进现有产品期望值:¥{ev_improve:,.0f}")
print(f"最优决策:{'开发新产品' if ev_develop > ev_improve else '改进现有产品'}")

2. 多准则决策分析 (MCDA)

场景: 多个相互冲突的目标

方法: 1. 加权评分法 (Weighted Sum Model) 2. 层次分析法 (AHP) 3. TOPSIS (逼近理想解排序)

加权评分法示例

def weighted_sum_model(options, criteria, weights):
    """
    加权评分法
    options: 方案列表
    criteria: 各方案在各准则的得分
    weights: 准则权重
    """
    scores = {}
    for option in options:
        score = sum(criteria[option][c] * weights[c] for c in weights)
        scores[option] = score

    # 排序
    ranked = sorted(scores.items(), key=lambda x: x[1], reverse=True)

    print("方案排名:")
    for i, (option, score) in enumerate(ranked, 1):
        print(f"{i}. {option}: {score:.2f}分")

    return ranked

# 示例:选择办公地点
options = ['地点 A', '地点 B', '地点 C']

criteria = {
    '地点 A': {'成本': 80, '交通': 60, '环境': 90},
    '地点 B': {'成本': 60, '交通': 90, '环境': 70},
    '地点 C': {'成本': 90, '交通': 70, '环境': 80}
}

weights = {'成本': 0.4, '交通': 0.35, '环境': 0.25}

weighted_sum_model(options, criteria, weights)


📖 经典书籍推荐

必读经典

书名 作者 年份 贡献
《Thinking, Fast and Slow》 Daniel Kahneman 2011 双系统思维理论集大成
《Judgment under Uncertainty》 Kahneman et al. 1982 启发式与偏差经典论文集
《Noise》 Kahneman et al. 2021 决策中的噪音问题
《Nudge》 Thaler & Sunstein 2008 助推理论
《The Black Swan》 Nassim Taleb 2007 极端不确定性与黑天鹅
《Superforecasting》 Philip Tetlock 2015 预测能力与校准
《Risk, Uncertainty and Profit》 Frank Knight 1921 风险与不确定性区分
《Theory of Games and Economic Behavior》 von Neumann 1944 博弈论奠基

中文译本

  • 《思考,快与慢》- 中信出版社
  • 《噪声》- 浙江教育出版社
  • 《助推》- 中信出版社
  • 《黑天鹅》- 中信出版社
  • 《风险、不确定性和利润》- 商务印书馆

🎓 在线课程

课程 平台 机构 链接
Behavioral Economics Coursera Duke University 链接
Decision-Making and Scenarios Coursera Wharton 链接
行为经济学 得到 薛兆丰 链接
风险分析与决策 edX MIT 链接

🔬 前沿研究

神经决策科学 (Neuroeconomics)

研究内容: 决策的神经生物学基础

关键发现: - 前额叶皮层:理性计算 - 杏仁核:情绪反应 - 纹状体:奖赏预期

计算决策理论 (Computational Decision Theory)

方法: - 强化学习 - 贝叶斯推理 - 深度学习辅助决策

应用: - 自动驾驶决策 - 医疗诊断 AI - 量化投资


💡 实践建议

改善决策质量的 10 个方法

  1. 慢下来 - 激活系统 2,延后直觉
  2. 使用算法 - 结构化打分优于直觉
  3. 考虑对立面 - 主动寻找反面证据
  4. 校准预测 - 记录预测并复盘
  5. 设定决策流程 - 避免临时拍板
  6. 多元化视角 - 避免群体思维
  7. 区分风险与不确定性 - 使用正确工具
  8. 记录决策日志 - 追踪决策质量
  9. 预先承诺 - 避免情绪化改变
  10. 寻求外部观点 - 减少内部偏见

决策检查清单

决策前: - [ ] 明确决策目标和约束 - [ ] 考虑了多个备选方案 - [ ] 收集了充分信息 - [ ] 识别了关键不确定性 - [ ] 咨询了不同观点

决策中: - [ ] 使用了结构化工具(决策树、MCDA) - [ ] 避免了常见认知偏差 - [ ] 计算了期望值/效用 - [ ] 考虑了最坏情况

决策后: - [ ] 记录决策依据 - [ ] 设定复盘时间 - [ ] 建立反馈机制 - [ ] 准备应急预案


🔗 更多资源

学术资源

实践工具


最后更新: 2026-06-01

致谢: 本专题基于用户关于"数据化决策是实践范式而非独立学科"的深刻洞察而创建,整合了决策科学、行为经济学、管理科学等多个领域的核心知识。