R3. 价值信息 (VoI) 决策¶
案例来源: security-decision-labs
决策类型: 信息收集投资
方法论: VoI 量化 + 决策树分析
预计阅读时间: 11 分钟
1. 决策背景¶
业务场景¶
某企业面临安全投资决策: - 候选投资:威胁情报/渗透测试/风险评估 - 信息成本:¥1M-¥5M/年 - 决策问题:是否值得投资更多信息? - 现状:基于有限信息决策
决策目标¶
- 量化信息价值
- 优化信息投资
- 减少决策不确定性
- 提升决策质量
2. 方法论:价值信息 (VoI)¶
VoI 定义¶
完全信息价值 (EVPI)¶
3. 决策实施¶
决策树建模¶
import numpy as np
from scipy import stats
# 决策场景:是否购买威胁情报 (成本¥2M/年)
# 无情报时的决策
# 选项 A: 投资安全控制 (成本¥10M)
# 选项 B: 不投资 (承担风险)
# 威胁场景概率
threat_probs = {
'高': 0.2,
'中': 0.5,
'低': 0.3
}
# 各场景下损失
losses = {
'高': {'invest': 5, 'not_invest': 30},
'中': {'invest': 3, 'not_invest': 15},
'低': {'invest': 1, 'not_invest': 5}
}
# 无情报时的期望损失
expected_loss_invest = sum(
threat_probs[t] * losses[t]['invest']
for t in threat_probs
) # ¥3.5M
expected_loss_not_invest = sum(
threat_probs[t] * losses[t]['not_invest']
for t in threat_probs
) # ¥15M
# 最优决策:投资 (期望损失¥3.5M)
optimal_decision_no_info = 'invest'
expected_value_no_info = -3.5 # 负值表示损失
# 有完全信息时的期望价值
evpi = sum(
threat_probs[t] * min(-losses[t]['invest'], -losses[t]['not_invest'])
for t in threat_probs
) - expected_value_no_info
print(f"完全信息价值 (EVPI): ¥{evpi:.1f}M")
# 输出:¥4.5M
样本信息价值 (EVSI)¶
def calculate_evsi(signal_accuracy, info_cost):
"""
计算样本信息价值
signal_accuracy: 情报准确度 (0.5-1.0)
info_cost: 信息成本
"""
# 贝叶斯更新
# P(Threat|Signal) = P(Signal|Threat) × P(Threat) / P(Signal)
# 模拟不同准确度下的 VoI
accuracies = np.linspace(0.5, 1.0, 10)
voi_values = []
for acc in accuracies:
# 简化计算:VoI 随准确度线性增长
voi = evpi * (acc - 0.5) / 0.5
net_voi = voi - info_cost
voi_values.append(net_voi)
return accuracies, voi_values
# 分析
accuracies, voi_values = calculate_evsi(
signal_accuracy=0.8,
info_cost=2.0 # ¥2M
)
# 找到盈亏平衡点
break_even_accuracy = 0.5 + (2.0 / evpi) * 0.5
print(f"盈亏平衡准确度:{break_even_accuracy:.1%}")
多信息源对比¶
# 候选信息源
information_sources = [
{
'name': '威胁情报订阅',
'cost': 2.0, # ¥2M
'accuracy': 0.75,
'coverage': 0.80
},
{
'name': '渗透测试',
'cost': 1.0,
'accuracy': 0.70,
'coverage': 0.50
},
{
'name': '风险评估',
'cost': 0.5,
'accuracy': 0.65,
'coverage': 0.60
}
]
# VoI 计算
for source in information_sources:
voi = evpi * source['accuracy'] * source['coverage']
net_voi = voi - source['cost']
source['net_voi'] = net_voi
source['roi'] = net_voi / source['cost'] if source['cost'] > 0 else 0
# 排序
sources_ranked = sorted(
information_sources,
key=lambda x: x['net_voi'],
reverse=True
)
for i, source in enumerate(sources_ranked, 1):
print(f"{i}. {source['name']}: "
f"VoI=¥{source['net_voi']:.1f}M, "
f"ROI={source['roi']:.1f}x")
4. 决策结果¶
信息投资决策¶
| 信息源 | 成本 | VoI | 净 VoI | ROI | 决策 |
|---|---|---|---|---|---|
| 威胁情报 | ¥2M | ¥6.0M | ¥4.0M | 2.0x | ✅ 投资 |
| 渗透测试 | ¥1M | ¥2.5M | ¥1.5M | 1.5x | ✅ 投资 |
| 风险评估 | ¥0.5M | ¥1.8M | ¥1.3M | 2.6x | ✅ 投资 |
总投资: ¥3.5M
总净 VoI: ¥6.8M
综合 ROI: 1.9 倍
决策质量提升¶
| 指标 | 无信息 | 有信息 | 改善 |
|---|---|---|---|
| 决策准确度 | 60% | 85% | +42% |
| 期望损失 | ¥3.5M | ¥1.8M | -49% |
| 后悔值 | ¥2.5M | ¥0.8M | -68% |
5. 关键洞察¶
VoI 影响因素¶
信息投资策略¶
6. 应用场景¶
场景 1: 是否投资威胁情报¶
问题:威胁情报订阅¥2M/年,是否值得?
分析:
- 无情报时最优决策损失:¥3.5M
- 有情报时期望损失:¥1.5M
- VoI: ¥2.0M
- 净 VoI: ¥2.0M - ¥2.0M = ¥0
结论:盈亏平衡,考虑战略价值后建议投资
场景 2: 多信息源组合¶
案例版本: v1.0 | 最后更新: 2026-06-03