生成式概率分类
朴素贝叶斯分类
先估各类的先验与类条件密度,再按贝叶斯定理合成后验;「朴素」处是假定各特征在给定标签下互相独立。
这篇能回答什么
朴素贝叶斯分类回答的是「看见这组特征之后,哪一个标签的后验最大」。它是生成式模型:先写 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 · 送入问卷文件
把学生问卷放到上传区。工作表名称保持「有效样本数据」,否则先验计数对不上本页的 338。
步骤 2 · 分开标签与会共线的题
画像里确认性别恰为两档。办学性质、年级是特征。数学学习兴趣、课堂专注、教学吸引力若同时勾选,先承认它们相关,再决定要不要用「朴素」连乘。
步骤 3 · 搜索朴素贝叶斯分类
目录键入「朴素贝叶斯」或「贝叶斯分类」。不要点成判别分析:后者估计类内协方差,本页把协方差当成对角。
步骤 4 · 勾选三列分析变量
右侧勾选学生性别、学校办学性质、就读年级。性别作标签。不要把三列都理解成三个要预测的 Y。
步骤 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 |
| 朴素贝叶斯分类 | 合计 | 有效样本 N | 338 |
| 朴素贝叶斯分类 | 类别 A | 占比(%) | 26.04 |
| 朴素贝叶斯分类 | 类别 B | 占比(%) | 16.57 |
| 朴素贝叶斯分类 | 类别 C | 占比(%) | 57.4 |
左右滑动可查看完整表格
教学示例表在 StatsX 工作台中的计算结果口径。


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.