Advanced Topics in Statistical Machine Learning 笔记04:Bayesian Networks as Classifiers

在本节中,我们来看如何将 Bayesian Network 作为分类器 (Classifier) 来使用。这里我们仍然使用一个具体的例子来进行理解:

假设我们已有一个针对乳腺癌 (Breast Cancer) 的诊断模型,该模型是一个贝叶斯网络:
在这里插入图片描述
我们的目标是使用给定的一系列乳腺摄影结果 (Mammography Results) 来预测病人是否患有乳腺癌。

和一般的分类任务一样,我们需要将变量 (Variables) 划分为两个部分:

  • Class / Label / Query Variable:在本例中就是 {Breast Cancer},它有三个取值:No, Insitu, Invasive
  • Attributes:本例中的其他所有变量都是 Attributes。在贝叶斯网络中就是 Evidence,用以计算 Breast Cancer 的概率

因此,我们只需要将 Q 设为 {Breast Cancer},其他所有变量设为 Evidence 进行 MPE 查询即可得到答案。我们需要知道的是,贝叶斯网络能够自然地处理缺失数据 (Missing Data),如果在查询中有 Evidence 缺失,可以使用 MAP 查询。我们在前一章已经对这两种查询方式进行了介绍,最大的区别就在于 MPE 会涉及网络中的所有变量 (Variables),但是 MAP 只会使用一部分,因此它支持对缺少某些 Evidence 情况的计算。只是 MAP 相比 MPE 的开销会更大,因为它需要消除哪些未被使用的变量。

完备数据的分类(Classification of Complete Data)

我们主要来讨论完备数据 (Complete Data) 前提下的具体分类。在进行计算的过程中,由于网络的规模可能会非常大,这就导致需要计算的变量过多,这会大大增加计算的复杂度,为此,我们希望能够进行枝剪 (Pruning)。对此,我们一定要关注一个问题,“是否所有的变量 (Variables) 都对分类任务有所贡献?” 根据独立性关系,我们能够发现在网络中,有很多变量是与我们的目标变量 (Breast Cancer) 相互独立的,独立就意味着我们即使观察到某些点/变量,也不会改变 Breast Cancer 的概率,因此我们可以不必关注这些变量。至于我们需要关心的变量,只需要用前一节提到的马尔科夫毯 (Markov Blanket) 就能够直接找到。简单回顾一下马尔科夫毯的定义,一个节点 X 的马尔科夫毯由它的父节点 (Parents) ,子结点 (Children) 和伴侣节点 (Spouse) 组成。我们能够轻易地知道这些变量一定不会与节点 X 相互独立。本例中通过寻找 Breast Cancer 的马尔科夫毯,我们能够得到以下结果:

在这里插入图片描述
因此,在这次的分类任务中,我们只需要关注以上这些变量即可。在找到了我们需要的变量之后,只需要使用 MPE 查询即可得到结果 (Inference),因为本例中的变量还是有一些多,所以这里我们用另一个比较简单的例子来看具体的计算:

在这里插入图片描述
本例中,我们的 Query Variable 为 Q = {B}. 目前我们已知 Evidence 为 𝒆: 𝐴 = 𝑡𝑟𝑢𝑒, 𝐶 = 𝑓𝑎𝑙𝑠𝑒, 𝐷 = 𝑡𝑟𝑢𝑒, E = 𝑓𝑎𝑙𝑠𝑒,同时 B 是一个二值变量,因此需要根据贝叶斯网络的链式法则 (Chain Rule) 来分别计算 B 两种不同情况的概率:

在这里插入图片描述
根据最后的计算结果,我们能够得到,在给定当前 Evidence 的前提下,B 为 True 的概率更高,因此最后的预测结果/推断结果 (Prediction/Inference Result) 即为 B 为 True。这里通过观察链式计算的式子,我们其实可以发现,尽管所有在 Merkov(B) 中的变量都会影响 P(B, 𝒆) 的值,但是真正决定最后计算结果的还是所有包含变量 B 的那些 CPTs。

在这里插入图片描述
这并不意味着马尔科夫毯没有意义,实际上我们能看到这些最重要的 CPTs 都在我们用马尔科夫毯筛选出来的变量内。但是另一方面,这个性质能够帮助我们进一步减少需要纳入计算的变量:

在这里插入图片描述
当然,其他那些将所有 Attributes 都纳入考虑的方法虽然计算量更大,但是相对地也会更好地利用数据中的信息。我们需要注意,目前所讨论的一切都基于“数据是完备的”这个基础上,如果某些 Evidence 缺失了,则更多节点/变量可能会参与推理 (Inference)

朴素贝叶斯分类器(Naive Bayes Classifier - NBC)

朴素贝叶斯很好理解,其实就是基于朴素贝叶斯网络的分类器。将所有 Attributes 都与 Class 变量相连。

在这里插入图片描述
根据该网络结构,我们不难看出,NBC 秉持着“给定 Class,所有 Attributes 互相独立”的大前提。这在实际情况中其实是很少见的情况,但是对于 NBC 来说却是意外的精确。因为在进行分类任务时,我们关心的只是最大概率对应的 Class,而不是某个具体的概率分布。NBC 对于文本分类任务来说,是一个非常常见的模型。

NBC 还有一个比较明显的优点,那就是参数量 (Number of parameters)。NBC 的参数量与 Attributes 的数量为线性关系,而一般的联合概率 (Joint Probability) 为指数级关系。

在这里插入图片描述
比如,我们有 n=10 个 Attributes,且每个变量都是二值变量,那么,此时 Joint Probability 需要 20480 个参数,而 NBC 需要 400 个左右。除此以外,NBC 常会将对数概率 (Logarithm Probability) 来减轻计算压力,这么做会能将概率之间的乘法变为加法。

参数估计(Parameter Estimation)

一个贝叶斯网络 (Bayesian Network) 的参数 (Parameter) 是可以被估计的。一种方法是通过启发,比如直接问一个专家。另一种就是凭经验使用数据(这就是机器学习的方法),我们可以定义一个经验分布 (Empirical Distribution) PD ,根据该分布,某个实例化 (Instantiation) 的经验概率 (Empirical Probability) 可以简化为它的出现频率:

在这里插入图片描述
如此一来我们就可以基于经验分布来估计出参数,比如:

在这里插入图片描述
我们的目标是对未见过的实例进行分类,也就是将一模型“泛化”到未见过的数据,通常的做法就是数据分割为训练集和测试集进行学习。但是,在这里,我们使用频率估计出的参数可能会有过拟合的问题,以垃圾邮件分类的例子来看,有一些词可能只会出现在训练集的某个向量中,或是完全没有出现在训练集中,这就会造成值为 0 的概率。为了避免这个问题,常用的一个方法就是拉普拉斯平滑 (Laplacian Smoothing)

在这里插入图片描述

树增强贝叶斯分类器(Tree-augmented Bayes Classifier)

这是朴素贝叶斯分类器的一个强化版,也就是一个半朴素贝叶斯分类器。为什么说半朴素,因为它允许变量之间更复杂的依赖关系结构,而不像朴素贝叶斯那样认为 Attributes 之间互相独立。这个方法的核心点在于对互信息 (Mutual Information) 的计算,Conditional MI 可以看作是对属性依赖的一种度量。

在这里插入图片描述
具体的操作方式很简单:

  1. 计算所有 Attributes 对之间的互信息 (MI) ,并以此构建一个完全图 (Complete Graph)
  2. 在得到的完全图中,随机挑选一个起点,找到 MST
  3. 将 Class Variables 与 MST 中的所有节点/变量相连,得到最终的贝叶斯网络。对于这个网络,使用训练集数据去学习参数,最终用来进行预测

在这里插入图片描述

关于贝叶斯网络的学习

我们这一节实际上就是将贝叶斯网络作为一个分类器 (Classifier) 来使用。就和其他的分类器一样,我们使用训练集去学习它的参数 (Parameters),最终得到一个性能符合要求的分类器去进行预测和分类。只是在贝叶斯网络中,我们所说的参数,指的是 “每个节点的 CPT”。所以,使用训练集去学习参数的过程,就是在得到一个网络中所有 CPT 的过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值