本文主要是介绍关于图中节点间的概率求解问题-2,未完探究中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近在贝叶斯网络上遇到了难题,简单而言就是怎么求两个节点间的概率。
此问题的前提是,节点为大节点,内有若干特征,节点间的连接(或称为连线)实际为特征之间的连线。且两节点不是孤立的,而是在一个网络(或称一个图)中。
现在的方法是:
利用已知的特征之间的边,来分别计算边的条数,直接用条数来计算概率。
example:
求条件概率P(A|B),A内有 a0,a1,a2;B内有b0,b1;
现求节点B“发生”的情况下节点A发生的概率,用公式推导P(A|B)=P(AB)/P(B);或者直接由实际出发,
可得出:
分子是AB间特征的连线条数,分母是B自己特征的全部连线条数,注意B除了与A点的特征相连外还与其他点相连。
由上述可用连线边数来求得概率。
- - - - - - - - - - - - - - - - - - -
但是,现有一公式如图,
并不是用的节点间数边数的方法,而是进而细化到节点内的特征之间,最底层是数特征的边数,求得是P(ai|bj)的概率,概率最后加和,看似很完美。
但有个致命问题,P(ai|bj)的每一个都是概率值,0~1,对若干项加和后极有可能大于1 !!
说明这个公式是有问题的,目前的解决办法是:求加权平均
这个平均不是所有特征数的和,而是仅仅有概率的数量,即P(ai|bj)=0时,不算入其内。
目前暂且这样处理。
- - - - - - - - - - - - - -
以上两种已java编程实现,结果有较大差异,不过上述思路大体正确,先记于此,未完待续。
这篇关于关于图中节点间的概率求解问题-2,未完探究中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!