跳到主要内容

生成式概率分类

朴素贝叶斯分类

先估各类的先验与类条件密度,再按贝叶斯定理合成后验;「朴素」处是假定各特征在给定标签下互相独立。

更新日期 2026-08-29 机器学习

这篇能回答什么

朴素贝叶斯分类回答的是「看见这组特征之后,哪一个标签的后验最大」。它是生成式模型:先写 P(标签),再写 P(特征∣标签),最后用贝叶斯公式翻成 P(标签∣特征)。「朴素」不是说方法幼稚,而是加了一条很强的刀:给定标签之后,各列互相独立,联合密度拆成连乘。逻辑回归不写 P(特征∣标签),它直接参数化 P(标签∣特征) 的 logit,因此不要求列与列独立。兴趣、专注、吸引力若两两相关,朴素贝叶斯会把同一份信息乘进后验好几次;逻辑回归则把共线吸收进系数(系数会抖,但模型形式仍允许相关)。

教学占用盯的是成表删除后就读年级的构成,不是「算法猜成了哪一档」。合计 N=338。A / B / C 为 88、56、194 人(26.04%、16.57%、57.4%)。C 档先验约 0.57,已经偏,但比提升树那两页的六成以上更缓和。本页把学生性别当作要预测的二元标签,办学性质与年级当作特征——后者进入类条件频率或高斯密度。ROC 的 AUC≈0.81 评价的是性别能否被这两列(外加可选量表)分开。

什么时候不该用

你要的是「兴趣每高 1 分,某一性别相对另一性别的发生比」,用二元逻辑回归,它输出 OR 与 Wald,并且不强迫列独立。大样本、非线性交互很多,用树模型。文本词袋、稀疏 0/1、小样本基线,才是朴素贝叶斯真正舒服的区间。不要把它当成判别分析的「有协差阵版本」——线性判别允许类内相关,朴素贝叶斯把相关设成 0。

如何选择方法

分清生成与判别。生成式先讲「这类学生的年级长什么样」,再反推标签;判别式直接讲「标签概率怎么随特征变」。特征近似独立、或你在做词频垃圾邮件,生成式连乘很省参数。特征明显共线、你还想报告 OR,走逻辑回归(极大似然或梯度下降)。间隔最大化、核技巧,走 SVM。只比距离投票,走 KNN。

  • 朴素贝叶斯:P(y)Π P(x_j∣y),参数少,相关特征会重复计数。

  • 二元逻辑回归:直接估 logit,有 OR 与检验,两类。

  • 逻辑回归(梯度下降法):同一判别式家族,但按优化器与划分来当分类器。

  • SVM 分类:最大间隔,不估计类条件密度。

输入、输出与限制

输入

分析变量 1–20 列。本页标签取学生性别(二元)。办学性质走伯努利或多项频率;就读年级走三项频率;数学学习兴趣若加入,默认按高斯类条件密度——1–5 分其实更接近多项,高斯只是连续近似。

  • 分析变量:最少 1 个,最多 20 个。

  • 标签:二元或分组定类;本案例用学生性别。

  • 密度:定量列高斯,定类列多项;可加拉普拉斯平滑避免零频率。

输出

「朴素贝叶斯分类结果表」列出年级占用 88 / 56 / 194,N=338。先验 P(C)≈57.4% 会写进对数后验的第一项。ROC(AUC≈0.81)评价的是性别后验,不是「年级预测准不准」。表里没有 OR,也没有 Wald z——生成式不走这条推断链。

产品限制

  • 条件独立是模型假设,工作台不会先做相关矩阵再决定能不能运行。

  • B 档 56 人,该档上的类条件频率方差大,平滑不能发明样本。

  • 高斯方差若在某一性别内接近 0(所有人选了同一分),密度会爆。

  • 编号列仍被隐藏:朴素贝叶斯把学号当「词」会得到荒谬的似然。

案例

研究问题。 研究者怀疑办学性质、就读年级与性别在样本里纠缠,想用一个参数很少的生成式分类器看「只凭学校类型和年级,性别后验能不能离开 0.5」,并先把年级三档的先验摊在桌上——C 档超过一半时,哪怕特征完全没信息,模型也爱猜多数档相关的那一侧。

学生问卷「有效样本数据」上,朴素贝叶斯完整个案 338。年级占用 88(26.04%)、56(16.57%)、194(57.4%)。下载后勾选学生性别、学校办学性质、就读年级;性别是标签。若要检验独立假设有多伤,可把三道高度相关的量表一起丢进去,看后验是否被重复放大。

下载教学示例表(学生问卷)

在 StatsX 中操作

  1. 步骤 1 · 送入问卷文件

    把学生问卷放到上传区。工作表名称保持「有效样本数据」,否则先验计数对不上本页的 338。

  2. 步骤 2 · 分开标签与会共线的题

    画像里确认性别恰为两档。办学性质、年级是特征。数学学习兴趣、课堂专注、教学吸引力若同时勾选,先承认它们相关,再决定要不要用「朴素」连乘。

  3. 步骤 3 · 搜索朴素贝叶斯分类

    目录键入「朴素贝叶斯」或「贝叶斯分类」。不要点成判别分析:后者估计类内协方差,本页把协方差当成对角。

  4. 步骤 4 · 勾选三列分析变量

    右侧勾选学生性别、学校办学性质、就读年级。性别作标签。不要把三列都理解成三个要预测的 Y。

  5. 步骤 5 · 对照先验读后验

    先看 C 档是否仍是 194 人。若几乎所有后验都倒向同一性别,先检查是特征真有信息,还是先验加上独立连乘把弱证据乘爆了。再看 ROC 是否离开对角线。

上传学生问卷以运行朴素贝叶斯分类
将教学示例表拖入工作台上传区。
画像中性别为二元、年级为分组
确认性别两档、年级三档;相关量表先不要盲目全选。
在目录中选择朴素贝叶斯分类
搜索「朴素贝叶斯分类」并点选该卡片。
为朴素贝叶斯勾选性别、办学性质与年级
分析变量勾选学生性别、学校办学性质、就读年级后运行。

如何阅读输出

表头第一格是「朴素贝叶斯分类」。年级占用 88、56、194,占比 26.04%、16.57%、57.4%,N=338。这是特征「就读年级」在完整个案里的边缘分布,也是类条件计数的分母来源之一。它不是性别的预测份额。C 档 57.4% 意味着:若某性别在 C 档里更常见,对数先验加上 P(年级=C∣性别) 会把后验往那一侧推,即使办学性质毫无信息。

朴素贝叶斯分类结果表
项目类别统计量取值
朴素贝叶斯分类类别 A频数88
朴素贝叶斯分类类别 B频数56
朴素贝叶斯分类类别 C频数194
朴素贝叶斯分类合计有效样本 N338
朴素贝叶斯分类类别 A占比(%)26.04
朴素贝叶斯分类类别 B占比(%)16.57
朴素贝叶斯分类类别 C占比(%)57.4

左右滑动可查看完整表格

教学示例表在 StatsX 工作台中的计算结果口径。

工作台中的朴素贝叶斯占用表
占用人数应与上表一致。套话式智能解读不要进论文。
朴素贝叶斯分类 ROC,AUC 约 0.81
本教学图 AUC≈0.81,评价性别后验,不是年级分类准确率。

AUC 0.81 表示用办学性质+年级(及你额外勾的列)区分性别,比抛硬币强。它不能翻译成 OR:生成式没有「控制其他变量后的发生比」。若三道量表相关很高仍被连乘,后验会过度自信——校准曲线会偏离对角线,这时应改判别式模型,而不是再加平滑。

B 档只有 56 人。该档上 P(年级=B∣性别) 的估计最抖。平滑会给每个格子垫一个伪计数,但垫完仍是「小样本频率」,不要写成总体比例。

理论与公式

贝叶斯定理把类条件密度翻成后验。朴素假设把联合密度拆成连乘:

预测取最大后验。对数尺度下分母对所有类相同,可以丢掉:

定量列常用高斯:P(x_j∣y)=𝒩(μ_{j,y},σ_{j,y}^{2})。定类列用频率加平滑:P(x_j=a∣y)=(n_{y,a}+α)/(n_y+αK)。本例 n=338,年级 C 的边缘频率约 57.4%,它会进入 P(y) 或 P(年级∣y),取决于你把哪一列当标签。逻辑回归的对照式是 logit P(y=1∣x)=βᵀx,右侧没有 Π P(x_j∣y),因此允许 x_j 相关。两式都输出概率,但只有后者配套 OR=e^{β}。

注意事项

  • 条件独立几乎总是假的;模型仍可能好用,但后验往往过自信。

  • 相关量表连乘等于把同一构念重复当作新证据。

  • C 档先验 57.4% 会在特征没信息时主导 MAP。

  • 高斯用在 1–5 分上是权宜,不是量表的生成过程。

  • 没有 OR、没有 Wald:不要把「后验 0.8」写成「发生比 4」。

  • B 档 56 人的类条件频率不要推广到全区学校。

常见问题

参考文献

  • Hastie, T., Tibshirani, R., Friedman, J. The Elements of Statistical Learning. Springer.

  • McCallum, A., Nigam, K. A comparison of event models for naive Bayes text classification[C]//AAAI Workshop. 1998.

  • Rish, I. An empirical study of the naive Bayes classifier[C]//IJCAI Workshop. 2001.