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

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

假设我们已有一个针对乳腺癌 (Breast Cancer) 的诊断模型,该模型是一个贝叶斯网络:
Advanced Topics in Statistical Machine Learning 笔记04:Bayesian Networks as Classifiers
我们的目标是使用给定的一系列乳腺摄影结果 (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 的马尔科夫毯,我们能够得到以下结果:

Advanced Topics in Statistical Machine Learning 笔记04:Bayesian Networks as Classifiers
因此,在这次的分类任务中,我们只需要关注以上这些变量即可。在找到了我们需要的变量之后,只需要使用 MPE 查询即可得到结果 (Inference),因为本例中的变量还是有一些多,所以这里我们用另一个比较简单的例子来看具体的计算:

Advanced Topics in Statistical Machine Learning 笔记04:Bayesian Networks as Classifiers
本例中,我们的 Query Variable 为 Q = {B}. 目前我们已知 Evidence 为 ????: ???? = ????????????????, ???? = ????????????????????, ???? = ????????????????, E = ????????????????????,同时 B 是一个二值变量,因此需要根据贝叶斯网络的链式法则 (Chain Rule) 来分别计算 B 两种不同情况的概率:

Advanced Topics in Statistical Machine Learning 笔记04:Bayesian Networks as Classifiers
根据最后的计算结果,我们能够得到,在给定当前 Evidence 的前提下,B 为 True 的概率更高,因此最后的预测结果/推断结果 (Prediction/Inference Result) 即为 B 为 True。这里通过观察链式计算的式子,我们其实可以发现,尽管所有在 Merkov(B) 中的变量都会影响 P(B, ????) 的值,但是真正决定最后计算结果的还是所有包含变量 B 的那些 CPTs。

Advanced Topics in Statistical Machine Learning 笔记04:Bayesian Networks as Classifiers
这并不意味着马尔科夫毯没有意义,实际上我们能看到这些最重要的 CPTs 都在我们用马尔科夫毯筛选出来的变量内。但是另一方面,这个性质能够帮助我们进一步减少需要纳入计算的变量:

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

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

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

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

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

Advanced Topics in Statistical Machine Learning 笔记04:Bayesian Networks as Classifiers
比如,我们有 n=10 个 Attributes,且每个变量都是二值变量,那么,此时 Joint Probability 需要 20480 个参数,而 NBC 需要 400 个左右。除此以外,NBC 常会将对数概率 (Logarithm Probability) 来减轻计算压力,这么做会能将概率之间的乘法变为加法。

参数估计(Parameter Estimation)

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

Advanced Topics in Statistical Machine Learning 笔记04:Bayesian Networks as Classifiers
如此一来我们就可以基于经验分布来估计出参数,比如:

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

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

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

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

Advanced Topics in Statistical Machine Learning 笔记04:Bayesian Networks as Classifiers
具体的操作方式很简单:

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

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

关于贝叶斯网络的学习

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