决策论——贝叶斯决策的R和Python实现(二)

决策是理性人普遍从事的一种活动,也是极为重要的制胜手段。它的核心是对未来活动的多个目标及用途做出合理的选择,以寻求最满意的行动方案。决策具有以下特点:①面对新问题和新任务做出科学决定,属于创造性的管理活动;②必须对实际行为有直接的指导作用;③具有多因素、多目标、不确定性与方案的多样性,以及决策影响的时效性和一次性。风险型决策是指决策者对未来情况无法做出肯定的判断,但是可以预测不同自然状态发生的概率以及条件收益。这样决策者采取的每一种策略的预测结果都是用不同自然状态出现的概率表示的,因此不管决策者采取哪一种行动方案,都要冒一定的风险,它是决策理论的核心内容。

一、风险型决策树决策

1.1 决策的三大要素

(1)不可控因素——自然状态。它是不以人的意志为转移的客观因素,其集合又叫状态空间,记为
$$ Θ=\{θ_1,θ_2,…,θ_m\} = \{θ_і\} \quad i=1,2,…,m $$
Θ的元素\(θ_і\) 叫做状态变量。
(2)可控因素——决策方案。它是有待人们进行选择的主观因素,其集合叫做决策(或策略,或行为,或行动,或方案,或活动)空间,记为
$$A=\{a_1,a_2,…,a_n\} = \{a_j\} \quad j=1,2,…,n$$
A的元素\(a_j\) 叫做决策变量。
(3)在外界环境某种状态\(θ_і\) 发生时,决策方案\(a_j\) 实施后的损益值记为\(u_{ij}\),它显然是\(θ_і\)\(a_j\)的函数。
$$u_{ij} =u(θ_і,a_j)\quad i=1,2,…,m;j=1,2,…,n$$
三大要素的决策信息都汇集与集成在如下的损益表中,得到损益矩阵,以便展开决策分析。

1.2 决策树法

例1:为了适应市场的需要,某地提出了扩大电视机生产的两个方案。一个方案是建设大工厂,第二个方案是建设小工厂。建设大工厂需要投资600万元,可使用10年。销路好每年赢利200万元,销路不好则亏损40万元;建设小工厂投资280万元,如销路好,3年后扩建,扩建需要投资400万元,可使用7年,每年赢利190万元。不扩建则每年赢利80万元。如销路不好则每年赢利60万元。经过市场调查,市场销路好的概率为0.7,销路不好的概率为0.3,试用决策树法选出合理的决策方案。

计算各点的期望值:
点②:0.7×200×10+0.3×(-40)×10-600(投资)=680(万元)
点⑤:1.0×190×7-400=930(万元)
点⑥:1.0×80×7=560(万元)
比较决策点4的情况可以看到,由于点⑤(930万元)与点⑥(560万元)相比,点⑤的期望利润值较大,因此应采用扩建的方案,而舍弃不扩建的方案。
把点⑤的930万元移到点4来,可计算出点③的期望利润值:
点③:0.7×80×3+0.7×930+0.3×60×(3+7)-280 = 719(万元)
由于点③(719万元)与点②(680万元)相比,点③的期望利润值较大,因此取点③而舍点②。
相比之下,建设大工厂的方案不是最优方案,合理的策略应采用前3年建小工厂,如销路好,后7年进行扩建的方案。

二、风险型贝叶斯决策

例2:某工程项目按合同应在三个月内完工,其施工费用与工程完工期有关。假定天气是影响能否按期完工的决定因素,如果天气好,工程能按时完工,获利5万元;如果天气不好,不能按时完工,施工单位将被罚款1万元;若不施工就要付出窝工费2千元。根据过去的经验,在计划实施工期天气好的可能性为30%。为了更好地掌握天气情况,可以申请气象中心进行天气预报,并提供同一时期天气预报资料,但需要支付资料费800元。从提供的资料中可知,气象中心对好天气预报准确性为80%,对坏天气预报准确性为90%。问如何进行决策。
【解析】采用贝叶斯决策方法,根据已有资料做出决策损益表。

好天气\(θ_1\)(0.3) 坏天气\(θ_2\)(0.7) \(E(d_j)\)
\(d_1\) 施工 5 -1 0.8
\(d_2\) 不施工 -0.2 -0.2 -0.2

(1)先验分析
根据期望值准则选择施工方案有利,相应最大期望收益值\(EMV^*(先)\)=0.8。
(2)预验分析
完全信息的最大期望收益值: \(EPPI=0.3×5+0.7×(-0.2)=1.36\)(万元)
完全信息价值: \(EVPI=EPPI- EMV^*(先)=1.36-0.8=0.56\)(万元)
即,完全信息价值大于信息成本,请气象中心进行预报是合算的。
(3)后验分析
①补充信息:气象中心将提供预报此时期内两种天气状态\(x_1\)(好天气)、\(x_2\)(坏天气)将会出现哪一种状态。从气象中心提供的同期天气资料可得知条件概率(似然概率):

预报天气好\(x_1\) 预报天气坏\(x_2\)
实际天气好\(θ_1\) \(P(x_1/θ_1)\)=0.8 \(P(x_2/θ_1)\)=0.2
实际天气坏\(θ_2\) \(P(x_1/θ_2)\)=0.1 \(P(x_2/θ_2)\)=0.9

②计算后验概率分布:根据全概率公式和贝叶斯公式,计算后验概率。
预报天气好的概率\(P(x_1)\)=\(P(θ_1)P(x_1/θ_1)+P(θ_2)P(x_1/θ_2)=0.3*0.8+0.7*0.1=0.31\)
预报天气坏的概率\(P(x_2)\)=\(P(θ_1)P(x_2/θ_1)+P(θ_2)P(x_2/θ_2)=0.3*0.2+0.7*0.9=0.69\)

实际天气好\(θ_1\) 实际天气坏\(θ_2\)
预报天气好\(x_1\) \(P(θ_1/x_1)=\frac{P(θ_1)P(x_1/θ_1)}{P(x_1)}=\frac{0.3*0.8}{0.31}=0.77\) \(P(θ_2/x_1)=\frac{P(θ_2)P(x_1/θ_2)}{P(x_1)}=\frac{0.7*0.1}{0.31}=0.23\)
预报天气坏\(x_2\) \(P(θ_1/x_2)=\frac{P(θ_1)P(x_2/θ_1)}{P(x_2)}=\frac{0.3*0.2}{0.69}=0.09\) \(P(θ_2/x_2)=\frac{P(θ_2)P(x_2/θ_2)}{P(x_2)}=\frac{0.7*0.9}{0.69}=0.91\)

③后验决策:
若气象中心预报天气好(\(x_1\)),则每个方案的最大期望收益值
\(E(d1/x1)=0.77×5+0.23×(-1)=3.62\)
\(E(d2/x1)=0.77×(-0.2)+0.23×(-0.2)=-0.2\)
选择\(d_1\)即施工的方案,相应在预报\(x_1\)时的最大期望收益值\(E(x_1)=3.62\)
若气象中心预报天气不好(\(x_2\)),各方案的最大期望收益值
\(E(d1/x2)=0.09×5+0.91×(-1)=-0.46\)
\(E(d2/x2)=0.09×(-0.2)+0.91×(-0.2)=-0.2\)
选择\(d_2\)即不施工的方案,相应在预报\(x_2\)时的最大期望收益值\(E(x_2)=-0.2\)
④ 计算补充信息的价值:
得到天气预报的情况下,后验决策的最大期望收益值:

\[P(x_1)*E(x_1)+P(x_2)*E(x_2)=0.31×3.62+0.69×(-0.2)=0.9842 \]

则补充的信息价值为:\(EMV^*(后)- EMV^*(先)=0.9842-0.8=0.1842\)
补充信息价值大于信息费(800元),即这种费用是合算的。

三、贝叶斯决策R计算

例3:某企业设计出一种新产品,有两种方案可供选择:—是进行批量生产,二是出售专利。这种新产品投放市场,估计有3种可能:畅销、中等、滞销,这3种情况发生的可能性依次估计为:0.2,0.5和0.3。方案在各种情况下的利润及期望利润如下表。

畅销\(θ_1\)(0.2) 中等\(θ_2\)(0.5) 滞销\(θ_3\)(0.3) \(E(d_j)\)
\(d_1\) 批量生产 80 20 -5 24.5
\(d_2\) 出售专利 40 7 1 11.8

企业可以以1000元的成本委托专业市场调查机构调查该产品销售前景。若实际市场状况为畅销,则调查结果为畅销、中等和滞销的概率分别为0.9、0.06和0.04;若实际市场状况为中等,则调查结果为畅销、中等和滞销的概率分别为0.05、0.9和0.05;若实际市场状况为滞销,则调查结果为畅销、中等和滞销的概率分别为0.04、0.06和0.9。问:企业是否委托专业市场调查机构进行调查?
解:
(1)先验分析:
\(E(d_1)=0.2*80+0.5*20+0.3*(-5)=24.5\) (万元)
\(E(d_2)=40*0.2+7*0.5+1*0.3=11.8\)(万元)

# 定义数组 chu  
chu <- matrix(c(0.2, 0.5, 0.3, 80, 20, -5, 40, 7, 1), nrow=3, byrow=TRUE)  
# 计算 Ed1 和 Ed2  
Ed1 <- sum(chu[1, ] * chu[2, ])  
Ed2 <- sum(chu[1, ] * chu[3, ])  
# 计算 E1  
E1 <- max(Ed1, Ed2) 
print("E1:") 
print(E1)  

记验前分析的最大期望收益为\(E_1\),则\(E_1=\max\{E(d_1),E(d_2)\}=24.5\)(万元)
因此验前分析后的决策为:批量生产,\(E_1\)为不作市场调查的期望收益。

(2)后验概率:

#似然矩阵(条件概率)
# 定义似然矩阵(条件概率)  
likeli <- matrix(c(0.9, 0.05, 0.04, 0.06, 0.9, 0.06, 0.04, 0.05, 0.9), nrow=3, byrow=TRUE)   
posti <- likeli  
prior <- chu[1, ]  
# 计算 xpr  
xpr <- prior %*% likeli  
print(xpr)  
# 计算后验矩阵  
for (i in 1:ncol(likeli)) {  
  posti[1, i] <- likeli[1, i] * prior[1] / xpr[i]  
  posti[2, i] <- likeli[2, i] * prior[2] / xpr[i]  
  posti[3, i] <- likeli[3, i] * prior[3] / xpr[i]  
}  
print("\nPosterior Matrix:")  
print(posti)  
}
posti                #后验矩阵看列  

(3)用后验分布代替先验分布,计算各方案的期望收益

# 计算 Ed 矩阵  
Ed <- matrix(0, nrow=2, ncol=ncol(likeli))  
for (i in 1:ncol(posti)) {  
  Ed[1, i] <- sum(posti[, i] * chu[2, ])  
  Ed[2, i] <- sum(posti[, i] * chu[3, ])  
}  
print("Ed:")  
print(Ed)  
Ed   #第一行为在进行市场调查时d1的期望收益;第二行为在进行市场调查时d2的期望收益
          [,1]    [,2]       [,3]
[1,] 68.38710 20.5625 -0.6930693
[2,] 34.04147  7.6000  2.5247525

当市场调查结果为畅销时(看上面结果第1列),最优方案是\(d_1\),即批量生产;当市场调查结果为中等时(看上面结果第2列),最优方案是:\(d_1\),即批量生产;当市场调查结果为滞销时(看上面结果第3列),最优方案是:\(d_2\),即出售专利。通过调查,该企业可获得的收益期望值为

# 计算 E2  
E2 <- sum(xpr * apply(Ed, 2, max))  
print("E2:") 
print(E2)

通过调查,该企业收益期望值能增加

\[E_2-E_1=25.465-24.5=0.965(万元) \]

因此,在调查费用不超过0.965万元的情况下,应进行市场调查。

(4)验后分析
本题中调查费用1000<9650,所以应该进行市场调查。当市场调查结果为畅销时,选择方案1,即批量生产;当市场调查结果为中等时时,选择方案1,即批量生产;当市场调查结果为滞销时,选择方案2,即出售专利。

#完整计算程序
#---------------------------
# (1) 先验分析
#---------------------------

# 定义:状态概率与收益矩阵
# 状态:畅销(θ1=0.2), 中等(θ2=0.5), 滞销(θ3=0.3)
# 决策方案:
# d1:批量生产;d2:出售专利
# 单位:万元

# 构造数据矩阵
chu <- matrix(c(0.2, 0.5, 0.3,    # 概率(先验分布)
                80, 20, -5,       # 批量生产收益
                40, 7, 1),        # 出售专利收益
              nrow = 3, byrow = TRUE)

# 提取各部分
prior <- chu[1, ]     # 先验概率
payoff_d1 <- chu[2, ]  # 批量生产收益
payoff_d2 <- chu[3, ]  # 出售专利收益

# 计算期望收益
Ed1 <- sum(prior * payoff_d1)
Ed2 <- sum(prior * payoff_d2)

# 输出验前分析结果
cat("验前分析结果:\n")
cat("E(d1) =", Ed1, "万元\n")
cat("E(d2) =", Ed2, "万元\n")

# 不调查时最大期望收益 E1
E1 <- max(Ed1, Ed2)
cat("不作市场调查的最大期望收益 E1 =", E1, "万元\n\n")

#---------------------------
# (2) 后验概率计算
#---------------------------

# 定义似然矩阵(条件概率)
# 行:实际状态 θ1, θ2, θ3
# 列:调查结果 R1(畅销), R2(中等), R3(滞销)
likeli <- matrix(c(
  0.9,  0.06, 0.04,   # 实际畅销
  0.05, 0.9,  0.05,   # 实际中等
  0.04, 0.06, 0.9     # 实际滞销
), nrow = 3, byrow = TRUE)

# 计算边际概率 P(R)
xpr <- prior %*% likeli
colnames(likeli) <- c("R1畅销", "R2中等", "R3滞销")
rownames(likeli) <- c("θ1畅销", "θ2中等", "θ3滞销")

cat("调查结果的边际概率 P(R):\n")
print(xpr)
cat("\n")

# 计算后验概率矩阵 P(θ|R)
posti <- likeli
for (i in 1:ncol(likeli)) {
  posti[1, i] <- likeli[1, i] * prior[1] / xpr[i]
  posti[2, i] <- likeli[2, i] * prior[2] / xpr[i]
  posti[3, i] <- likeli[3, i] * prior[3] / xpr[i]
}

colnames(posti) <- c("R1畅销", "R2中等", "R3滞销")
rownames(posti) <- c("θ1畅销", "θ2中等", "θ3滞销")

cat("后验概率矩阵 P(θ|R):\n")
print(round(posti, 4))
cat("\n")

#---------------------------
# (3) 计算各调查结果下的期望收益
#---------------------------

# 初始化收益矩阵
Ed <- matrix(0, nrow = 2, ncol = ncol(posti))

# 计算在每种调查结果下的期望收益
for (i in 1:ncol(posti)) {
  Ed[1, i] <- sum(posti[, i] * payoff_d1)  # 批量生产
  Ed[2, i] <- sum(posti[, i] * payoff_d2)  # 出售专利
}

rownames(Ed) <- c("d1批量生产", "d2出售专利")
colnames(Ed) <- c("R1畅销", "R2中等", "R3滞销")

cat("各调查结果下的期望收益 Ed:\n")
print(round(Ed, 4))
cat("\n")

#---------------------------
# (4) 计算进行市场调查的总体期望收益
#---------------------------

# 对每种调查结果,选择收益最大的决策
E2 <- sum(xpr * apply(Ed, 2, max))
cat("进行市场调查的总体期望收益 E2 =", E2, "万元\n")

# 比较是否值得调查
gain <- E2 - E1
cat("进行市场调查的期望增益 =", round(gain, 3), "万元\n\n")

#---------------------------
# (5) 决策结论
#---------------------------

if (gain > 1.0) {
  cat("结论:应进行市场调查(增益较大)。\n")
} else if (gain > 0) {
  cat("结论:在调查费用低于", round(gain * 10000), "元时,应进行市场调查。\n")
} else {
  cat("结论:不应进行市场调查。\n")
}

# 输出调查结果对应最优方案
best_plan <- apply(Ed, 2, which.max)
decision <- ifelse(best_plan == 1, "批量生产", "出售专利")

cat("\n当调查结果为R1畅销时:选择", decision[1], "\n")
cat("当调查结果为R2中等时:选择", decision[2], "\n")
cat("当调查结果为R3滞销时:选择", decision[3], "\n")

四、贝叶斯决策Python计算

#完整的Python计算程序
# -*- coding: utf-8 -*-
import numpy as np

#----------------------------------------
# (1) 先验分析
#----------------------------------------
chu = np.array([
    [0.2, 0.5, 0.3],   # 状态概率(畅销、中等、滞销)
    [80, 20, -5],      # d1 批量生产的收益
    [40, 7, 1]         # d2 出售专利的收益
])

# 计算各方案期望收益
Ed1 = np.dot(chu[0, :], chu[1, :])
Ed2 = np.dot(chu[0, :], chu[2, :])
E1 = max(Ed1, Ed2)

print("E(d1) =", Ed1)
print("E(d2) =", Ed2)
print("不作市场调查的最大期望收益 E1 =", E1)
print("-" * 50)

#----------------------------------------
# (2) 似然矩阵(条件概率)
#----------------------------------------
# 行为实际状态 θ1, θ2, θ3;列为调查结果 R1, R2, R3
likeli = np.array([
    [0.9, 0.06, 0.04],  # 实际畅销
    [0.05, 0.9, 0.05],  # 实际中等
    [0.04, 0.06, 0.9]   # 实际滞销
])

#----------------------------------------
# (3) 计算后验概率
#----------------------------------------
prior = chu[0, :]
xpr = prior @ likeli   # 调查结果的边际概率 P(R)
print("P(R) =", np.round(xpr, 5))

posti = likeli.copy()  # 必须使用copy,防止修改原矩阵

for i in range(likeli.shape[1]):
    posti[0, i] = likeli[0, i] * prior[0] / xpr[i]
    posti[1, i] = likeli[1, i] * prior[1] / xpr[i]
    posti[2, i] = likeli[2, i] * prior[2] / xpr[i]

print("\nPosterior Matrix P(θ|R):")
print(np.round(posti, 4))
print("-" * 50)

#----------------------------------------
# (4) 计算在各调查结果下的期望收益
#----------------------------------------
Ed = np.zeros((2, likeli.shape[1]))
for i in range(posti.shape[1]):
    Ed[0, i] = np.dot(posti[:, i], chu[1, :])  # d1批量生产
    Ed[1, i] = np.dot(posti[:, i], chu[2, :])  # d2出售专利

print("各调查结果下的期望收益 Ed:")
print(np.round(Ed, 4))
print("-" * 50)

#----------------------------------------
# (5) 计算进行市场调查的期望收益
#----------------------------------------
E2 = np.dot(xpr, np.max(Ed, axis=0))
gain = E2 - E1

print(f"进行市场调查的总体期望收益 E2 = {E2:.3f} 万元")
print(f"期望增益 E2 - E1 = {gain:.3f} 万元")
print("-" * 50)

#----------------------------------------
# (6) 决策结论
#----------------------------------------
if gain * 10000 > 1000:
    print("结论:应进行市场调查(调查成本1000元 < 期望增益9650元)。")
else:
    print("结论:不建议进行市场调查。")

# 输出每种调查结果下最优决策
decision = np.where(Ed[0, :] > Ed[1, :], "批量生产", "出售专利")
print("\n当调查结果为畅销时:", decision[0])
print("当调查结果为中等时:", decision[1])
print("当调查结果为滞销时:", decision[2])

总结

风险型决策方法不同于确定型决策方法,应用风险型决策方法必须具备以下条件:①具有决策者期望达到的明确目标;②存在决策者可以选择的两个以上的可行备选方案;③存在着决策者无法控制的两种以上的自然状态(如气候变化、市场行情、经济发展动向等);④不同行动方案在不同自然状态下的收益值或损失值(简称损益值)可以计算出来;⑤决策者能估计出不同的自然状态发生个概率。风险型决策与非确定型决策比较,两者都面临着两种或两种以上的自然状态,不同的是前者掌握了它们的出现概率而后者对即将出现的自然状态、概率一无所知。解决风险型决策问题的方法通常有两种:决策树法和贝叶斯决策法,鉴于决策树法在管理学等课程中都介绍过,这里要重点理解贝叶斯决策方法的精髓——后验概率的意义。贝叶斯决策就是在不完全情报下,对部分未知的状态用主观概率估计,然后用贝叶斯公式对发生概率进行修正,最后再利用期望值和修正概率做出最优决策。

参考资料

  1. 贝叶斯决策的经典例题练习
  2. 贝叶斯决策
  3. 风险型决策与贝叶斯决策
posted @ 2023-04-10 22:10  郝hai  阅读(992)  评论(0)    收藏  举报