-
这里每个特征代表一个随机变量,特征的具体取值就是随机变量的采样值。
一个贝叶斯网 由结构 和参数 两部分组成,即 :
网络结构 是一个有向无环图,其中每个结点对应于一个特征。
若两个特征之间有直接依赖关系,则他们用一条边相连。
参数 定量描述特征间的这种依赖关系。设特征 在 中父节点的集合为 , 则 包含了该特征的条件概率表:
贝叶斯网结构有效地表达了特征间的条件独立性。
给定父节点集,贝叶斯网络假设每个特征与它的非后裔结点表达的特征是相互独立的。于是有:
推导过程:
贝叶斯网络中三个结点之间典型依赖关系如下图:
- 同父结构:给定父节点 的取值, 则 与 条件独立,即:
V
型结构:给定子节点 的取值,则 与 必定不是条件独立的。即: 。事实上 与 是独立的(但不是条件独立的),即 。
为了分析有向图中节点之间的条件独立性,可以使用有向分离技术:
- 找出有向图中的所有
V
型结构,在型结构的两个父节点之间加上一条无向边。 - 将所有的有向边改成无向边。
这样产生的无向图称作道德图
moral graph
。父节点相连的过程称作道德化moralization
。基于道德图能直观、迅速的找到结点之间的条件独立性。- 找出有向图中的所有
2.2 网络的学习
贝叶斯网络的学习可以分为参数学习和结构学习两部分
参数学习比较简单。只需要通过对训练样本“计数”,估计出每个结点的条件概率表即可。
但是前提是必须知道网络结构。
结构学习比较复杂,结构学习被证明是
NP
难问题。
-
先定义一个评分函数,以此评估贝叶斯网络与训练数据的契合程度。然后基于这个评分函数寻找结构最优的贝叶斯网。
给定训练集 ,贝叶斯网络 在 上的评分函数定义为:
其中: 表示描述每个参数 所需的字节数; 是贝叶斯网络的参数个数;
是贝叶斯网 的对数似然。因此:
- 第一项 是计算编码贝叶斯网络 所需要的字节数。
- 第二项 是计算 所对应的概率分布 需要多少字节来描述 。
现在结构学习任务转换为一个优化任务,即寻找一个贝叶斯网络 使评分函数 最小。
问题是,从所有可能的网络结构空间中搜索最优贝叶斯网络结构是个
NP
难问题,难以快速求解。有两种方法可以在有限时间内求得近似解:
- 贪心算法。如从某个网络结构出发,每次调整一条边,直到评分函数不再降低为止。
- 增加约束。通过给网络结构增加约束来缩小搜索空间,如将网络结构限定为树形结构等。
贝叶斯网络训练好之后就能够用来进行未知样本的预测。
最理想的是直接根据贝叶斯网络定义的联合概率分布来精确计算后验概率,但问题是这样的“精确推断”已经被证明是
NP
难的。