贝叶斯网络中求值,从特殊到一般:分类、查询、推断
吉布斯采样算法既可以采样一个样本(用于预测),又可以采样一组样本(用于查询)——“根据今天的天气状况,你觉得明天是晴还是雨?
贝叶斯网络分类器
在贝叶斯网络中,若其余所有结点都有值,仅有一个结点无值,会出现什么情况?
设待定值结点为,待定值为,设,则
其中,表示结点变量的具体值。 对式(7.47)先由的结构关系,转化为条件概率,然后,查的条件概率表即可计算出每一个指定值的。 这就实现了对待定结点的“查询”,即得到它取各种可能值的概率。
将样本标记也视为一个结点(地位等同于属性),则依前述方法训练出一个最优贝叶斯网络,对进行查询,则可得到
其中,为第类标记符号,,则取使式(7.48)最大的作为分类,即实现了贝叶斯最优分类器(7.1 贝叶斯决策论中式(7.13)),分类可视为一种特殊的查询。
贝叶斯网络推断
确定了贝叶斯网络后,就可用于上述“查询”,现在进一步扩展“查询”,查询一组结点而不只是一个结点,称为“推断”,
在有限的时间内,通常使用“近似推断”,常用吉布斯采样进行“近似推断”,【西瓜书图7.5】描述了吉布斯采样算法,这里再对它的重点、难点加以说明。
(1)以前待预测样本表示为即,其中,属性已知,求标记?现在将中全视为变量,有的变量已知(证据),有的变量未知(待查询),将证据变量和待查询变量分开,各自排列,即样本为
其中,为证据变量,为待查询变量,写成集合形式则为
(2)以大写字母表示变量,小写字母表示变量的值,粗体表示对应的向量。 则查询问题可以表述为: 证据为,查询出现的概率为多少(如,阴天(证据)下雨(查询)的概率多大)?即求。
(3)通过频率估计上述概率,而频率又是通过采样后计数来获得,求只需要在条件下采样,设采样总数为,其中的样本数为个,则
(4)在哪儿去采样?容易想到在数据集中去采样,或者直接将数据集视为采样集,统计其中满足条件的和,如果数据集超大,你当然可以这样做。 现在,我们换个思路来考虑,通过数据集已训练出一个贝叶斯网,转化到在贝叶斯网上采样,然而,贝叶斯网并不是样本空间(或样本集)如何在其上采样?贝叶斯网有个神奇的功能:指定结点,在固定其他所有结点值的情况下,可以求出指定结点的条件概率分布,即式(7.47)的“查询”功能,由该概率即可“采样”出该结点的值,该值与其他所有结点的值共同组成一个样本,将其视为采样得到的样本,它实际上,是借助贝叶斯网通过局部采样而“生成”一个样本。 这就是吉布斯采样算法【西瓜书图7.5】中的第7、第8句。
(5)【西瓜书图7.5】吉布斯采样算法由两层循环来 描述:外层for循环(第3句)产生“一组样本”,内层for循环(第4至第10句)产生样本(产生“一组属性”),即对循环。
(6)【西瓜书图7.5】算法中第8句涉及到已知概率分布,如何进行采样的问题。 这里以离散随机变量进行说明:例如,随机变量可取值为,已知是指取每个值的概率已知,如,,
现在以为已知的概率分布,要求采样1000个样本,先解决一个样本的采样问题,再用for循环可以得到任意多个样本。
采一个样本方法:
- 将区间分为三段:;
- 计算机中随机数发生器产生的随机数是均匀分布的,即可用程序产生区间中均匀分布的随机数,如:;
- 判断随机数所在的区间段:若落入,则取样本;若落入,则取样本;若落入,则取样本。
(7)吉布斯采样算法是从已有的出发采出,然而开始时没有这个“已有”,而是胡乱地初始化一个作为“已有”,即【西瓜书图7.5】算法中第2句,那么,问题来了:这个是否合适?首先,这个应该是在的取值范围内的,其次是要能“取到”该值,这个不能保证,因为该值有可能是“小概率事件”。 好在数学上证明了不需要保证这一点,这就是【西瓜书p.161】所说的采样形成的“马尔可夫链”收敛于平稳分布。 因此,【西瓜书图7.5】算法中对采样计数(第3句)应该改造一下:斩掉一段不太平稳的“链”头再开始计数。
(8)吉布斯采样算法既可以采样一个样本(用于预测),又可以采样一组样本(用于查询),我们通过一段对话来理解:
Q:“根据今天的天气状况,你觉得明天是晴还是雨?”——今天的天气状况【证据】,明天是晴还是雨【预测】。
J:“我觉得明天是晴天. ”——J用吉布斯采样算法采了一个样本,发现该样本是晴【预测结果】。
Q:“你预报的准确性如何?”
J:“让我再想想. ”——J用吉布斯采样算法采出一组样本,计算明天是晴还是雨各自的频率【近似估算后验概率】。
Q:“其实,我想知道明天是雨天的可能性有多大,因为我明天要举办露天婚礼。 ”——明天是雨天的可能性【查询】。
J:“明天是雨天的概率是60%. ”——根据刚计算出的频率作出近似推断【查询结果】。
综上,近似推断有如下步骤:
(1)从现实物理世界中采样得到训练集;
(2)以评价函数最小化为目标即,搜索得到一个贝叶斯网络;
(3)从及证据出发,使用吉布斯算法采样,得到一个样本集。注:这里与其说是“采样”,不如说是用“样本制造机”来“制造”样本,“样本制造机”有多种多样,但它应保证“制造”出的“样本集”是反映样本空间的特性(即统计频率能反映样本空间中的概率),这里的“样本制造机”为训练好的贝叶斯网及吉布斯算法。
(4)对产生(采样)得到的样本集进行分门别类“计数”,得到待查询值的概率(近似值),即式(7.49)。
其中,(1)与(2)可以视为生产一个产品,(3)与(4)视为使用产品,显然,产品可以发布给许多用户使用。