Skip to content

朴素贝叶斯

朴素贝叶斯是一族基于贝叶斯定理与特征条件独立假设的概率分类器。它训练极快、对高维稀疏数据(尤其是文本)表现稳健,是垃圾邮件过滤、情感分析、新闻分类的经典首选。尽管”朴素”的独立假设在现实中几乎从不成立,它却出奇地好用。前置阅读:监督学习、概率论基础。

把朴素贝叶斯想象成一个老练的医生做快速判断:

  • 你描述了一组症状(发烧、咳嗽、味觉丧失),医生脑子里飞速盘算:“得流感的人里有多少发烧的?有多少咳嗽的?得新冠的人里有多少味觉丧失的?“——他在估每个症状在不同疾病下的出现频率。
  • 然后他结合每种疾病的常见程度(先验概率:流感季流感很多,新冠要看疫情),反推出”最可能的诊断”。
  • “朴素”在哪? 医生假设每个症状独立出现——发烧和咳嗽互不影响。这显然不真实(发烧经常伴随咳嗽),但只要各症状的频率估计得准,最后排序仍然靠谱。
  • 输出是概率分布:不只给最可能的类,还给出”70% 是新冠、25% 是流感、5% 是普通感冒”这样的置信度。

为什么”错误”的独立假设反而好用?因为分类只关心哪个类的后验概率最大,不需要概率绝对准确。独立假设虽然扭曲了概率数值,但通常不改变各类的相对排序——只要排序对了,分类就对了。

更深层的原因是:当特征之间相关性在各个类别中大致相同时,独立性假设的偏差对所有类是均匀的——就像一把歪了固定角度的尺子,量出来的绝对值不准,但长短比较仍然对。Domingos 和 Pazzani(1997)从理论上证明:在零一损失(0-1 loss,即只看分类对错、不关心概率准确度的评价标准)下,朴素贝叶斯在很多数据分布下接近最优分类器。

贝叶斯定理是整个概率推理的基石——它告诉我们如何根据新证据更新信念。分类的核心是求后验概率(posterior probability,即观察到证据后某假设成立的概率)——在观察到特征 x 的情况下,样本属于类 c 的概率:

P(c∣x)=P(x∣c)⋅P(c)P(x)P(c \mid x) = \frac{P(x \mid c) \cdot P(c)}{P(x)}

公式右边三个量的含义:

  • P(c) 是先验(prior):在看到任何特征之前,我们对”样本属于类 c”的初始信念。实践中就是训练集中 c 类样本占比。例如 1000 封邮件中有 300 封垃圾邮件,则 P(垃圾) = 0.3。
  • P(x | c) 是似然(likelihood):如果样本确实属于 c 类,它表现出特征 x 的概率有多大。例如在垃圾邮件中,出现”免费”一词的概率可能是 0.8。
  • P(x) 是证据(evidence / marginal likelihood):特征 x 在所有类别下出现的总概率。它对每个类别都一样,是一个归一化常数——分类时可以忽略。
  • P(c | x) 是后验(posterior):我们真正想要的——观察到特征 x 之后,样本属于 c 的概率。

分类规则就是取后验最大的类(最大后验概率,MAP,Maximum A Posteriori):

arg⁡max⁡cP(c∣x)=arg⁡max⁡cP(x∣c)⋅P(c)\arg\max_c P(c \mid x) = \arg\max_c P(x \mid c) \cdot P(c)

由于 P(x) 对所有类相同,从 argmax 中省去。

直接估 P(x | c) 需要知道所有特征的联合分布——如果有 10000 个词,每个词出现/不出现,联合分布就有 2^10000 种情况,根本无法从有限数据中估计(这就是维度灾难,curse of dimensionality:特征越多,所需样本量指数级增长)。

朴素贝叶斯假设给定类别后特征条件独立(conditional independence)——知道类别之后,各特征之间不再相互影响:

P(x∣c)=P(x1∣c)⋅P(x2∣c)⋅⋯⋅P(xn∣c)P(x \mid c) = P(x_1 \mid c) \cdot P(x_2 \mid c) \cdot \cdots \cdot P(x_n \mid c)

这一步把高维联合概率拆成各特征一维概率的乘积——每个 P(xi | c) 只需要在训练集的 c 类样本里统计 xi 出现的频率即可。这就是它训练飞快的根本原因:无需优化迭代,只需遍历数据一次统计计数。

一个具体数字示例:假设有 4 封邮件——2 封垃圾(均含”中奖”),2 封正常(1 封含”中奖”)。 P(垃圾)=2/4=0.5P(\text{垃圾}) = 2/4 = 0.5,P(中奖∣垃圾)=2/2=1.0P(\text{中奖}\mid\text{垃圾}) = 2/2 = 1.0,P(中奖∣正常)=1/2=0.5P(\text{中奖}\mid\text{正常}) = 1/2 = 0.5。 现在收到一封含”中奖”的新邮件: P(垃圾∣中奖)∝P(中奖∣垃圾)⋅P(垃圾)=1.0×0.5=0.5P(\text{垃圾}\mid\text{中奖}) \propto P(\text{中奖}\mid\text{垃圾}) \cdot P(\text{垃圾}) = 1.0 \times 0.5 = 0.5 P(正常∣中奖)∝P(中奖∣正常)⋅P(正常)=0.5×0.5=0.25P(\text{正常}\mid\text{中奖}) \propto P(\text{中奖}\mid\text{正常}) \cdot P(\text{正常}) = 0.5 \times 0.5 = 0.25 归一化后:P(垃圾∣中奖)=0.5/(0.5+0.25)≈0.67P(\text{垃圾}\mid\text{中奖}) = 0.5 / (0.5+0.25) \approx 0.67。判定为垃圾邮件。

不同特征类型对应不同的似然分布假设:

  • 高斯朴素贝叶斯(GaussianNB):连续特征假设在各类内服从高斯分布(即正态分布),用类内均值 μc\mu_c 和方差 σc2\sigma_c^2 估概率:
P(xi∣c)=12πσc2⋅exp⁡(−(xi−μc)22σc2)P(x_i \mid c) = \frac{1}{\sqrt{2\pi\sigma_c^2}} \cdot \exp\left( -\frac{(x_i - \mu_c)^2}{2\sigma_c^2} \right)

适合身高、温度、传感器读数等一般连续特征。

  • 多项式朴素贝叶斯(MultinomialNB):特征是计数(如词频、TF-IDF 值),假设服从多项式分布。文本分类(TF / TF-IDF 特征)的标准选择。核心公式:
P(xi∣c)=类 c 中词 i 的总出现次数+α类 c 中所有词的总出现次数+α⋅∣V∣P(x_i \mid c) = \frac{\text{类 } c \text{ 中词 } i \text{ 的总出现次数} + \alpha}{\text{类 } c \text{ 中所有词的总出现次数} + \alpha \cdot |V|}

其中 |V| 是词表大小。

  • 伯努利朴素贝叶斯(BernoulliNB):特征是二值(词出现 / 不出现),假设服从伯努利分布。与多项式不同,伯努利模型显式考虑”词没出现”这一事件的概率。适合短文本或二值化特征。

  • 补充朴素贝叶斯(ComplementNB):专门为类别不平衡数据设计。标准 NB 在不均衡数据上偏向多数类,ComplementNB 通过对”非目标类”的统计来修正这一偏置,特别适合文本分类中线imbalance严重的场景。

如果某个特征值在训练集的某类中从未出现(比如测试集遇到一个新词),P(xi | c) 等于 0,会让整个乘积变 0——一个零概率会一票否决其他所有特征的证据。这在长文本分类中几乎必然发生(总有没见过的词组合)。

解决方法是拉普拉斯平滑(Laplace Smoothing,又称加一平滑 / Add-one Smoothing):

P(xi | c) = (该类中 xi 出现次数 + α) / (该类样本总数 + α · 特征取值数)

α 通常取 1(经典”加一”)。这一招保证概率不为零,且当训练数据足够多时对估计影响很小。α 越大,平滑越强——可以想象成”给每个可能值都预分配一些伪计数”。

更一般地,α 不必为 1,可以取 (0, 1] 之间任意值,用网格搜索(grid search,即遍历一组候选参数选最优)调优。

实际计算时多个小概率相乘会迅速下溢(underflow,即数值小于浮点数精度而变成 0)。一篇 1000 词的文档,每个 P(xi | c) 可能是 0.001,1000 个相乘结果是 10^(-3000)——远超双精度浮点数的表示范围。

工程上对两边取对数,把乘法变成加法(log(a·b) = log a + log b):

log P(c | x) ∝ log P(c) + Σ_i log P(xi | c)

取对数不改变 argmax(因为 log 是单调递增函数),且数值稳定。所有主流实现(sklearn、Spark MLlib 等)内部都是这么算的。

生成式视角:朴素贝叶斯 vs 逻辑回归

Section titled “生成式视角:朴素贝叶斯 vs 逻辑回归”

朴素贝叶斯是生成式模型(generative model,对联合分布 P(x, c) 建模),而逻辑回归是判别式模型(discriminative model,直接对 P(c | x) 建模)。两者有有趣的对应关系:

  • 在特定假设下,朴素贝叶斯的决策边界与逻辑回归形式相同(都是线性的)。
  • 朴素贝叶斯收敛更快(O(log n) 样本即可),但渐近误差更高;逻辑回归收敛更慢(O(n)),但最终性能更好。
  • 经验法则:数据少用朴素贝叶斯,数据多用逻辑回归。这个经典结论来自 Ng & Jordan(2002)的对比实验。

下图展示了一个完整的垃圾邮件判定流程,帮助理解从训练计数到最终决策的全过程:

sklearn 文本分类(新闻 20newsgroups)

Section titled “sklearn 文本分类(新闻 20newsgroups)”
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
from sklearn.metrics import classification_report
# 取 4 个类别做演示
cats = ['sci.space', 'comp.graphics', 'talk.politics.mideast', 'rec.sport.baseball']
train = fetch_20newsgroups(subset='train', categories=cats, random_state=42)
test = fetch_20newsgroups(subset='test', categories=cats, random_state=42)
# 流水线:TF-IDF 向量化 + 多项式朴素贝叶斯
pipe = Pipeline([('tfidf', TfidfVectorizer()),
('clf', MultinomialNB(alpha=0.3))])
pipe.fit(train.data, train.target)
pred = pipe.predict(test.data)
print(classification_report(test.target, pred, target_names=train.target_names))

numpy 手写伯努利朴素贝叶斯训练与预测

Section titled “numpy 手写伯努利朴素贝叶斯训练与预测”

下面的代码从零实现训练和预测,帮助理解内部原理:

import numpy as np
# 6 个样本、3 个二值特征,2 个类别
X = np.array([[1,0,1],[1,1,0],[0,1,1],[0,0,0],[1,1,1],[0,0,1]])
y = np.array([1,1,1,0,0,0])
classes = [0, 1]
alpha = 1 # 拉普拉斯平滑参数
# 训练:估先验与每个特征的条件概率(带拉普拉斯平滑)
# 伯努利 NB: P(xj=1|c) = (类 c 中 xj=1 的样本数 + α) / (类 c 样本数 + 2α)
n_features = X.shape[1]
prior = np.array([(y == c).mean() for c in classes])
cond = np.zeros((len(classes), n_features))
for ci, c in enumerate(classes):
Xc = X[y == c]
n_c = Xc.shape[0]
cond[ci] = (Xc.sum(axis=0) + alpha) / (n_c + 2 * alpha)
# 预测:对数空间计算,argmax
def predict(x):
logp = np.zeros(len(classes))
for ci, c in enumerate(classes):
logp[ci] = np.log(prior[ci])
for j in range(n_features):
p = cond[ci, j] if x[j] == 1 else (1 - cond[ci, j])
logp[ci] += np.log(p)
return classes[np.argmax(logp)]
sample = np.array([1, 0, 1])
print(f"样本 {sample} 预测类别: {predict(sample)}")
print(f"先验 P(c): {prior}")
print(f"条件概率 P(xj=1|c):\n{cond}")

连续特征的典型示例,展示 GaussianNB 在数值特征上的用法:

from sklearn.datasets import load_iris
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import cross_val_score
X, y = load_iris(return_X_y=True)
gnb = GaussianNB()
scores = cross_val_score(gnb, X, y, cv=5, scoring='accuracy')
print(f"5 折交叉验证准确率: {scores.mean():.3f} ± {scores.std():.3f}")
# 查看学到的参数(每个类的均值和方差)
gnb.fit(X, y)
print(f"各类均值 theta:\n{gnb.theta_}") # shape: (n_classes, n_features)
print(f"各类方差 sigma:\n{gnb.var_}") # shape: (n_classes, n_features)

朴素贝叶斯的输出概率往往过于极端,需要校准时可用 CalibratedClassifierCV:

from sklearn.naive_bayes import MultinomialNB
from sklearn.calibration import CalibratedClassifierCV
from sklearn.model_selection import train_test_split
from sklearn.metrics import brier_score_loss
# 假设 X_text, y 已准备好(TF-IDF 特征 + 标签)
X_train, X_test, y_train, y_test = train_test_split(X_text, y, test_size=0.3, random_state=42)
# 原始 NB
nb_raw = MultinomialNB(alpha=0.3)
nb_raw.fit(X_train, y_train)
brier_raw = brier_score_loss(y_test, nb_raw.predict_proba(X_test)[:, 1])
# 校准后的 NB(isotonic 回归,一种保序回归校准方法)
nb_calibrated = CalibratedClassifierCV(nb_raw, cv=5, method='isotonic')
nb_calibrated.fit(X_train, y_train)
brier_cal = brier_score_loss(y_test, nb_calibrated.predict_proba(X_test)[:, 1])
print(f"校准前 Brier 分数: {brier_raw:.4f}")
print(f"校准后 Brier 分数: {brier_cal:.4f}")
from sklearn.naive_bayes import ComplementNB
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.pipeline import Pipeline
from sklearn.metrics import classification_report
# 制造不平衡场景:只取少量 sci.space 样本
train = fetch_20newsgroups(subset='train', categories=['sci.space', 'comp.graphics'])
# 人为下采样 comp.graphics 制造不平衡
import numpy as np
space_idx = np.where(train.target == 0)[0]
graphics_idx = np.where(train.target == 1)[0][:50] # 只取 50 个
keep = np.concatenate([space_idx, graphics_idx])
X_train = [train.data[i] for i in keep]
y_train = train.target[keep]
# ComplementNB 对不平衡数据更稳健
pipe = Pipeline([('tfidf', TfidfVectorizer()),
('clf', ComplementNB(alpha=0.3))])
pipe.fit(X_train, y_train)
test = fetch_20newsgroups(subset='test', categories=['sci.space', 'comp.graphics'])
print(classification_report(test.target, pipe.predict(test.data),
target_names=train.target_names))
  • 文本分类的首选 baseline:朴素贝叶斯训练快、效果不差,先用它跑一版作为后续复杂模型(SVM、BERT)的比较基准。在没有 GPU 的场景下,朴素贝叶斯可能是你几秒内能跑完的唯一像样模型。
  • MultinomialNB 配 TF-IDF:文本任务几乎标配。注意 MultinomialNB 要求特征非负,TF-IDF 满足。如果用 Word2Vec / BERT embedding(有负值),需要换 GaussianNB 或做归一化映射。
  • 调 alpha(平滑参数):默认 alpha=1,文本分类中 alpha 取 0.1 到 0.5 常常更好(特征稀疏时少平滑)。用网格搜索找最佳值:np.logspace(-3, 0, 20)。
  • 不平衡数据设 class_prior或先验调整:否则多数类先验过大会偏置预测。也可以直接用 ComplementNB,它内置了不平衡修正。
  • 独立假设违反时仍可用:现实中特征几乎都相关,但朴素贝叶斯在文本、垃圾邮件等任务上长期表现优异——别因为”假设不成立”就放弃它。
  • 概率需要校准:独立假设让输出概率往往过于极端(接近 0 或 1)。需要精确概率时配合 isotonic / Platt 校准(上例展示了代码)。Brier 分数(Brier score,预测概率与真实标签的均方差)是评估概率质量的常用指标。
  • 特征选择有帮助:去掉高频无信息词(停用词)与极低频噪声词,能提升效果与速度。详见特征工程。
  • 流式更新天然支持:朴素贝叶斯的参数就是计数,新数据来了只需更新计数——无需重新训练整个模型。这使得它天然适合在线学习(online learning)场景。
  • 垃圾邮件过滤:朴素贝叶斯最早的成功应用之一,“贝叶斯垃圾邮件过滤”至今仍是很多邮件系统的核心组件。Paul Graham 的《A Plan for Spam》(2002)让这一方法广为人知。
  • 新闻与文档分类:路透社新闻分类、维基百科条目分类等经典任务,朴素贝叶斯长期作为强 baseline。
  • 情感分析:根据评论文本判定正向 / 负向情感,朴素贝叶斯在小数据场景下表现稳定。
  • 垃圾评论 / 作弊检测:论坛、电商平台用朴素贝叶斯识别垃圾评论与水军账号。
  • 医学快速筛查:根据症状组合给出可能的疾病排序,作为辅助诊断的”第一意见”。
  • 实时推荐系统的冷启动:用户行为稀少时,用朴素贝叶斯做粗分类,再交由更精细模型排序。
  • 入侵检测系统:在网络流量分类中,朴素贝叶斯因推理速度极快,常用于实时入侵检测的初筛层。
  • 系统文献综述(SLR)筛选:学术研究中的文献自动筛选工具(如 ASReview)以 TF-IDF + 朴素贝叶斯作为主动学习的默认算法,大幅减少人工审阅量。
  • LLM 应用安全:近期研究将朴素贝叶斯用于检测 LLM 的 prompt injection(提示注入攻击)——这类攻击通过恶意构造的输入操纵 LLM,朴素贝叶斯作为轻量检测器可在模型推理前拦截。
类库语言说明
sklearn.naive_bayesPython提供 GaussianNB、MultinomialNB、BernoulliNB、ComplementNB、CategoricalNB 等
nltk.classify.NaiveBayesClassifierPythonNLTK 内置实现,适合 NLP 教学与小型任务
e1071 (naiveBayes)RR 生态经典实现
Apache MahoutJavaHadoop 生态的朴素贝叶斯实现,适合超大规模分布式训练
Spark MLlib NaiveBayesScala / Python分布式朴素贝叶斯,处理 TB 级文本数据
ASReviewPython学术文献筛选工具,以 NB + TF-IDF 为默认主动学习算法
术语英文解释
朴素贝叶斯Naive Bayes基于贝叶斯定理与特征条件独立假设的概率分类器族
贝叶斯定理Bayes’ Theorem把先验与似然结合得到后验的核心公式
先验概率Prior Probability不考虑特征时各类的基础频率
后验概率Posterior Probability观察到特征后样本属于各类的概率
似然Likelihood在某类下观察到特定特征的概率
条件独立假设Conditional Independence Assumption给定类别后各特征相互独立,“朴素”的来源
最大后验概率MAP / Maximum A Posteriori选择后验概率最大的类别作为预测结果
拉普拉斯平滑Laplace Smoothing / Add-one Smoothing给概率估计加常数防止零概率
多项式朴素贝叶斯Multinomial Naive Bayes面向计数特征的变体,文本分类标配
伯努利朴素贝叶斯Bernoulli Naive Bayes面向二值特征的变体,显式建模”不出现”
补充朴素贝叶斯Complement Naive Bayes面向不平衡数据的变体,通过非目标类统计修正偏置
下溢Underflow多个小概率连乘导致数值小于浮点精度变为 0
零一损失0-1 Loss只看分类对错、不看概率准确度的评价标准
概率校准Probability Calibration将模型的输出概率映射到真实频率的修正过程
生成式模型Generative Model对联合分布 P(x, c) 建模的模型(如朴素贝叶斯)
判别式模型Discriminative Model直接对 P(c | x) 建模的模型(如逻辑回归)
Brier 分数Brier Score预测概率与真实标签的均方误差,衡量概率质量
在线学习Online Learning模型随数据流式到达逐步更新,无需批量重训练

朴素贝叶斯已有 60 余年历史,但在 LLM 时代它非但没有”过时”,反而在多个新方向上焕发活力——其极致的推理速度、天然的在线学习能力、以及对概率推理的可解释性,让它在资源受限、实时性要求高、或需要可信推理的场景中重新获得关注。

朴素贝叶斯认知引擎(NBCE)与长上下文 LLM

Section titled “朴素贝叶斯认知引擎(NBCE)与长上下文 LLM”

Soft-NBCE(Ji et al., 2026)将朴素贝叶斯思想引入大语言模型的长上下文推理:将超长文档分块,每个块并行处理,在解码时用信息熵(entropy,衡量不确定性的指标)加权融合各块的输出。这本质上是朴素贝叶斯”各特征独立打分后加权”的思路在 LLM 推理中的应用——NBCE(Naive Bayes Cognitive Engine)因此得名。该方向表明,经典概率推理范式与现代 Transformer 架构可以互补。

FBPR(Frequency-Based Probabilistic Ranker)(Jia et al., 2025)在医学诊断多选题任务中,用一个带平滑的朴素贝叶斯——仅基于大规模语料中的”概念-诊断”共现统计——就取得了与 LLM 相当的排序性能。这提醒我们:对于结构化的推理任务,LLM 的部分能力可以被极轻量的概率方法替代,尤其在边缘设备和低延迟场景下。

非线性朴素贝叶斯 + 注意力机制

Section titled “非线性朴素贝叶斯 + 注意力机制”

Nonlinear Naive Bayes with Attention(Pi et al., 2026)打破了朴素贝叶斯的线性对数加法结构,引入注意力机制(attention,让模型动态地为不同输入部分分配不同权重)和对数非线性变换,使模型能捕捉对话中的话题连续性。这为”如何在不丧失 NB 简洁性的前提下增强表达力”提供了新范式。

Smart Bayes(Terner et al., 2025)提出了一种混合方法:在朴素贝叶斯的生成式框架内,放松各特征的固定权重,用判别式方式学习特征权重——本质上在 NB 和逻辑回归之间架起桥梁。这继承了 NB 的快速收敛和小样本优势,又获得了逻辑回归的判别能力。

随着 AI 在高风险决策(招聘、信贷、司法)中的部署,朴素贝叶斯的公平性研究受到关注:

  • Blended Likelihood(Junior et al., 2026)提出混合似然方法,在保持分类性能的同时改善 NB 的算法公平性。
  • 对抗投毒攻击(Chan & Tong, 2025)从理论上证明,精心构造的小比例对抗样本即可使 NB 分类器产生最大化不公平行为——这对安全关键场景的 NB 部署敲响了警钟。

在数据隐私法规日趋严格的背景下,联邦学习(federated learning,各机构数据不出本地、只共享模型参数的协作训练范式)版本的朴素贝叶斯应运而生:

  • Federated Naive Bayes(Herrera et al., 2026)将各节点的局部 NB 分布用高斯混合(Mixture of Gaussians,多个高斯分布加权叠加的概率模型)在服务器端融合,在入侵检测任务上取得良好效果。
  • 差分隐私朴素贝叶斯(Mangala et al., 2025)在医疗 IoT-Cloud 系统中,通过 Laplace / Gaussian 噪声机制保护患者隐私。

大量 2025-2026 年的对比研究持续表明:朴素贝叶斯在文本分类、情感分析、网络入侵检测、医学筛查等任务上,仍是不可替代的强 baseline。它为评估 BERT、LLM 等复杂模型的”性能溢价”提供了参照——如果一个 LLM 在某任务上只比 TF-IDF + NB 好几个点,部署成本是否值得?在系统性文献综述(SLR)筛选等学术场景中,研究还发现朴素贝叶斯的变异性远低于 LLM(Hida et al., 2026),即在不同随机种子和输入变体下输出更稳定——这对于需要可复现性的场景至关重要。

  • McCallum & Nigam, “A Comparison of Event Models for Naive Bayes Text Classification” (1998):对比多项式与伯努利事件模型在文本分类上的表现,是选择 MultinomialNB / BernoulliNB 的经典依据。
  • Rish, “An Empirical Study of the Naive Bayes Classifier” (IJCAI 2001):系统实验分析朴素贝叶斯为何在独立假设违反时依然有效。
  • Domingos & Pazzani, “On the Optimality of the Simple Bayesian Classifier under Zero-One Loss” (Machine Learning 1997):从理论上解释朴素贝叶斯即使概率估计不准也能分类正确的根本原因。
  • Ng & Jordan, “On Discriminative vs. Generative Classifiers: A comparison of logistic regression and Naive Bayes” (NeurIPS 2002):经典的生成式 vs 判别式模型对比,揭示了小数据 NB 占优、大数据 LR 占优的规律。
  • Manning, Raghavan & Schütze, 《Introduction to Information Retrieval》第 13 章:IR 经典教材,从文本分类角度讲解多项式朴素贝叶斯,含完整伪代码与示例。
  • Bishop, 《Pattern Recognition and Machine Learning》第 2 章:从概率论与贝叶斯推断视角系统推导,衔接贝叶斯推断与概率图模型。
  • Ji et al., “Soft-NBCE: Entropy-Weighted Chunk Fusion for Long-Context” (arXiv 2026):朴素贝叶斯认知引擎在 LLM 长上下文推理中的最新应用。
  • Jia et al., “Counting Clues: A Lightweight Probabilistic Baseline Can Match an LLM” (arXiv 2025):平滑朴素贝叶斯在医学诊断任务上匹敌 LLM 的实证研究。