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

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

一、风险型决策树决策

1.1 决策的三大要素

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

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(dj)
d1 施工 5 -1 0.8
d2 不施工 -0.2 -0.2 -0.2

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

预报天气好x1 预报天气坏x2
实际天气好θ1 P(x1/θ1=0.8 P(x2/θ1=0.2
实际天气坏θ2 P(x1/θ2=0.1 P(x2/θ2=0.9

②计算后验概率分布:根据全概率公式和贝叶斯公式,计算后验概率。
预报天气好的概率P(x1)=P(θ1)P(x1/θ1)+P(θ2)P(x1/θ2)=0.30.8+0.70.1=0.31
预报天气坏的概率P(x2)=P(θ1)P(x2/θ1)+P(θ2)P(x2/θ2)=0.30.2+0.70.9=0.69

实际天气好θ1 实际天气坏θ2
预报天气好x1 P(θ1/x1=P(θ1)P(x1/θ1)P(x1)=0.30.80.31=0.77 P(θ2/x1=P(θ2)P(x1/θ2)P(x1)=0.70.10.31=0.23
预报天气坏x2 P(θ1/x2=P(θ1)P(x2/θ1)P(x2)=0.30.20.69=0.09 P(θ2/x2=P(θ2)P(x2/θ2)P(x2)=0.70.90.69=0.91

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

P(x1)E(x1)+P(x2)E(x2)=0.31×3.62+0.69×0.2=0.9842

则补充的信息价值为:EMV()EMV()=0.98420.8=0.1842
补充信息价值大于信息费(800元),即这种费用是合算的。

三、贝叶斯决策R计算

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

畅销θ1(0.2) 中等θ2(0.5) 滞销θ3(0.3) E(dj)
d1 批量生产 80 20 -5 24.5
d2 出售专利 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(d1)=0.280+0.520+0.3(5)=24.5 (万元)
E(d2)=400.2+70.5+10.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)  

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

(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列),最优方案是d1,即批量生产;当市场调查结果为中等时(看上面结果第2列),最优方案是:d1,即批量生产;当市场调查结果为滞销时(看上面结果第3列),最优方案是:d2,即出售专利。通过调查,该企业可获得的收益期望值为

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

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

E2E1=25.46524.5=0.965

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

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

#完整的Python计算程序
import numpy as np
chu = np.array([[0.2, 0.5, 0.3], [80, 20, -5], [40, 7, 1]])
Ed1 = np.dot(chu[0, :], chu[1, :])
Ed2 = np.dot(chu[0, :], chu[2, :])
E1 = max(Ed1, Ed2)
print(E1)
#似然矩阵(条件概率)
likeli = np.array([[0.9, 0.05, 0.04], [0.06, 0.9, 0.06], [0.04, 0.05, 0.9]])
posti = likeli
prior = chu[0, :]
xpr = prior @ likeli
print(xpr)
# Calculate posterior matrix
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:")
print(posti)
# Calculate Ed
Ed = np.zeros((2, likeli.shape[1]))
for i in range(posti.shape[1]):
    Ed[0, i] = np.dot(posti[:, i], chu[1, :])
    Ed[1, i] = np.dot(posti[:, i], chu[2, :])
print("Ed:")
print(Ed)
# Calculate E2
E2 = np.dot(xpr, np.array([max(Ed[:, 0]), max(Ed[:, 1]),max(Ed[:, 2])]))
print("E2:", E2)

总结

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

参考资料

  1. 贝叶斯决策的经典例题练习
  2. 贝叶斯决策
  3. 风险型决策与贝叶斯决策
posted @   郝hai  阅读(820)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示