从朴素贝叶斯分类器到贝叶斯网络(上)
一、贝叶斯公式(一些必备的数学基础)
贝叶斯(Thomas Bayes)是生活在18世纪的一名英国牧师和数学家。由于历史久远的原因以及缺乏相关的著作留存记录,如今人们对贝叶斯的研究成果了解甚微。唯一已知的是,在概率论领域他提出了贝叶斯定理。然而从他曾经当选为英国皇家科学学会会员的角度来看,则可以看出他的研究成果在当时就获得了广泛的认可。
实际上,在相当长的一段时间内,人们并未充分认识到贝叶斯公式的潜在巨大价值。直到20世纪新兴学科领域的出现后,在成堆积压的陈旧数学公式中才重新挖掘出其巨大的作用与意义。作为后续章节的基础知识,请让我们先来系统梳理一下概率论的基本概念与理论框架。
在给定事件B已经发生的条件下发生的事件A的概率被称为条件概率,并用符号P(A|B)表示
两个随机事件同时发生的概率被称为联合概率。A和B的联合概率通常表示为 P(AB) 或 P(A,B)。
进而有,P(AB) = P(B)P(A|B)=P(A)P(B|A)。这也就导出了最简单形式的贝叶斯公式,即
P(A|B)=P(B|A)*P(A)/P(B)
以及条件概率的链式法则
P(A1,A2,...,An) = P(An|A1,A2,...,An-1)P(An-1|A1,A2,...,An-2)...P(A2|A1)P(A1)
概率论中还有一个全概率公式

由此可进一步导出完整的贝叶斯公式

二、朴素贝叶斯分类器(Naïve Baysian classifier)
分类作为一种基础性的工作,在机器学习和数据挖掘中被广泛采用。在进行分类任务时,我们通常会处理一组训练样本(training samples),它们与对应的类别标签(class labels)一一对应。每个样本可以表示为n维属性向量X=(x₁,x₂,…,xₙ),其中每个元素代表不同的特征维度。共有K个类别(classes),它们分别标记为C₁,C₂,…,C_K。我们的目标是通过建立一个分类模型,在给定输入特征向量X后,能够将其正确归类到相应的类别中。
该分类器的基本原理极为简单, 其核心在于基于贝叶斯公式的推导即可实现分类功能, 因此得名"朴素".对于每一个类别Ci, 在给定训练元组X的情况下, 则通过贝叶斯公式计算相应的条件概率P(Ci|X).
P(Ci|X) = P(X|Ci)P(Ci)/P(X)
只有在所有情况下概率值P(C_i|X)达到最高水平时才认为X属于C_i。进一步说明的是,在这种分类标准下由于对于所有类别而言P(X)均保持不变因此实际上只需使满足条件的概率乘积P(C_i|X)= P(X|C_i)P(C_i)达到最大值。
应用该分类器时需遵循所有属性均相互独立这一前提。具体而言,在给定类别条件下各属性彼此之间不存在依赖关系。例如,在已知类别情况下的各属性相互独立。

本文旨在介绍贝叶斯分类器的基本原理与应用方法。让我们参考以下案例:一个人如果出现头疼、咽痛、咳嗽等症状,并伴有体温偏高,则可能患普通感冒;若同时出现发热症状则应考虑流感的可能。根据这些症状特征进行分析判断一个人的病情类型。

作为我们提供的训练数据样本,请问一位患者来到诊所就诊时的症状表现为: severe headache、no soreness、normal temperature以及cough。根据这些症状,请判断他可能患有普通感冒还是流感?通过分析可知,在这里分为Flu和Cold两种类别。进而需要计算以下哪种概率更高。
P( Flu| Headache = severe, Sore = no,Temperature = normal, Cough = yes)
≅P(Flu) × P(Headache为中度疼痛且流感存在) × P(无 sore症状 | 流感存在) × P(体温正常情况下的概率 | 流感存在) × P(咳嗽存在的情况 | u流感存在)
P( Cold| Headache = severe, Sore = no,Temperature = normal, Cough = yes)
≅ P(无感冒症状)*P(严重头痛|无感冒症状)P(无疼痛症状|无感冒症状) P\left({温度正常}|{无感冒症状}\right) * P(有咳嗽症状(咳嗽存在)|无感冒症状)
为了获得上述结果,
我们需要利用已知数据(即训练数据),让机器自行构建一个预测模型。
基于现有的模型能够推导出下表中的结论。

以及

e is a tiny value, specifically set as 10^{-7} (one can choose e to be smaller than 1/n, where n represents the total number of training data points).
P( Flu| Headache = severe, Sore = no,Temperature = normal, Cough = yes)
prob(流感) \times prob(严重头痛 | 流感) \times prob(无 sore throat | 流感) \times prob(正常体温 | 流感) \times prob(咳嗽 | 流感)
= 3/5 × 2/3 × e × 2/3 × 3/3 = 0.26e
P( Cold| Headache = severe, Sore = no,Temperature = normal, Cough = yes)
概率(冷) \times 条件概率(头痛严重 | 冷) \times 条件概率(没有酸痛感 | 冷) \times 条件概率(体温正常 | 冷) \times 条件概率(咳嗽存在 | 冷)
= 2/5 × e × ½ × 1 × ½ = 0.1e
显然P(Flu) > P(Cold),所以我们的诊断(预测,分类)结果是 Flu。
对以下内容进行探讨:朴素贝叶斯分类器的特性基于公开信息的归纳总结,无需额外解释。
基于朴素贝叶斯的方法相对简单易懂,并且能够快速得出结论。其适应性较高,在新数据引入时能够轻松更新概率。特别地,在新数据作为补充信息而非修改原有数据的情况下。
• Works well in many application areas.
• Scales easily for large number of dimensions (100s) and data sizes.
• Easy to explain the reason for the decision made.
Perhaps the best approach is to begin with NB and then advance to more complex classification methods.
我们将把贝叶斯网络留待下一篇文章中介绍(未完,待续...)。
