朴素贝叶斯算法在医疗文本分类中的应用
在医疗信息化进程中,非结构化文本数据占据了医疗信息的很大比重——从电子病历的病程记录、出院小结,到医学文献、临床指南,乃至患者的在线咨询记录。如何从这些海量文本中高效、准确地提取关键信息,是医疗 AI 面临的重要挑战。朴素贝叶斯(Naïve Bayes)算法以其简单、高效、对高维稀疏数据适应性强的特点,成为医学文本分类任务中的经典利器。
算法原理
朴素贝叶斯是一系列基于贝叶斯定理的分类算法,其核心是'朴素'的条件独立性假设——在给定类别的情况下,各个特征之间相互独立。尽管这一假设在现实中很少完全成立,但朴素贝叶斯在众多实际任务中仍表现出色,尤其是在文本分类领域。
贝叶斯定理
贝叶斯定理描述了在已知某些条件下,事件发生的概率如何更新。对于分类问题,我们希望计算给定样本 $x$ 的条件下,其属于类别 $C_k$ 的概率,即后验概率 $P(C_k | x)$。根据贝叶斯定理:
$$ P(C_k | x) = \frac{P(x | C_k) P(C_k)}{P(x)} = \frac{P(x | C_k) P(C_k)}{\sum_j P(x | C_j) P(x | C_j)} $$
其中:
- $P(C_k)$ 是类别 $C_k$ 的先验概率,可从训练数据中估计。
- $P(x | C_k)$ 是给定类别 $C_k$ 的条件下,样本 $x$ 出现的似然。
- $P(x)$ 是证据因子,对于给定样本是常数,因此分类决策可简化为比较分子的大小。
朴素贝叶斯的'朴素'假设
设样本 $x = (x_1, x_2, …, x_p)$ 包含 $p$ 个特征。朴素贝叶斯假设在给定类别 $C_k$ 的条件下,各个特征之间相互独立,即:
$$ P(x | C_k) = \prod_{i=1}^{p} P(x_i | C_k) $$
这一假设极大地简化了计算,因为原本需要估计联合概率分布,现在只需要估计每个特征的条件概率。尽管独立性假设通常不成立,但研究表明,在许多分类任务中,朴素贝叶斯依然能取得良好的性能,尤其是在特征之间相关性不强或数据集足够大的情况下。
三种常见的朴素贝叶斯模型
根据特征的不同分布假设,朴素贝叶斯有以下三种常见变体:
1. 高斯朴素贝叶斯(Gaussian Naïve Bayes)
适用于连续数值型特征,假设特征在给定类别下服从正态分布: $$ P(x_i | C_k) = \frac{1}{\sqrt{2\pi\sigma_{ik}^2}} \exp\left(-\frac{(x_i - \mu_{ik})^2}{2\sigma_{ik}^2}\right) $$ 其中 $\mu_{ik}$ 和 $\sigma_{ik}^2$ 是类别 $C_k$ 中第 $i$ 个特征的均值和方差,从训练数据中估计。
2. 多项式朴素贝叶斯(Multinomial Naïve Bayes)
适用于离散特征,特别是文本分类中的词频或 TF-IDF 值。假设特征向量 $x$ 由计数组成(如单词出现次数),则条件概率为: $$ P(x | C_k) = \frac{(\sum_i x_i)!}{\prod_i x_i!} \prod_i \theta_{ki}^{x_i} $$ 其中 $\theta_{ki}$ 是类别 $C_k$ 中特征 $i$ 出现的概率,可用平滑技术(如拉普拉斯平滑)估计: $$ \hat{\theta}{ki} = \frac{N{ki} + \alpha}{N_k + \alpha n} $$ 这里 $N_{ki}$ 是类别 $C_k$ 中特征 $i$ 的总计数,$N_k$ 是类别 $C_k$ 中所有特征的总计数,$n$ 是特征总数,$\alpha$ 是平滑参数(通常取 1)。
3. 伯努利朴素贝叶斯(Bernoulli Naïve Bayes)
适用于二元特征(如单词是否出现)。假设特征 $x_i$ 取值为 0 或 1,则条件概率为: $$ P(x | C_k) = \prod_{i=1}^{p} \theta_{ki}^{x_i} (1 - \theta_{ki})^{1-x_i} $$ 其中 $\theta_{ki} = P(x_i = 1 | C_k)$,可用平滑估计。
在医学文本分类中,多项式朴素贝叶斯和伯努利朴素贝叶斯最为常用,因为文本数据通常表示为词频或词出现与否。
拉普拉斯平滑
在估计条件概率时,如果某个特征在训练集中未出现,其概率会为零,导致整个乘积为零。为避免这一问题,通常引入拉普拉斯平滑(加一平滑): $$ P(x_i | C_k) = \frac{\text{计数}(x_i, C_k) + \alpha}{\text{总计数}(C_k) + \alpha \cdot n} $$ 其中 $\alpha \geq 0$ 是平滑参数,通常取 1。
对数概率与数值稳定性
由于多个概率相乘可能导致数值下溢,实际计算中通常取对数,将乘法转化为加法: $$ \log P(C_k | x) \propto \log P(C_k) + \sum_{i=1}^{p} \log P(x_i | C_k) $$ 由于对数函数单调递增,分类时只需比较不同类别的对数后验概率大小即可。


