主观贝叶斯实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主观贝叶斯实验报告
学生姓名 程战战
专业/班级 计算机91
学 号 09055006
所在学院 电信学院
指导教师 鲍军鹏
提交日期 2012/4/26
根据初始证据E 的概率P (E )及LS 、LN 的值,把H 的先验概率P (H )更新为后验概率P (H/E )或者P(H/!E)。在证据不确定的情况下,用户观察到的证据具有不确定性,即0
运用贝叶斯公式进行不确定性推理,必然受到贝叶斯公式运用条件的限制。事实上,事件之间彼此独立的要求很苛刻的,在现实中往往不能保证这个条件被严格满足。而且在贝叶斯公式中还要求事先知道已知结论时前件的条件概率和结论的先验概率。要获得这些概率,就必须做一些统计工作。然而,在实践中未必能进行足够的重复实验来获得充分的观察数据。再者,用贝叶斯公式得到的后验概率实际上是对先验概率的修正。假如先验概率偏差比较大,那么必然会对后验概率造成不良影响。所以在人工智能实践中,为了应用简便和省事,往往用主观决定代替客观观察,用主观指定的数值来代替统计概率。主观贝叶斯方法就是这种思想的一种体现。主观贝叶斯方法是由杜达等人于1976年在贝叶斯公式基础上进行改进而提出的一种不确定性推理模型。
通过下述插值函数(称EH 公式或UED 公式)求P(H/S)的值:
当证据为初始证据时,用下述CP 公式计算:
⎪⎪⎩
⎪⎪⎨⎧≤≤---+<≤⌝-+⌝=1)S /E (P )E (P ))E (P )S /E (P (*)E (P 1)H (P )E /H (P )H (P )E (P )S /E (P 0)S /E (P *)E (P )E /H (P )H (P )E /H (P )S /H (P 当当⎪⎩
⎪⎨⎧≤-+≤+⌝-+⌝=)S /E (C 0)S /E (C *5)H (P )E /H (P )H (P 0)S /E (C )15)S /E (C (*))E /H (P )H (P ()E /H (P )S /H (P 当当
在用EH公式时执行结果
在用CP公式时执行结果
4 实验源代码
import java.util.Scanner;
public class Bayes {
public float ph;
public float pe;
public float pes;
public float ls;
public float ln;
public float ces;//该六项为领域专家给出的值
public float peh;
public float p_eh;
public float phe;
public float ph_e;//该四项为中间变量
public float phs;//最终结果
public Bayes() {//构造函数进行变量初始化
ph = 0;
pe = 0;
pes = 0;
ls = 0;
ln = 0;
ces = 0;
peh = 0;
p_eh = 0;
phe = 0;
ph_e = 0;
phs = 0;
}
public void set() {
peh = ls * (1 - ln) / (ls - ln);
p_eh = 1 - peh;
ph_e = p_eh * ph / (1 - pe);
if (ph_e > 1) {
ph_e = 1;
}
peh = ls * (1 - ln) / (ls - ln);
phe = peh * ph / pe;
if (phe > 1) {
phe = 1;
}
}
public int eh() {//采用eh方法计算bayes不确定性
if (0 <= pes && pes <= pe) {
phs = ph_e + (ph - ph_e) * pes / pe;
return 1;
}
else if (pe <= pes && pes <= 1) {
phs = ph + (phe - ph) * (pes - pe) / (1 - pe);
return 1;
}
else {
return -1;
}
}
public int cp() {//采用cp方法计算bayes不确定性
if (ces <= 0) {
phs = ph_e + (ph - ph_e) * (ces / 5 + 1);
return 1;
}
else if (ces > 0) {
phs = ph + (phe - ph) * ces / 5;
return 1;
}
else {
return -1;
}
}
public static void main(String[] args) {
System.out.println("要使用bayes计算不确定性吗?输入1选择eh公式计算,输入2选择ces公式计算");
System.out.println("注意:0<=P(H),P(E),P(E/S)<=1LS,LN>=0并且不能同时大于1或者小于1C(E/S)是取[-5,5]之间的整数");
Scanner sc = new Scanner(System.in);
int flag = sc.nextInt();
Bayes baye = new Bayes();
System.out.println("请输入ph");
baye.ph = sc.nextFloat();
System.out.println("请输入pe");
baye.pe = sc.nextFloat();
System.out.println("请输入ls");
baye.ls = sc.nextFloat();
System.out.println("请输入ln");
baye.ln = sc.nextFloat();
if (flag == 1) {
System.out.println("请输入pes");
baye.pes = sc.nextFloat();
baye.set();
baye.eh();
}
else {
System.out.println("请输入ces");
baye.ces = sc.nextFloat();
baye.set();
baye.cp();
}