第四章 朴素贝叶斯法
4.1 朴素贝叶斯法概述
朴素贝叶斯法(Naive Bayes)是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入与输出的联合概率分布;然后基于此模型,对给定的输入向量,利用贝叶斯定理求出后验概率最大的输出类别。
朴素贝叶斯法实现简单,学习与预测的效率都很高,是一种常用的分类方法。它在垃圾邮件识别、文本分类、推荐系统等场景中有广泛应用。尽管其假设在现实中往往不成立,但实践证明朴素贝叶斯法在许多实际任务中表现良好,具有较强的鲁棒性。
朴素贝叶斯法得名于其中的两个核心要素:一是"贝叶斯",即利用贝叶斯定理进行后验概率的计算;二是"朴素",即假定特征与特征之间在给定类别的条件下满足条件独立性。这一假设简化了联合概率分布的学习,但可能导致后验概率的估计出现偏差。
4.2 朴素贝叶斯法的条件独立性假设
朴素贝叶斯法的核心假设是特征条件独立假设。设输入空间为 \(n\) 维向量的集合,输出空间为类标记集合。设训练数据集为:
其中,\(x_i = (x_i^{(1)}, x_i^{(2)}, \cdots, x_i^{(n)})^T\) 为输入实例的特征向量,\(y_i \in \{c_1, c_2, \cdots, c_K\}\) 为类别标记。
条件独立性假设是指在给定类别 \(Y\) 的条件下,特征 \(X_1, X_2, \cdots, X_n\) 之间相互独立,即每一个特征 \(X_i\) 的条件概率分布只依赖于类别 \(Y\),而与其他特征无关。数学表达式为:
这个假设意味着:
其中,\(x = (x^{(1)}, x^{(2)}, \cdots, x^{(n)})^T\) 表示输入向量 \(x\) 的各个特征分量。
条件独立性假设大大简化了联合概率分布的学习复杂度。如果没有这一假设,我们需要学习 \(P(X \mid Y)\) 中 \(n\) 个特征的联合分布,这通常需要大量的训练数据和计算资源。而在条件独立性假设下,我们只需要学习每个单独特征 \(X_i\) 在给定类别 \(Y\) 下的条件概率分布,然后将它们连乘起来即可。
4.3 贝叶斯定理与后验概率计算
贝叶斯定理是朴素贝叶斯法的数学基础。贝叶斯定理描述了如何根据已有数据更新对某一假设的概率估计。设 \(X\) 表示输入特征向量,\(Y\) 表示类别标记,则贝叶斯定理为:
其中,各概率的含义如下:
-
\(P(Y = c_k)\) 是类别 \(c_k\) 的先验概率(prior probability),表示在观测到输入特征之前,我们对类别 \(c_k\) 的先验认知。先验概率可以从训练数据中直接估计得到,即 \(P(Y = c_k) = \frac{\sum_{i=1}^{N} I(y_i = c_k)}{N}\)。
-
\(P(X = x \mid Y = c_k)\) 是给定类别 \(c_k\) 下观察到特征向量 \(x\) 的似然(likelihood)。在朴素贝叶斯法中,我们利用条件独立性假设将其分解为 \(\prod_{i=1}^{n} P(X^{(i)} = x^{(i)} \mid Y = c_k)\)。
-
\(P(X = x)\) 是特征向量 \(x\) 的边缘概率(marginal probability),也称为证据(evidence)。它是对所有类别求和的结果:\(P(X = x) = \sum_{k=1}^{K} P(X = x \mid Y = c_k) \cdot P(Y = c_k)\)。在分类时不依赖于具体类别,因此对比较后验概率大小没有影响。
-
\(P(Y = c_k \mid X = x)\) 是给定特征向量 \(x\) 下类别为 \(c_k\) 的后验概率(posterior probability),这是我们最终用于分类的概率。
由于 \(P(X = x)\) 对所有类别 \(c_k\) 都是相同的,在比较后验概率时,我们可以忽略这一归一化常数。因此,后验概率的计算简化为:
朴素贝叶斯分类器就是在这个后验概率基础上,选择具有最大后验概率的类别作为分类结果,即:
4.4 最大后验估计与极大似然估计
4.4.1 最大后验估计(MAP)
在贝叶斯统计学框架下,我们不仅要估计参数,还要考虑参数的先验分布。最大后验估计(Maximum A Posteriori estimation,简称MAP)是在已知观测数据的条件下,寻找使后验概率最大的参数值。
设 \(\theta\) 为待估计的参数,\(x\) 为观测数据,则MAP估计定义为:
由于 \(P(x)\) 与 \(\theta\) 无关,上式等价于:
其中,\(P(x \mid \theta)\) 是似然函数,\(P(\theta)\) 是参数 \(\theta\) 的先验分布。
在朴素贝叶斯法中,我们使用MAP估计来学习先验概率 \(P(Y = c_k)\) 和条件概率 \(P(X^{(i)} = x^{(i)} \mid Y = c_k)\)。具体而言,对于先验概率 \(P(Y = c_k)\),如果我们假设其先验分布为均匀分布(或等价地,使用最大似然估计),则MAP估计与MLE一致。如果我们引入先验分布(如Beta分布用于二项分布参数),则会得到不同的估计结果。
MAP估计的优势在于可以通过先验分布引入领域知识或正则化约束,从而避免过拟合。特别是在训练数据较少时,合理的先验分布可以显著改善模型的泛化能力。
4.4.2 极大似然估计(MLE)
极大似然估计(Maximum Likelihood Estimation,简称MLE)是另一种常用的参数估计方法。MLE的核心思想是:找到使观测数据出现的概率(似然)最大的参数值。
设训练数据集 \(D = \{x_1, x_2, \cdots, x_N\}\),参数 \(\theta\) 的似然函数为 \(L(\theta; D) = P(D \mid \theta) = \prod_{i=1}^{N} P(x_i \mid \theta)\)。MLE估计定义为:
为了便于计算,通常对似然函数取对数得到对数似然函数:
4.4.3 高斯朴素贝叶斯中的MLE
高斯朴素贝叶斯(Gaussian Naive Bayes)是朴素贝叶斯法的一种常见变体,假设每个特征在给定类别条件下服从正态分布(高斯分布)。具体地:
其中,\(\mu_{ik}\) 是类别 \(c_k\) 下特征 \(X^{(i)}\) 的均值,\(\sigma_{ik}^2\) 是对应的方差。
使用MLE估计这些参数时,均值和方差的估计公式为:
也就是说,\(\hat{\mu}_{ik}\) 是类别 \(c_k\) 中所有样本在第 \(i\) 个特征上的平均值,\(\hat{\sigma}_{ik}^2\) 是对应的样本方差。
在实际分类时,对于输入向量 \(x\),我们计算每个类别 \(c_k\) 的后验概率:
取对数后可以避免连乘带来的数值下溢问题。
4.5 EM算法简介
EM算法(Expectation-Maximization Algorithm)是一种迭代优化算法,用于含有隐变量(latent variable)的概率模型参数估计。朴素贝叶斯法中,如果某些特征值缺失或某些类别标记未知,就可以使用EM算法进行参数估计。
4.5.1 EM算法的基本思想
EM算法通过迭代进行两步交替计算:E步(Expectation step)和M步(Maximization step),直至收敛。
设观测数据为 \(X\),隐变量为 \(Z\),模型参数为 \(\theta\)。EM算法的目标是最大化观测数据的似然函数 \(P(X \mid \theta)\)。由于隐变量的存在,直接最大化似然函数是困难的。EM算法通过引入隐变量的后验分布来解决这一问题。
EM算法的每一步迭代包含以下两步:
E步(期望步):计算在当前参数 \(\theta^{(t)}\) 下,隐变量 \(Z\) 的条件分布的期望,即Q函数:
具体地,Q函数是在当前观测数据 \(X\) 和当前参数 \(\theta^{(t)}\) 条件下,隐变量 \(Z\) 对完整数据对数似然的数学期望。
M步(最大化步):寻找新的参数 \(\theta^{(t+1)}\) 使得Q函数最大化:
交替迭代这两个步骤,直至参数收敛或达到预设的迭代次数上限。
4.5.2 EM算法的收敛性
可以证明,在一定条件下(通常要求似然函数关于参数连续且模型参数空间满足正则条件),EM算法的每次迭代都会使观测数据的似然函数值增大(或至少不减小),即:
当似然函数收敛时,算法达到局部最优解。需要注意的是,EM算法只能保证收敛到局部极值点,而非全局最优值。多次随机初始化可以帮助缓解这一问题。
4.6 零概率问题与拉普拉斯平滑
4.6.1 零概率问题
在朴素贝叶斯分类中,我们需要计算条件概率 \(P(X^{(i)} = x^{(i)} \mid Y = c_k)\)。如果某个特征值 \(x^{(i)}\) 在训练数据集中从未在类别 \(c_k\) 下出现过,那么根据最大似然估计,该条件概率将被估计为 \(0\)。
这会导致一个严重的问题:假设我们要分类的样本在某个特征上取了一个从未在训练数据中出现的值,即使其他特征强烈支持某一类别,由于该特征对应的条件概率为 \(0\),连乘后整个后验概率也会变为 \(0\)。这使得模型完全无法对该样本进行正确分类。
更形式化地说,假设在类别 \(c_k\) 下特征 \(X^{(i)}\) 的取值有 \(S_i\) 种可能。根据最大似然估计,当某特征值在训练集中从未出现时,其概率为 \(0\)。但这并不意味着在实际应用中该特征值出现的真实概率就是 \(0\)——它只是没有在有限的训练样本中被观测到而已。
4.6.2 拉普拉斯平滑
拉普拉斯平滑(Laplace Smoothing),也称为加法平滑(Additive Smoothing),是解决零概率问题最常用的方法。其基本思想是在每个特征的计数上添加一个正数 \(\lambda\)(通常取 \(\lambda = 1\)),从而避免概率值为零的情况。
对于先验概率的拉普拉斯平滑:
其中,\(K\) 是类别的总数,\(N\) 是样本总数。当 \(\lambda = 1\) 时,上式变为:
对于条件概率的拉普拉斯平滑,设特征 \(X^{(i)}\) 在类别 \(c_k\) 下有 \(S_i\) 个可能的取值,则:
当 \(\lambda = 1\) 时:
拉普拉斯平滑的本质是通过引入一个均匀先验,将零概率事件赋予一个小的非零概率,从而保证所有特征组合的后验概率都不为零。同时,随着训练数据的增加,平滑后的概率会趋近于真实概率,因此不会影响模型在大样本下的渐近性能。
需要注意的是,拉普拉斯平滑假设所有特征值都是等可能的,即服从均匀分布。如果这个假设与实际情况严重不符,可以考虑使用更一般的 Lidstone 平滑(取 \(\lambda \in (0,1)\))或带权重的平滑方法。
4.7 朴素贝叶斯分类算法与分类效率
4.7.1 朴素贝叶斯分类算法步骤
朴素贝叶斯分类算法可以分为离线学习和在线分类两个阶段。具体步骤如下:
输入:训练数据集 \(T = \{(x_1, y_1), (x_2, y_2), \cdots, (x_N, y_N)\}\),其中 \(x_i = (x_i^{(1)}, x_i^{(2)}, \cdots, x_i^{(n)})^T\),\(y_i \in \{c_1, c_2, \cdots, c_K\}\);待分类的输入实例 \(x\)。
输出:实例 \(x\) 的类别。
算法步骤:
1。 计算先验概率及条件概率。根据训练数据集,估计每个类别 \(c_k\) 的先验概率 \(P(Y = c_k)\),以及每个特征 \(X^{(i)}\) 在每个类别 \(c_k\) 下的条件概率 \(P(X^{(i)} = x^{(i)} \mid Y = c_k)\)。这一步骤可以通过极大似然估计完成,必要时使用拉普拉斯平滑。
2。 对于给定的输入实例 \(x = (x^{(1)}, x^{(2)}, \cdots, x^{(n)})^T\),计算后验概率。对每一个类别 \(c_k \in \{c_1, c_2, \cdots, c_K\}\),计算:
$\(P(Y = c_k) \cdot \prod_{i=1}^{n} P(X^{(i)} = x^{(i)} \mid Y = c_k)\)$
由于 \(P(X = x)\) 对所有类别相同,比较上述表达式的大小即可确定后验概率的相对大小。
3。 确定实例 \(x\) 的类别。选择使后验概率最大的类别作为 \(x\) 的分类结果:
$\(y = \arg\max_{c_k} P(Y = c_k) \cdot \prod_{i=1}^{n} P(X^{(i)} = x^{(i)} \mid Y = c_k)\)$
在实际实现中,为了避免大量连乘导致的数值下溢(underflow),通常将连乘转换为求和——即对后验概率取对数,利用对数的加法性质来计算:
然后取对数后验概率最大的类别。
4.7.2 朴素贝叶斯法的分类效率
朴素贝叶斯法的分类效率主要体现在以下几个方面:
计算复杂度低:朴素贝叶斯法的学习(参数估计)过程只需要对训练数据进行一遍扫描,统计各类别的样本数和特征值的出现次数即可。设训练数据集有 \(N\) 个样本、\(n\) 个特征、\(K\) 个类别,则学习的时间复杂度为 \(O(N \cdot n + K \cdot n \cdot S)\),其中 \(S\) 是特征的平均取值数目。分类过程的时间复杂度为 \(O(n \cdot K)\),即对每个类别计算 \(n\) 个条件概率的乘积。
不涉及迭代优化:与决策树、支持向量机等方法不同,朴素贝叶斯法的参数估计有解析解,不需要迭代优化过程,因此训练速度非常快,也不存在局部最优和收敛速度的问题。
对特征条件独立假设的依赖:虽然条件独立性假设在现实中往往不成立,但朴素贝叶斯法在许多实际分类任务中仍然表现出良好的性能。这是因为分类错误率的降低不仅仅取决于后验概率估计的准确性,还取决于分类决策规则的最优性。在某些情况下,即使条件独立假设不成立,朴素贝叶斯分类器仍然能够接近最优分类效果。
特征类型的影响:对于离散特征的分类问题,朴素贝叶斯法通常表现较好。对于连续特征,可以将其离散化或假设服从高斯分布(高斯朴素贝叶斯)。特征之间的相关性会降低朴素贝叶斯法的性能,因为假设不成立时估计的后验概率会有偏差。
与贝叶斯网络的比较:朴素贝叶斯法可以看作是贝叶斯网络(Bayesian Network)中一种最简单的拓扑结构——所有特征都以类别节点为父节点,且特征之间不存在其他依赖关系。贝叶斯网络可以表示更复杂的特征依赖关系,但其学习与推理的计算复杂度也更高。在特征独立性假设合理的情况下,朴素贝叶斯法因其简洁性和高效性而更受青睐。
公式汇总表
| 编号 | 公式名称 | 公式表达式 |
|---|---|---|
| (4.1) | 条件独立性假设 | $\(P(X_1 = x_1, \cdots, X_n = x_n \mid Y = c_k) = \prod_{i=1}^{n} P(X_i = x_i \mid Y = c_k)\)$ |
| (4.2) | 贝叶斯定理 | $\(P(Y = c_k \mid X = x) = \frac{P(X = x \mid Y = c_k) \cdot P(Y = c_k)}{P(X = x)}\)$ |
| (4.3) | 朴素贝叶斯分类器 | $\(y = \arg\max_{c_k} P(Y = c_k) \cdot \prod_{i=1}^{n} P(X^{(i)} = x^{(i)} \mid Y = c_k)\)$ |
| (4.4) | MAP估计 | $\(\hat{\theta}_{\text{MAP}} = \arg\max_{\theta} P(x \mid \theta) \cdot P(\theta)\)$ |
| (4.5) | MLE估计 | $\(\hat{\theta}_{\text{MLE}} = \arg\max_{\theta} \prod_{i=1}^{N} P(x_i \mid \theta)\)$ |
| (4.6) | 高斯条件概率 | $\(P(X^{(i)} = x^{(i)} \mid Y = c_k) = \frac{1}{\sqrt{2\pi\sigma_{ik}^2}} \exp\left(-\frac{(x^{(i)} - \mu_{ik})^2}{2\sigma_{ik}^2}\right)\)$ |
| (4.7) | 高斯NB均值估计 | $\(\hat{\mu}_{ik} = \frac{\sum_{j=1}^{N} I(y_j = c_k) \cdot x_j^{(i)}}{\sum_{j=1}^{N} I(y_j = c_k)}\)$ |
| (4.8) | 高斯NB方差估计 | $\(\hat{\sigma}_{ik}^2 = \frac{\sum_{j=1}^{N} I(y_j = c_k) \cdot (x_j^{(i)} - \hat{\mu}_{ik})^2}{\sum_{j=1}^{N} I(y_j = c_k)}\)$ |
| (4.9) | EM算法Q函数 | $\(Q(\theta \mid \theta^{(t)}) = E_Z \left[ \log P(X, Z \mid \theta) \mid X, \theta^{(t)} \right]\)$ |
| (4.10) | 先验概率拉普拉斯平滑 | $\(P(Y = c_k) = \frac{\sum_{i=1}^{N} I(y_i = c_k) + \lambda}{K \cdot \lambda + N}\)$ |
| (4.11) | 条件概率拉普拉斯平滑 | $\(P(X^{(i)} = x^{(i)} \mid Y = c_k) = \frac{\sum_{j=1}^{N} I(x_j^{(i)} = x^{(i)}, y_j = c_k) + \lambda}{\sum_{j=1}^{N} I(y_j = c_k) + S_i \cdot \lambda}\)$ |