一个假设明显错误的模型,为什么能在垃圾邮件过滤上稳定工作十几年?一封邮件里同时出现「免费」「限时」「点击领取」,过滤器几毫秒内给出 0.97 的垃圾概率,它没读懂语义,只数了这几个词在两类邮件里各出现多少次,再把比例乘起来。这套做法叫朴素贝叶斯,是 AI 做文本分类时资历最老的基线之一。把它的假设、误差和失效条件讲清楚,基本就理解了它。
它算的是一串可以数出来的比例
按贝叶斯定理,给定一封邮件的内容,它属于垃圾类的概率正比于「垃圾类本身的比例」乘以「垃圾类里出现这些词的概率」。后半截如果直接算,需要统计所有词的全部组合,样本永远不够。所以它加了一个假设:在已知类别的条件下,各个词出现与否互不影响。这样一来,联合概率就拆成了每个词单独概率的乘积,每一项都能从训练集里数出来。
「朴素」指的就是这个条件独立假设。判断邮件时,它认为「出现免费」和「出现点击」是两件互不相干的事,实际上这两者高度相关。假设不成立是事实,可它带来的简化,让计算从指数级降到线性,也让模型能处理几十万维的词表。关于这条定理本身,可以看贝叶斯定理那篇的推导。
四种分类器,各让一步
| 方法 | 核心假设 | 训练与预测代价 | 什么时候会输 |
|---|---|---|---|
| 朴素贝叶斯 | 给定类别后特征条件独立 | 一遍计数即可,线性时间,支持增量更新 | 特征强相关,或需要拿概率值做决策时 |
| 逻辑回归 | 对数几率对特征是线性可加 | 迭代优化,要调正则强度 | 边界明显非线性、特征交互强时 |
| 梯度提升树 | 用一系列轴平行切分逼近边界 | 训练较慢,要调树深与轮数 | 高维稀疏文本上不如线性模型稳 |
| 大模型微调 | 预训练已含语义,只需少量标注对齐 | 推理成本高,依赖算力与数据质量 | 要求毫秒级响应、数据量极小的场景 |
这张表想说明的是取舍位置:朴素贝叶斯把成本压到最低,代价是假设最粗;越往下的方法越能刻画复杂边界,代价是数据和算力。做基线时先用第一行,重点不在效果,在于拿到一个「低于这个数就是有问题」的参照。逻辑回归的差别可以看逻辑回归那篇。
假设不成立,为什么结论还对
关键在于它只需要排序,不需要准确数值。分类时比较的是各类概率谁大,只要乘出来的相对大小没被颠覆,判断就是对的。每个词的概率估计都有偏差,但这些偏差在两类之间往往方向相近,做除法时互相抵消一部分。所以它给出的 0.97 通常偏高,真实概率可能是 0.8,可「垃圾类大于正常类」这个结论仍然成立。
这解释了一个常见困惑:朴素贝叶斯给出的概率值偏得厉害,排序能力却不差。下游只取最大值时问题不大;要拿这个概率定阈值、算期望损失,就必须先校准,方法在模型校准里讲得更细。误用它的场合,多半是把「排序准」当成了「概率准」。
两个必须处理的坑
零概率是第一个。某个词在训练集里从没和某一类同时出现过,连乘时出现一个 0,整条概率归零,等于一个词否决全部证据。实际做法是给每个计数加一个很小的数,让没见过的组合也有一个极小的概率,这一步叫平滑,最常用的是拉普拉斯平滑。加多少有讲究:加得太大,稀有词的信息被抹平;加得太小,长文本连乘仍然会下溢。工程上还要在对数空间里相加,避免几百个小概率相乘变成 0。
特征强相关是第二个。同一句话里「免费」出现三次,或者同时放了「免费」「免费领取」「0 元」三个同义特征,等于同一份证据被投了三票,后验被推向极端。文本里这很常见,因为词袋模型本身就会重复计票。缓解办法是去重、合并同义特征,或者改用能考虑特征组合的模型。类别极不均衡时还有一层:先验会把结果整体推向多数类,处理思路和样本不均衡里说的一致。
它在哪些任务上会输
特征之间有强交互的任务,它基本无解。经典的例子是异或型关系:两个特征单独看都和类别无关,组合起来才决定结果。条件独立假设把交互项整个抹掉了,模型看不到这层结构,无论数据多少都学不会。
需要精确概率的场合也不适合。风控定价、医疗筛查这类要拿概率直接算期望的,它的过度自信会带来系统性偏差。特征维度低、样本量中等的表格数据,树模型通常更省心,因为那些数据里的交互和阈值效应正是树模型的强项。文本、类别特征极多、样本又不够训练复杂模型的场景,才是朴素贝叶斯的舒适区。
今天还值不值得用
值得,但角色变了。它现在更多是基线和兜底:新任务上手先跑一个,十分钟出结果,后面所有复杂模型都要跟它比。它训练快、内存小、能增量更新、每一票都可追溯,这些特性在边缘设备、日志流分类、需要解释给业务听的场合仍然有优势。
还有一个常被忽略的用法:拿它做特征筛选的探路。哪些词对分类贡献大,看它的对数几率比就行,这份清单能帮你在上大模型之前先理解数据。理解得越多,后面调模型时越少走弯路。
速查:朴素贝叶斯要点
- 假设特征条件独立,为的是把联合概率拆成可数的乘积
- 它擅长排序,不擅长给准概率,要阈值就先校准
- 零概率用平滑处理,长文本在对数空间连乘
- 同义特征重复出现等于重复投票,先做去重
- 特征交互强、样本极不均衡的任务,换模型


