一、贝叶斯方法介绍
1.不确定表示
在主观贝叶斯方法中,知识是用产生式表示的,其形式为:
IF E THEN (LS,LN) H
其中(LS,LN)用来表示该知识的知识强度,LS(充分性度量)和LN(必要性度量)的表示形式分别为:
LS 和 LN 的性质:
(1)LS和LN的取值范围均为[0,+∞)。
(2) LS>1: 表明证据 E 是对 H 有利的证据。
LN>1: 表明证据¬E 是对 H 有利的证据。
所以:不能出现 LS>1 且 LN>1 的取值。
(3) LS<1: 表明证据 E 是对 H 不利的证据。
LN<1:表明证据¬E 是对 H 不利的证据。
所以:不能出现 LS<1 且 LN<1 的取值,一般情况下,取 LS>1, LN<1。
2.不确定性的传递算法
根据E的概率P(E)及LS和LN的值,把H的先验概率P(H)或先验几率O(H)更新为后验概率或后验几率。由于一条知识所对应的证据可能为真,也可能为假,还可能既非为真又非为假,因此,把H的先验概率或先验几率更新为后验概率或后验几率时,需要根据证据的不同情况去计算其后验概率或几率。
(1)证据肯定为真
当证据E肯定为真时,P(E)=P(E|S)=1。如果把H的先验概率P(H)更新为后验概率P(H|E),则可以得到概率和几率的对应关系:
(2)证据肯定为假
当证据E肯定为假时,P(E)=P(E|S)=0,P(﹁E)=1。 把先验概率P(H)更新为后验概率P(H|﹁E),则可以得到概率和几率的对应关系:
(3)证据既非为真又非为假
当证据既非真假时,需要使用杜达等人给出的公式:P(H|E)=P(H|E)×P(E|S)+P(H|﹁E)×P(﹁E|S)。
下面分四种情况讨论:
1). P(E|S)=1, 当P(E|S)=1时,P(﹁E|S)=0。由之前的关系式和全概率公式可得:
2). P(E|S)=0,当P(E|S)=0时,P(﹁E|S)=1。由全概率式可得:
3). P(E|S)=P(E),当P(E|S)=P(E)时,表示E与S无关。根据全概率公式可得:
4). P(E/S)为其它值,上面已经得到了P(E|S)的3个特殊值:0,P(E),1;它们分别对应的3个值为P(H|﹁E),P(H),P(H|E)。由此构造的分段线性插值函数为:
二、分段线性插值函数绘制
1.代码
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
//graphics.h属于easyx外部库,在cmakelist导入即可
float ls,ln,ph,pe,phs,pes,phne,phe;
//ls表示充分性度量,ln必要性度量,取值0到无穷大
//ph表示h的先验概率P(H),pe表示概率P(E)
//phe 表示P(H|E),phs表示后验概率P(H|E)
//pes表示P(E|S) ,phns表示P(H|-S)
int main()
{
printf("please input the value:ls,ln,ph,pe:");
scanf("%f/n",&ls);
scanf("%f/n",&ln);
scanf("%f/n",&ph);
scanf("%f/n",&pe);
initgraph(1000, 600); //设定窗口
setlinecolor(WHITE); //设定线的颜色
setlinestyle(PS_SOLID,3); //设定线的粗细
line(800,500,100,500); //绘画x轴,长度700
line(100,500,100,100); //绘画y轴,高度400
//绘画(pes>=0)&&(pes<=pe)区间线段,根据特殊点(0,phne)和(pe,ph)画
phs=phne=(ln*ph)/((ln-1)*ph+1);
printf("phs=phne= %f",phs);
setlinecolor(BLUE); //设定线的颜色
setlinestyle(PS_SOLID,2); //设定线的粗细
//画线时记得将点转换到坐标系中
line(0+100,(1-phne)*(500-100)+100,pe*(800-100)+100,(1-ph)*(500-100)+100);
//绘画(pes>=pe)&&(pes<=1)区间线段,根据特殊点(pe,ph)和(1,phe)
phs=phe=(ls*ph)/((ls-1)*ph+1);
printf("phs=phe= %f",phs);
setlinecolor(GREEN); //设定线的颜色
setlinestyle(PS_SOLID,2); //设定线的粗细
//画线时记得将点转换到坐标系中
line(pe*(800-100)+100,(1-ph)*(500-100)+100,1*(800-100)+100,(1-phe)*(500-100)+100);
_getch(); // 按任意键继续
closegraph(); // 关闭绘图窗口
return 0;
}
2.运行结果
参考文献
人工智能(尚文倩)清华大学出版社