『壹』 如何用matlab的BNT软建立一个贝叶斯网络及条件概率表
对上述信息建立贝叶斯网络,代码如下
[plain]view plainprint?
N=8;
dag=zeros(N,N);
A=1;S=2;T=3;L=4;B=5;E=6;X=7;D=8;
dag(A,T)=1;
dag(S,[LB])=1;
dag([TL],E)=1;
dag(B,D)=1;
dag(E,[XD])=1;
discrete_nodes=1:N;
node_sizes=2*ones(1,N);
bnet=mk_bnet(dag,node_sizes,'names',{'A','S','T','L','B','E','X','D'},'discrete',discrete_nodes);
bnet.CPD{A}=tabular_CPD(bnet,A,[0.99,0.01]);
bnet.CPD{S}=tabular_CPD(bnet,S,[0.5,0.5]);
bnet.CPD{T}=tabular_CPD(bnet,T,[0.99,0.95,0.01,0.05]);
bnet.CPD{L}=tabular_CPD(bnet,L,[0.99,0.9,0.01,0.1]);
bnet.CPD{B}=tabular_CPD(bnet,B,[0.7,0.4,0.3,0.6]);
bnet.CPD{E}=tabular_CPD(bnet,E,[1,0,0,0,0,1,1,1]);
bnet.CPD{X}=tabular_CPD(bnet,X,[0.95,0.02,0.05,0.98]);
bnet.CPD{D}=tabular_CPD(bnet,D,[0.9,0.2,0.3,0.1,0.1,0.8,0.7,0.9]);
draw_graph(dag)
说明:有N=8个节点,建立有向无环图dag,并且这些点的值是离散的,这里1=False 2=True,node_sizes给出了所有状态
mk_bnet中names后的{}里面给出了各个节点的别名
利用tabular_CPD设置各个变量的边缘概率,对于A和S,定义顺序是False True;对于渗敬T、L和B这类,顺序是FF FT TF TT;对于D这类,顺序是FFF FFT FTF FTT TFF TFT TTF TTT
简单检查下A的概率
[plain]view plainprint?
engine=jtree_inf_engine(bnet);
evidence=cell(1,N);
[engine,loglik]=enter_evidence(engine,evidence);
m=marginal_nodes(engine,A);
m.T()
现在可以给定任意条件,举改然后计算概率了。
[plain]view plainprint?
例如要计算任意组合条件下,正喊判个体分别得Tub、lungcancer和bronchitis的概率。下面代码计算了P(T=True|A=False,S=True,X=True,D=False)的概率
[plain]view plainprint?
engine=jtree_inf_engine(bnet);
evidence=cell(1,N);
evidence{A}=1;
evidence{S}=2;
evidence{X}=2;
evidence{D}=1;
[engine,loglik]=enter_evidence(engine,evidence);
m=marginal_nodes(engine,T);
m.T(2)
『贰』 贝叶斯网络的条件概率表怎么构建
这个尺腔条件概率本汪隐是父节点联合分布下的条件概率困困厅,所以应该是四种状态
『叁』 贝叶斯决策论及贝叶斯网络
对于一个数据进行分类,那么数据的属性信息称为x,如果知道后验概率的情况下即能得到确定x的情况下分类为ci的概率。这时我们还需要一个损失的权值,λij称为i错判为j的损失(λii为0,一般λij都相等=1但具体情况可以具体分配),由前边得到的后验概率来乘上这个λ的参数这就叫做条件风险(conditional risk)。
那么我们可以设计一个映射关系h,从x->c可以将结果带入条件风险,求整体风险最小。
但是其中后验概率很难在现实任务中取到,所以引入机器学习的目标的就是去训练这样一个后验概率(从大量的样本数据中)当然也有两种方式:
可以看到前边判别类别的决策树,bp,svm都是判别式模型。(从这里看出我们的终极目标还是去计算 p(c|x) ,符合现实的要求。)
根据贝叶斯定理,要求联合概率分布,可以通过 p(c )*p(x|c)/p(x) 来得到,前者是类先验概率,后者是类条件概率,或者称似然。
p(x) 是用于归一化的证据因子,对于给定的样本x,证据因子和类标记无关。(证据因子的存在知识为了保证各类别的后验概率的总和为1,所以在固定x的情况下这一项相当于常数,在比较时不做考虑)
但如果x样本的属性很多或者是一个连续值,那么样本个数是不可能完全模拟到所有的取值的,更不用说还要去计算他们出现的联合概率了,也就是说得到的 p(x|c) 会有很多零值。
那么无法通过样本来进行模拟分布,可以用mle(极大似然估计)的方法,通过设定一个通用的分布函数(如:正态分布,不一定是正态,所以这个假设存在一定误差,或者说我们在指定假设分布形式时需要参考一定的先验知识(也就是我们训练数据的风格))然后通过训练分布中的参数来让极大似然最大。
1.朴素贝叶斯分类器:(naïve bayes classification)
条件:
将所有的属性假设为相互独立也就是每个属性独立地对分类结汪汪毕果发生影响,困芹这个想法很天真,很梦幻。
当然有了这个假设就很好计算了,计算联合分布的过程:通过训练集D来得到类先验概率然后再得到类条件概率。对于离散的取值数据量够可以直接用取值在训练集D中的概率直接估计,对于离散取值过多,或者是连续取值的情况可以用最大似然来做估计。
然后通过计算和比较 p(c=1,x) 和 p(c=2,x) 的大小,来或者最后输出c是判为1还是2。
因为离散取值会因为在数据集中找不到而变成概率为0,这样会影响所有的判断,这样就可以通过一个平滑处理(如:拉普拉斯修正)来将其修正为 (Dci+1)/(Dc+Nx) ,Dci为类别为c,x属性取值为i的个数,Nx为属性x的可能的取值数。同理对于类先验也要进行平滑处理。(这样的平滑操作算是一种先验,而且随着样本集增大影响逐渐减少的趋向于真实值。)
2.半朴素贝叶斯分类器(semi-naïve bayes classification)
条件:
既然所有属性都假设为相互独立过于天真,那么我们假设一种独依赖,也就是假设每一个属性在类别之外最多仅依赖于一个其他属性。我们称这种假设为semi-naïve 的假设。
那么这样的独依赖也会有一些设计的方式:
1.都依赖于一个相同的父属性(SPODE);
2.随机依赖于除自己以外的其他的属性,但要让生成的树达到最大的权值(权值由两个属性之间的条件互信息来决定),构成最大带权生成树(TAN)。
但是因为有无环的性质,所以无论哪一种最后一陵培定会有一个属性是没有父依赖的。
3.非朴素贝叶斯--贝叶斯网络:(放弃之前“天真”的假设)
条件:
前边半朴素通过图连接来刻画属性之间的依赖关系,那么同样贝叶斯网络也在用这种有向无环图来刻画属性之间的依赖关系,并用条件概率表(CPT,conditional probability table)作为边的参数也就是(整个贝叶斯网络的参数)主要是子属性和父属性相对应的条件概率。而一个属性他的父属性个数没有任何限制。
问题:
但这样不如上一个半朴素贝叶斯结构基本固定直接遍历搜索空间也不会很大,可以用最大边的方式构建贝叶斯网络,也就是说这样的网络结构很难去构建和生成,主要是用似然损失+构造损失(参数个数*参数的精度)作为损失函数来进行优化,但是这直接求解是一个NP难的问题,这样就有两种方式第一种:贪心法,通过初始化一个网络结构,然后每次调整一个边(增加,删除或调整方向)使得loss变化最大,直到最后评分函数无法在降低。(当然这样的一个初始化网络结构就会变得很重要)第二种:通过给网络结构添加约束,比如将网络结构限定为树形结构等。
方法:
除了之前我们用作的分类问题,还可以做扩展到一个推断的问题,比如蒙着眼摸出西瓜的根蒂,形状,大小,能推断出它的色泽到底是青绿还是黄绿,是好瓜还坏,甜度如何等等。而且还可以直接精确计算出后验概率,但是当网络结点很多,连接又很稠密,而且查询的属性又含有依赖关系的时候,在短时间内计算出准确的结果会很难。所以我们通过借助近似的方式推断结果。(我们只想知道哪种可能性大得多,具体大多少不是我们要求的结论)
这种近似的做法就是吉布斯采样方法,固定我们获得的证据属性E,然后通过初始化一个q0,接着对于q0中的某一个属性根据其他的属性不变,根据计算得到的条件概率进行采样。这是一个马尔科夫链(marcov chain),性质:在经过t次的采样之后,马尔科夫会收敛于一个平稳分布,而这个平稳分布正是我们要求的那个 p(Q|E=e) 的分布。这样我们就可以通过吉布斯采样来得到一个模拟化的分布得到q最有可能的取值。(或者给定q, p(q|E=e) 估计的概率是多少)
隐变量介绍以及解决方法:
上诉还有一个问题那就是属性缺失的情况下怎么办,我们的模型网络还能创建得出来吗?也就是说存在隐变量(latent variable)该怎样解决这样的问题?
EM(Expectation-Maximization)算法是常用的估计参数隐变量的方法。
主要的思想就是:隐变量和模型参数是我们要求的,而二者之间存在相互依赖的关系,也就是不知道隐变量无法求出模型参数,不知道模型参数也无法反推出隐变量。那如果是一种优化迭代算法的话,初始化隐变量,然后训练得到最优的参数,然后通过固定最优的参数再反过来训练到最优的隐变量。直到最后收敛到一个局部最优解。(所以这种算法求解的结果是和 初始值关系比较大的局部最优解,如果能找到一个接近全局最优解的初始值,或者在接受解的概率上做调整不至于过快收敛,可能可以得到一个更好的解。)
参考文献:西瓜书-贝叶斯决策论
『肆』 贝叶斯网络基本原理
贝叶斯网络又称信念网络,是有向无环图的网络拓扑结构和贝叶斯概率方法有机结合的模型表示,描述了各个数据项及其相互间的依赖关系。一个 BN 包括了一个拓扑结构模型和与之相关的一组条件概率参数。结构模型是一个有向无环图,每个节点则表示一个随机变量,是对于状态、过程、事件等实体的某个特性的形象描述,其中的有向边则表示随机变
量之间的条件依赖关系。BN 中每个节点( 除根节点外) 都有一个给定其父节点情况下的条件概率分布。2. 1. 1 贝叶斯网络定理
BN 是一种概率网络,即基于概率推理的图形化网络,这个概率网络的基础是贝叶斯公式。我们先来看一看贝叶斯基本公式。
定义 2. 1 条件概率: 设 X、Y 是两个事件,且 P( X) >0,称
基于BN+GIS新技术的突水态势研究
为在事件 X 发生的条件下事件 Y 发生的条件概率。
定义 2. 2 联合概率: 设 X,Y 是两个事件,且 P( X) >0,它们的联合概率为:
基于BN+GIS新技术的突水态势研究
定义2.3全概率公式:设试验E的样本空间为S,X为E的事件,Y1,Y2,…,Yn为E的一组事件,满足:
基于BN+GIS新技术的突水态势研究
定义2.4贝叶斯公式:根据定义2.1、定义2.2和定义2.3,很容易推得众所周知的贝叶斯公式:
基于BN+GIS新技术的突水态势研究
2. 1. 2 贝叶斯网络的拓扑结构
BN 是一个具有概率分布的有向无环图( Directed Acyclic Graph) ,其中每个节点代表一个数据变量或者属性,节点间的弧段代表数据变量( 属性) 之间的概率依赖关系。一条弧段由一个数据变量( 属性) X 指向另外一个数据变量( 属性) Y,说明数据变量 X 的取值可以对数据变量 Y 的取值产生影响。既然是有向无环图,因此 X,Y 间不构成有向回路。在 BN 当中,连接两个节点的一条弧 XY 中的弧头节点( 直接的原因节点) X 叫做弧尾节点( 结果节点) Y 的双亲节点( Parents) ,Y 叫做 X 的孩子节点( Children) 。如果从节点 A 有一条有向通路指向 B,则称节点 A 为节点 B 的祖先( Ancestor) ,同时称节点 B 为节点 A 的后代( Descendent) 。
BN 能够利用简单明了的图形表达方式定性地表示事件间复杂的概率关系和因果关系,在给定某些先验信息后,还可以定量地表示这些因果概率关系。BN 的拓扑结构通常是根据具体的问题和研究对象来确定的。目前如何通过结构学习自动确定和优化网络的拓扑结构是 BN 的一个研究热点。
2.1.3 条件独立性假设
条件独立性假设是BN进行定量推理的理论基础,可以减少先验概率的数目,从而大大地简化推理和计算过程。
BN的条件独立性假设的一个很重要的判据就是著名的分隔定理(D-Separation):
定义2.5阻塞:G=(V(G),E(G))为一个有向非循环图,s是其中的一条链。当s包含3个连续的节点x,y,z,满足以下3种情况之一,我们称s被节点集合W(WV(G))阻塞:
(1)z∈W,s上存在弧x→z和z→y;
(2)z∈W,s上存在弧x←z和z→y;
(3)s上存在弧x→z和z←y,σ(z)∩W=,σ(z)表示z以及z的所有子孙节点的集合。
图2.1 阻塞的3种情形
定义2.6阻塞集:两个节点x和y间的所有路径都被节点集合Z所阻塞,则称集合Z为x,y两个节点间的阻塞集。
定义2.7D-Separation:令X,Y和Z是一个有向无环图G中3个不相交节点的子集,如果在集合X和Y中所有节点间的所有路径都被集合Z所阻塞,则称集合X,Y被Z集合(d-separation),表示为<X,Y|Z>G,也称Z为X和Y的切割集。否则,称在给定集合Z下集合X和Y的图形依赖。
这个判据指出,如果Z隔离了X和Y时,那么可以认为X与Y是关于Z条件独立的,即:P(X|Y,Z)=P(X|Y)。
『伍』 04 贝叶斯算法 - 贝叶斯网络
01 贝叶斯算法 - 朴素贝叶斯
02 贝叶斯算法 - 案例一 - 鸢尾花数据分类
03 贝叶斯算法 - 案例二 - 新闻数据分类
之前聚类算法中讲了 无向图 的聚类算法 - 谱聚类 。
13 聚类算法 - 谱聚类
本章介绍的贝叶斯算法是 有向图 的聚类算法。
区别:
谱聚类 的无向图里的点里放的是 样本 。
贝叶斯网络 的有向图的点里放的是 样本的特征 。
把某个研究系统中涉及到的 随机变量 ,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。 贝叶斯网络(Bayesian Network) ,又称有向无 环图模型 (directed acyclic graphical model, DAG);
贝叶斯网络 是一种概率图模型,根据概率图的拓扑结构,考察一组随机变量:{X1,X2,...,Xn}及其N组条件概率分布(Conditional ProbabililtyDistributions, CPD)的性质。
当多个特征属性之岩念漏间 存在着某种相关关系 的时候,使用朴素贝叶斯算法就没法解决这类问题,那么贝叶斯网络就是解决这类应用场景的一个非常好的算法。
分析: 很好理解上面的概念,先回顾下面的算法,朴素贝叶斯算法要求的是互相独立的事件形成出x1~xn,这些特征彼此概率互不影响,所以才能求出联合概率密度。贝叶斯网络算法就是来解决有关联的特征组成的样本分类的。
一般而言,贝叶斯网络的有向无环图中的节点表示随机变量,可以是可观察到的变量,或隐变量,未知参数等等。连接两个节点之间的箭头代表两个随机变量之间的因果关系(也就是这两个随机变量之间非条件独立);如果两个节点间以一个单箭头连接在一起,表示其中一个节点是“因”,另外一个节点是“果”,从而两节点之间就会产生一个条件概率值。
PS: 每个节点在给定其直接前驱的时候,条件独立于其非后继。
贝叶斯网络的关键方法是图模型,构建一个图模型我们需要把具有因果联系的各个变量用箭头连在一起。贝叶斯网络的有向无环图中的节点表示随机变量。连接两个节点的箭头代表此两个随机变量是具有因果关系的。
贝叶斯网络是模拟人的认知思维推理模式的,用一组条件概率以及有向无环图对不确定性因果推理关系建模。
目标,求P(a,b,c)
a的概率和任何别的特征都无关,所以先求a的概率:P(a);
b的生成和a有关。即a发生的情况下,b发生的概率:P(b|a);
c的生成和a、b有关。即a和b同事发生的情况下粗烂,c发生的概率。P(c|a,b);
有一天早晨,白尔摩斯离开他的房高神子的时候发现他家花园中的草地是湿的,有两种可能,第一:昨天晚上下雨了,第二:他昨天晚上忘记关掉花园中的喷水器,接下来,他观察他的邻居华生,发现他家花园中的草地也是湿的,因此,他推断,他家的草地湿了是因为昨天晚上下雨的缘故。
那么在贝叶斯网络中,哪些条件下我们可以认为是条件独立的?
条件一:
在C给定的条件下,a和b被阻断(blocked)是独立的。
即只要C给定了,a、b就独立。
条件独立:tail - to -tail
条件二:
在C给定的条件下,a和b被阻断(blocked)是独立的。
条件独立:head- to -tail
条件三:
在C未知的情况下,a和b被阻断(blocked),是独立的。
条件独立:head - to - head
『陆』 列举三种构建贝叶斯网络的方法
构建贝叶斯网络可以通过络该网三种不同的连接方式来进行。贝叶斯网络三种基本连接方式:同父结构,V型结构,顺序结构。构建贝叶斯网络的方法:
贝叶斯网络:包括一个有向无环图(DAG)和一个条件概率表集合。
DAG中每一个节点表示一个随机变量,可以是可直接观测变量世仔或隐藏变量,而有向边表示随机变量间的条件依赖;条件概率表中的每一个元素对应DAG中唯一的节点,存储此节点对于其所有直接前驱节点的联合条件概率。
构建一个贝叶斯网络流程:
根据前面贝叶斯网络的定义,我们可以初步的知道一个贝叶斯网络的构成,那么可以根据它的定义来构造一个贝叶斯网络,其实就是围绕着它的组成元素:DAG和节点参数与边的方向,下面分这两步来描述下如何构造一个贝叶斯网络。
1.确定随机变量间的拓扑关系,形成DAG。这一步通常需要领域专家完成,而想要建立搜唯汪一个好的拓扑结构,通常需要不断迭代和改进才山山可以。
2.训练贝叶斯网络参数——估计出各节点的条件概率表。这一步也就是要完成条件概率表的构造,如果每个随机变量的值都是可以直接观察的,像我们上面的例子,那么这一步的训练是直观的,方法类似于朴素贝叶斯分类。
『柒』 贝叶斯网络,看完这篇我终于理解了(附代码)!
概率图模型是用图来表示变量概率依赖关系的理论,结合概率论与图论的知识,利用图来表示与模型有关的变量的联合概率分布。由图灵奖获得者Pearl开发出来。
如果用一个词来形容概率图模型(Probabilistic Graphical Model)的话,那就是“优雅”。对于一个实际问题,我们希望能够挖掘隐含在数据中的知识。概率图模型构建了这样一幅图,用观测结点表示观测到的数据,用隐含结点表示潜在的知识,用边来描述知识与数据的相互关系, 最后基于这样的关系图获得一个概率分布 ,非常“优雅”地解决了问题。
概率图中的节点分为隐含节点和观测节点,边分为有向边和无向边。从概率论的角度,节点对应于随机变量,边对应于随机变量的依赖或相关关系,其中 有向边表示单向的依赖,无向边表示相互依赖关系 。
概率图模型分为 贝叶斯网络(Bayesian Network)和马尔可夫网络(Markov Network) 两大类。贝叶斯网络可以用一个有向图结构表示,马尔可夫网络可以表 示成一个无向图的网络结构。更详细地说,概率图模型包括了朴素贝叶斯模型、最大熵模型、隐马尔可夫模型、条件随机场、主题模型等,在机器学习的诸多场景中都有着广泛的应用。
长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大。而且概率虽然未知,但最起码是一个确定的值。比如如果问那时的人们一个问题:“有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率是多少?”他们会想都不用想,会立马告诉你,取出白球的概率就是1/2,要么取到白球,要么取不到白球,即θ只能有一个值,而且不论你取了多少次,取得白球的 概率θ始终都是1/2 ,即不随观察结果X 的变化而变化。
这种 频率派 的观点长期统治着人们的观念,直到后来一个名叫Thomas Bayes的人物出现。
托马斯·贝叶斯Thomas Bayes(1702-1763)在世时,并不为当时的人们所熟知,很少发表论文或出版著作,与当时学术界的人沟通交流也很少,用现在的话来说,贝叶斯就是活生生一民间学术“屌丝”,可这个“屌丝”最终发表了一篇名为“An essay towards solving a problem in the doctrine of chances”,翻译过来则是:机遇理论中一个问题的解。你可能觉得我要说:这篇论文的发表随机产生轰动效应,从而奠定贝叶斯在学术史上的地位。
这篇论文可以用上面的例子来说明,“有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率θ是多少?”贝叶斯认为取得白球的概率是个不确定的值,因为其中含有机遇的成分。比如,一个朋友创业,你明明知道创业的结果就两种,即要么成功要么失败,但你依然会忍不住去估计他创业成功的几率有多大?你如果对他为人比较了解,而且有方法、思路清晰、有毅力、且能团结周围的人,你会不由自主的估计他创业成功的几率可能在80%以上。这种不同于最开始的“非黑即白、非0即1”的思考方式,便是 贝叶斯式的思考方式。
先简单总结下频率派与贝叶斯派各自不同的思考方式:
贝叶斯派既然把看做是一个随机变量,所以要计算的分布,便得事先知道的无条件分布,即在有样本之前(或观察到X之前),有着怎样的分布呢?
比如往台球桌上扔一个球,这个球落会落在何处呢?如果是不偏不倚的把球抛出去,那么此球落在台球桌上的任一位置都有着相同的机会,即球落在台球桌上某一位置的概率服从均匀分布。这种在实验之前定下的属于基本前提性质的分布称为 先验分布,或着无条件分布 。
其中,先验信息一般来源于经验跟历史资料。比如林丹跟某选手对决,解说一般会根据林丹历次比赛的成绩对此次比赛的胜负做个大致的判断。再比如,某工厂每天都要对产品进行质检,以评估产品的不合格率θ,经过一段时间后便会积累大量的历史资料,这些历史资料便是先验知识,有了这些先验知识,便在决定对一个产品是否需要每天质检时便有了依据,如果以往的历史资料显示,某产品的不合格率只有0.01%,便可视为信得过产品或免检产品,只每月抽检一两次,从而省去大量的人力物力。
而 后验分布 π(θ|X)一般也认为是在给定样本X的情况下的θ条件分布,而使π(θ|X)达到最大的值θMD称为 最大后验估计 ,类似于经典统计学中的 极大似然估计 。
综合起来看,则好比是人类刚开始时对大自然只有少得可怜的先验知识,但随着不断观察、实验获得更多的样本、结果,使得人们对自然界的规律摸得越来越透彻。所以,贝叶斯方法既符合人们日常生活的思考方式,也符合人们认识自然的规律,经过不断的发展,最终占据统计学领域的半壁江山,与经典统计学分庭抗礼。
条件概率 (又称后验概率)就是事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。
比如上图,在同一个样本空间Ω中的事件或者子集A与B,如果随机从Ω中选出的一个元素属于B,那么这个随机选择的元素还属于A的概率就定义为在B的前提下A的条件概率:
联合概率:
边缘概率(先验概率):P(A)或者P(B)
贝叶斯网络(Bayesian network),又称信念网络(Belief Network),或有向无环图模型(directed acyclic graphical model),是一种概率图模型,于1985年由Judea Pearl首先提出。它是一种模拟人类推理过程中因果关系的不确定性处理模型,其网络拓朴结构是一个有向无环图(DAG)。
贝叶斯网络的有向无环图中的节点表示随机变量
它们可以是可观察到的变量,或隐变量、未知参数等。认为有因果关系(或非条件独立)的变量或命题则用箭头来连接。若两个节点间以一个单箭头连接在一起,表示其中一个节点是“因(parents)”,另一个是“果(children)”,两节点就会产生一个条件概率值。
例如,假设节点E直接影响到节点H,即E→H,则用从E指向H的箭头建立结点E到结点H的有向弧(E,H),权值(即连接强度)用条件概率P(H|E)来表示,如下图所示:
简言之,把某个研究系统中涉及的随机变量,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。其主要用来描述随机变量之间的条件依赖,用圈表示随机变量(random variables),用箭头表示条件依赖(conditional dependencies)。
此外,对于任意的随机变量,其联合概率可由各自的局部条件概率分布相乘而得出:
1. head-to-head
依上图,所以有:P(a,b,c) = P(a) P(b) P(c|a,b)成立,即在c未知的条件下,a、b被阻断(blocked),是独立的,称之为head-to-head条件独立。
2. tail-to-tail
考虑c未知,跟c已知这两种情况:
3. head-to-tail
还是分c未知跟c已知这两种情况:
wikipedia上是这样定义因子图的:将一个具有多变量的全局函数因子分解,得到几个局部函数的乘积,以此为基础得到的一个双向图叫做因子图(Factor Graph)。
通俗来讲,所谓因子图就是对函数进行因子分解得到的 一种概率图 。一般内含两种节点:变量节点和函数节点。我们知道,一个全局函数通过因式分解能够分解为多个局部函数的乘积,这些局部函数和对应的变量关系就体现在因子图上。
举个例子,现在有一个全局函数,其因式分解方程为:
其中fA,fB,fC,fD,fE为各函数,表示变量之间的关系,可以是条件概率也可以是其他关系。其对应的因子图为:
在概率图中,求某个变量的边缘分布是常见的问题。这问题有很多求解方法,其中之一就是把贝叶斯网络或马尔科夫随机场转换成因子图,然后用sum-proct算法求解。换言之,基于因子图可以用 sum-proct 算法 高效的求各个变量的边缘分布。
详细的sum-proct算法过程,请查看博文: 从贝叶斯方法谈到贝叶斯网络
朴素贝叶斯(Naive Bayesian)是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法。朴素贝叶斯原理简单,也很容易实现,多用于文本分类,比如垃圾邮件过滤。**朴素贝叶斯可以看做是贝叶斯网络的特殊情况:即该网络中无边,各个节点都是独立的。 **
朴素贝叶斯朴素在哪里呢? —— 两个假设 :
贝叶斯公式如下:
下面以一个例子来解释朴素贝叶斯,给定数据如下:
现在给我们的问题是,如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?
这是一个典型的分类问题,转为数学问题就是比较p(嫁|(不帅、性格不好、身高矮、不上进))与p(不嫁|(不帅、性格不好、身高矮、不上进))的概率,谁的概率大,我就能给出嫁或者不嫁的答案!这里我们联系到朴素贝叶斯公式:
我们需要求p(嫁|(不帅、性格不好、身高矮、不上进),这是我们不知道的,但是通过朴素贝叶斯公式可以转化为好求的三个量,这三个变量都能通过统计的方法求得。
等等,为什么这个成立呢?学过概率论的同学可能有感觉了,这个等式成立的条件需要特征之间相互独立吧!对的!这也就是为什么朴素贝叶斯分类有朴素一词的来源,朴素贝叶斯算法是假设各个特征之间相互独立,那么这个等式就成立了!
但是为什么需要假设特征之间相互独立呢?
根据上面俩个原因,朴素贝叶斯法对条件概率分布做了条件独立性的假设,由于这是一个较强的假设,朴素贝叶斯也由此得名!这一假设使得朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。
朴素贝叶斯优点 :
朴素贝叶斯缺点 :
理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。
朴素贝叶斯模型(Naive Bayesian Model)的 朴素(Naive)的含义是"很简单很天真" 地假设样本特征彼此独立. 这个假设现实中基本上不存在, 但特征相关性很小的实际情况还是很多的, 所以这个模型仍然能够工作得很好。
新闻分类 GitHub: 点击进入
【 机器学习通俗易懂系列文章 】
从贝叶斯方法谈到贝叶斯网络
『捌』 贝叶斯网络
贝叶斯网络是一种模拟人类推理过程中因果关系的不确定性处理模型,也是一些变量的联合概率分布的图形表示。通常包含两个部分,一个是贝叶斯网络结构图,它是一个有向无环图(DAG),其中图中的每个节点代表相应的变量,节点之间的连接关系代表了贝叶斯网络的条件独立语义。另一部分,就是节点和节点之间的条件概率表(CPT),也就是一系列的概率值。如果一个贝叶斯网络提供了足够的条件概率值,足以计算任何给定的联合概率,我们就称,它是可计算的,即可推理的。 什么是贝叶斯推断?使用贝叶斯方法处理不确定性,需要利用贝叶斯定理将先验分布更新至后验分布中,这无疑是最流行的方法之一。但还存在其他非贝叶斯方法,例如集中不等式就是非贝叶斯方法雀培,它们允许计算置信区间和不确定性集合。
贝叶森敬斯网络随机变量的连接方式主要有顺连、分连、汇连这三种连接形式。
基于python的pgmpy库构建贝叶斯网络,其步骤是先建立网络结构, 然后填入相关参数。 1.针对已知结构及参数,先采用BayesianModel构造贝叶斯网结构
这个贝叶斯网络中有五个节点: Pollution, Cancer, Smoker, Xray, Dyspnoea.
(‘Pollution’, ‘Cancer’): 一条有向边, 从 Pollution 指向 Cancer, 表示环境污染有可能导致癌症.
(‘Smoker’, ‘Cancer’): 吸烟有可能导致癌症.
(‘Cancer’, ‘Xray’): 得癌症的人可能会去照X射线.
(‘Cancer’, ‘Dyspnoea’): 得癌症的人可能会呼吸困难.
cancer_model
<pgmpy.models.BayesianModel.BayesianModel at 0x7f57c7f593d0>
Pollution: 有两种概率, 分别是 0.9 和 0.1.
Smoker: 有两种概率, 分别是 0.3 和 0.7. (意思是在一个人群里, 有 30% 的人吸烟, 有 70% 的人不吸烟)
Cancer: envidence 表示有 Smoker 和 Pollution 两个节点指向 Cancer 节点;
测试网络结构是否正确
在构建了贝叶斯此岁慎网之后, 我们使用贝叶斯网来进行推理. 推理算法分精确推理和近似推理. 精确推理有变量消元法和团树传播法; 近似推理算法是基于随机抽样的算法.
Finding Elimination Order: : 100%|██████████| 1/1 [00:00<00:00, 1096.55it/s]
Eliminating: Pollution: 100%|██████████| 1/1 [00:00<00:00, 888.25it/s]
+-----------+---------------+
| Cancer | phi(Cancer) |
+===========+===============+
| Cancer(0) | 0.0320 |
+-----------+---------------+
| Cancer(1) | 0.9680 |
+-----------+---------------+
True
CPD of D:
+------+------+
| D(0) | 0.49 |
+------+------+
| D(1) | 0.51 |
+------+------+
CPD of G:
+------+---------------------+-----+---------------------+
| D | D(0) | ... | D(1) |
+------+---------------------+-----+---------------------+
| I | I(0) | ... | I(1) |
+------+---------------------+-----+---------------------+
| G(0) | 0.46320346320346323 | ... | 0.519650655021834 |
+------+---------------------+-----+---------------------+
| G(1) | 0.5367965367965368 | ... | 0.48034934497816595 |
+------+---------------------+-----+---------------------+
CPD of I:
+------+-------+
| I(0) | 0.512 |
+------+-------+
| I(1) | 0.488 |
+------+-------+
CPD of S:
+------+----------+---------------------+
| I | I(0) | I(1) |
+------+----------+---------------------+
| S(0) | 0.515625 | 0.48770491803278687 |
+------+----------+---------------------+
| S(1) | 0.484375 | 0.5122950819672131 |
+------+----------+---------------------+
CPD of L:
+------+--------------------+---------------------+
| G | G(0) | G(1) |
+------+--------------------+---------------------+
| L(0) | 0.5424430641821946 | 0.46034816247582205 |
+------+--------------------+---------------------+
| L(1) | 0.4575569358178054 | 0.539651837524178 |
+------+--------------------+---------------------+