基于主观Bayes方法的不确定推理算法实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于主观Bayes方法的不确定推理算法实现

摘要:不确定推理是指建立在不确定性知识和论据基础上的推理。本文设计了基于主观Bayes方法的不确定性推理算法,通过实验结果比较了结论不确定的合成算法与更新算法的一致性,实现了不确定推理问题求解的自动化。

关键词:不确定推理;主观Bayes方法;合成与更新算法;求解自动化

1.引言

不确定性推理是指建立在不确定性知识和论据基础上的推理,其实质是一种从不确定的初始证据出发,通过运用不确定性知识,得出具有一定程度的不确定性但却又是合理的结论的过程[1]。在现在社会中,采用不确定性推理是客观问题的需求。在很多情况下,解决问题所需要的知识往往是不完备、不精确的,知识的描述也是很模糊的,而且在现实世界中,导致统一结果的原因可能是多种多样的,解决问题的方案也可能是多种多样的,这些条件都表示了我们现实生活中存在太多的不确定性问题。关于不确定性推理方法有很多种,但较为著名的方法主要有可信度方法、主观Bayes方法和证据理论方法[4,5]等。本文将主观Bayes方法设计了详细的算法,实现了结论不确定的合成算法与更新算法,并通过实验结果比较了其一致性,探索自动化求解这类不确定性推理问题的实现方法。

2.主观Bayes方法

主观Bayes方法又称主观概率论,是杜达(R.O.Duda)等人在1976年提出的,是一种不确定性推理模型,又称为主观概率论。成功的应用在了地矿勘探专家系统PROSPECTOR中。这一方法在文献[2,3]有详细的描述。

(1) 结论不确定性的合成算法思想:

(2) 假设有n条知识都支持同一个结论H,而且这些知识都分别是相互独立的证据Ei(i=1,2,…,n),且每个证据对应的观察分别是Si(i=1,2,…,n)。在此情况下求P(H/S1,S2,…,Sn)的后验概率的方法为:先分别对每条知识求出H的后验几率,然后在用如下公式求出所有观察下的后验几率:

(2) 结论不确定性p3 结论不确定性的算法设计

在主观Bayes方法中涉及到了知识的充分性量度LS和必要性量度LN,因此,在设计算法中,我将知识作为一个对象处理,且知识包含两个属性(LS,LN),即充分性量度LS和必要性量度LN。对于推理过程,如图1所示。

求后验几率的算法设计:

public static double O(double p, ClassE e) {

if (e.getLs() > 1) { // 证据肯定出现的情况下

return e.getLs() * O(p);

} else if (e.getLs() == 1) {

return O(p);

} else if (e.getLs() < 1) { // 证据肯定不出现的情况下

return e.getLn() * O(p);

} else { // 此种情况不存在

return -1;

}

}

算法中,ClassE类包含LS和LN属性,度量产生式规则的不确定性。参数p表示结论H的先验概率P(H),参数e表示单条知识ClassE类的对象,算法结果返回证据E出现时将结论H的先验概率,P(H)更新为后验几率O(H/E),在算法中还应用到了将概率转化为几率的算法,此算法有概率与几率的关系可设计一重载方法为:

public static double O(double p) {

return p / (1 - p);

}

算法中参数p表示概率,算法结果返回几率函数值。

3.1 结论不确定性的合成算法

关于结论不确定性的合成算法,可先对每条知识分别求出后验几率,再由公式(1) (2)进行算法设计:

public static double nP(List<E> n, double p) {

double p1 = O(p);

if (n.size() > 1) {

double on = 1.0; // 表示综合每条知识的后验几率初始值

for (int i = 0; i < n.size(); i++) {

on *= O(p1, n.get(i)) / O(p1);

}

on = on * O(p1);

return on / (1 + on);

} else if (n.size() == 1) {

return P(p1, n.get(0));

} else {

return -1;

}

}

算法中参数n 表示n条知识都支持相同的结论的集合,参数p 表示知识对结论H的先验概率P(H),参数e表示一条知识对象,算法结果综合每条知识的合成算法的后验概率值。

3.2 结论不确定性的更新算法

结论不确定性的更新算法思想,设计流程图如图2。

详细算法代码设计如下:

public static double rP(List<E> n, double p) {

//结论不确定性的更新算法

if (n.size() > 1) {

double rp = 0.0;

for (int i = 1; i < n.size(); i++) {

rp = P(P(p, n.get(0)), n.get(i));

}

return rp;

} else if (n.size() == 1) {

return P(p, n.get(0));

} else {

return -1;

}

}

算法中参数n表示n条知识都支持相同的结论的集合,参数p表示知识对结论H的先验概率P(H),参数e表示一条知识对象,算法结果返回更新后的后验概率值。

4 主观Bayes方法算法求解结果

应用上述Java算法,首先读取文本文件“Reliability_knowledge_data.txt”的数据,文本文件如图3所示。

相关文档
最新文档