机器学习&第五章生成式生成器

五、生成式分类器

生成式分类器是分类模型的两大分支之一,核心是先学习数据的概率分布,再基于分布进行分类。与之相对的是判别式分类器,两者的思路差异是理解分类模型的关键。

5.1 生成式分类器 vs 判别式分类器

核心思想对比

类别 核心思想 学习目标 通俗例子
判别式分类器 直接学习类别和特征之间的决策边界,即直接建模 $P (Y X)(给定特征 X,样本属于类别 Y$ 的概率) 找到不同类别之间的最优分类线 / 超平面 老师直接告诉你:"如果一个动物有羽毛、会飞,那它是鸟;如果有毛、会跑,那它是哺乳动物"------ 直接划分类别边界
生成式分类器 先学习每个类别的数据分布 $P(X Y)(给定类别 Y,特征 X的概率分布),再结合**先验概率**P(Y),用贝叶斯公式计算 P(Y X)$ 建模 "不同类别样本长什么样",再通过概率比较分类 老师先告诉你:"鸟的特征是:有羽毛(概率 99%)、会飞(概率 90%)、卵生(概率 100%);哺乳动物的特征是:有毛(99%)、胎生(100%)、会跑(95%)"------ 先学各类别特征分布,再判断新样本属于哪类

典型模型归类

判别式分类器 生成式分类器
逻辑回归(Logistic 回归) 朴素贝叶斯分类器
支持向量机(SVM) 高斯判别分析(GDA)
决策树 / 随机森林 隐马尔可夫模型(HMM)
神经网络 贝叶斯网络

关键区别总结

  1. 建模对象不同
    • 判别式:建模 P(Y∣X) → 直接求 "特征→类别" 的映射;
    • 生成式:建模 P(X∣Y) 和 P(Y) → 先求 "类别→特征" 的生成规律,再反推类别。
  2. 训练数据需求不同
    • 生成式:对小样本数据更友好,因为概率分布可以通过先验知识补充;
    • 判别式:通常需要更多样本,才能学到稳定的决策边界。
  3. 泛化能力不同
    • 生成式:更依赖数据分布假设(比如朴素贝叶斯假设特征独立),假设不成立时性能下降;
    • 判别式:不依赖分布假设,直接关注边界,很多场景下泛化能力更强。

5.2 贝叶斯规则(生成式分类器的数学基础)

贝叶斯公式是生成式分类器的核心,所有生成式模型都基于这个公式推导。

5.2.1 贝叶斯公式与核心概念

1. 贝叶斯公式

P(Y∣X)=P(X)P(X∣Y)P(Y)​

  • 核心目的:通过已知的 P(X∣Y) 和 P(Y),计算我们需要的 P(Y∣X)(用于分类的后验概率)。
2. 公式中各概率的定义
概率名称 定义 通俗解释
P(Y) 先验概率 不看特征 X 时,类别 Y 出现的概率,是 "经验常识"。例子:人群中 "患流感"(Y=1)的概率是 5%,P(Y=1)=0.05;"不患流感"(Y=0)的概率是 95%,P(Y=0)=0.95
$P(X Y)$ 类条件概率 已知类别 Y 时,特征 X 出现的概率,即 "该类样本的特征分布"。例子:已知患流感(Y=1),特征 "发烧"(X=1)的概率是 90%,$P (X=1 Y=1)=0.9$
P(X) 证据因子 特征 X 出现的总概率,对所有类别是相同的常数(分类时可忽略)。公式:$P (X)=\sum_{Y} P (X Y) P (Y)$(全概率公式)
$P(Y X)$ 后验概率 已知特征 X 时,类别 Y 出现的概率,是分类的依据。例子:已知某人发烧(X=1),他患流感的概率是 $P (Y=1 X=1)$,这个值越大,越可能是正类
3. 分类规则

对新样本 X,计算它属于每个类别的后验概率 P(Y=k∣X),取概率最大的类别作为预测结果:Y^=argmaxk​P(Y=k∣X)=argmaxk​P(X)P(X∣Y=k)P(Y=k)​因为 P(X) 对所有类别相同,所以可以简化为:Y^=argmaxk​P(X∣Y=k)P(Y=k)

5.2.2 朴素贝叶斯分类器的思想

朴素贝叶斯(Naive Bayes, NB)是最经典的生成式分类器,"朴素" 二字的来源是它的一个强假设

1. 核心假设:特征条件独立性

假设在给定类别 Y 的情况下,所有特征之间相互独立

  • 数学表达:对样本的 d 个特征 X1,X2,...,Xd,有P(X∣Y)=P(X1,X2,...,Xd∣Y)=P(X1∣Y)×P(X2∣Y)×...×P(Xd∣Y)
  • 通俗解释:已知样本属于某一类时,它的各个特征之间没有关联。比如 "患流感" 类别中,"发烧" 和 "咳嗽" 是独立的,不会因为发烧就一定咳嗽。
  • 为什么叫 "朴素":这个假设在现实中很少成立(比如发烧和咳嗽往往相关),但它极大简化了计算,且实际效果很好。
2. 朴素贝叶斯的分类逻辑

结合贝叶斯公式和特征独立性假设,后验概率可以拆分为:P(Y=k∣X)∝P(Y=k)×∏i=1d​P(Xi​∣Y=k)

  • 预测时,计算每个类别的 P(Y=k)×∏P(Xi∣Y=k),取最大值对应的类别。

5.2.3 朴素贝叶斯分类器的训练(计算方法)

朴素贝叶斯的 "训练" 本质就是统计计算 3 个概率值:先验概率 P(Y)、类条件概率 P(Xi​∣Y),步骤如下(以二分类、离散特征为例)。

训练数据集假设

假设有 m 个样本,每个样本有 d 个离散特征 X1​,X2​,...,Xd​,类别标签 Y∈{0,1}。

  • 记:m0 = 类别 0 的样本数,m1 = 类别 1 的样本数,m0+m1=m。
步骤 1:计算先验概率 P(Y=k)

直接统计各类别样本占比:P(Y=0)=mm0​​,P(Y=1)=mm1​​

  • 例子:100 个样本,30 个正类(Y=1),70 个负类(Y=0)→ P(Y=1)=0.3,P(Y=0)=0.7。
步骤 2:计算类条件概率 P(Xi​=x∣Y=k)

对每个特征 Xi​ 的每个取值 x,统计在类别 k 中,特征 Xi​ 取 x 的样本数。P(Xi​=x∣Y=k)=mk​类别k中Xi​=x的样本数​

关键优化:拉普拉斯平滑(避免概率为 0)

如果某个特征取值在某类别中从未出现过,会导致 P(Xi​=x∣Y=k)=0,进而让整个后验概率为 0,这显然不合理。拉普拉斯平滑:给分子加 1,分母加该特征的取值数 ni​(离散特征的不同取值个数)。P(Xi​=x∣Y=k)=mk​+ni​类别k中Xi​=x的样本数+1​

  • 例子:特征 X1 是 "发烧",取值为 {是,否}(n1=2);类别 1(流感)有 30 个样本,其中 "发烧 = 是" 的有 28 个,"发烧 = 否" 的有 2 个。
    • 无平滑:是,否;
    • 若类别 1 中没有 "发烧 = 否" 的样本(28 个是,0 个否):无平滑:否;拉普拉斯平滑:否。
步骤 3:预测新样本

对新样本 X=(x1​,x2​,...,xd​),计算:Score(k)=P(Y=k)×∏i=1d​P(Xi​=xi​∣Y=k)取 Score(k) 最大的 k 作为预测类别 Y^。

计算实例(垃圾邮件分类)
  • 任务:判断邮件是否为垃圾邮件(Y=1:垃圾,Y=0:正常);
  • 特征:X1= 是否含 "优惠",X2= 是否含 "发票";
  • 训练数据 :100 封邮件,60 封垃圾(m1=60),40 封正常(m0=40)。
    • 垃圾邮件中:是 有 50 封,是 有 40 封;
    • 正常邮件中:是 有 5 封,是 有 35 封。
  1. 先验概率:P(Y=1)=0.6,P(Y=0)=0.4;
  2. 类条件概率(无平滑):
    • 是,是;
    • 是,是;
  3. 新样本:是是(含 "优惠" 和 "发票"):
    • Score(1)=0.6×6050×6040≈0.6×0.833×0.667≈0.333;
    • Score(0)=0.4×405×4035=0.4×0.125×0.875=0.04375;
  4. 预测:Score(1)>Score(0) → 该邮件是垃圾邮件。

生成式 vs 判别式分类器 + 朴素贝叶斯计算速记表

一、生成式分类器 vs 判别式分类器 核心对比

对比维度 生成式分类器 判别式分类器
核心思想 先学 "各类别数据的分布",再推导样本属于某类的概率 直接学 "特征到类别的决策边界",不关心数据分布
建模目标 建模 $P (X Y)(类条件概率) + P(Y)(先验概率),再用贝叶斯公式求 P(Y X)$ 直接建模 $P (Y X)$(后验概率)或直接找分类边界
关键公式 $P(Y X)=\frac{P(X Y)P(Y)}{P(X)}$ 如逻辑回归:y^​=σ(WTX);SVM:找最大间隔超平面
典型模型 朴素贝叶斯、高斯判别分析(GDA)、隐马尔可夫模型 逻辑回归、SVM、决策树 / 随机森林、神经网络
数据需求 对小样本友好,可结合先验知识 需要更多样本,才能学到稳定的决策边界
核心假设 有强假设(如朴素贝叶斯的特征条件独立 无严格分布假设,关注分类边界
泛化能力 假设成立时效果好,假设不成立时性能下降 多数场景下泛化能力更强,适用性更广
通俗例子 先背 "鸟 = 羽毛 + 会飞""哺乳动物 = 有毛 + 胎生",再判断动物类别 直接记 "有羽毛→鸟,有毛→哺乳动物" 的分类规则

二、朴素贝叶斯分类器 核心知识点

1. 核心假设

特征条件独立性:给定类别 Y 时,所有特征 X1​,X2​,...,Xd​ 相互独立,即P(X∣Y)=P(X1​,X2​,...,Xd​∣Y)=∏i=1d​P(Xi​∣Y)

2. 分类规则

对新样本 X,计算各类别得分,取得分最高的类别:Y^=argmaxk​[P(Y=k)×∏i=1d​P(Xi​∣Y=k)](注:P(X) 对所有类别相同,可忽略)

3. 训练计算步骤(离散特征 + 二分类)

步骤 计算目标 公式 关键说明
1 计算先验概率 P(Y=k) P(Y=k)=mmk​​ mk​:类别k的样本数 m:总样本数 直接统计各类别样本占比
2 计算类条件概率 $P (X_i=x Y=k)$(无平滑) $P(X_i=x Y=k)=\frac {\text {类别} k\text {中} X_i=x\text {的样本数}}{m_k}$ 若某特征取值在类别k中无样本,概率为 0,会导致分类失效
3 类条件概率优化(拉普拉斯平滑) $P(X_i=x Y=k)=\frac {\text {类别} k\text {中} X_i=x\text {的样本数}+1}{m_k + n_i}<br>n_i:特征X_i$ 的取值个数 避免概率为 0,提升模型稳定性
4 新样本预测 计算各类别得分: $Score(k)=P(Y=k) \times \prod_{i=1}^d P(X_i=x_i Y=k)$ 得分最高的类别即为预测结果

4. 计算实例(垃圾邮件分类)

已知条件 数值
总样本数 m 100 封邮件
垃圾邮件数 m1​(Y=1) 60
正常邮件数 m0​(Y=0) 40
垃圾邮件中含 "优惠"(是)的数量 50
正常邮件中含 "优惠"(是)的数量 5
垃圾邮件中含 "发票"(是)的数量 40
正常邮件中含 "发票"(是)的数量 35
计算环节 公式代入 结果
先验概率 P(Y=1)=10060​=0.6 P(Y=0)=10040​=0.4 P(Y=1)=0.6 P(Y=0)=0.4
类条件概率(无平滑) 是 是 是 是 -
新样本 是是 得分 Score(1)=0.6×0.833×0.667≈0.333 Score(0)=0.4×0.125×0.875=0.04375 Score(1)>Score(0) →
相关推荐
独自破碎E2 小时前
介绍一下Spring AI框架
java·人工智能·spring
_李小白2 小时前
【Android FrameWork】延伸阅读:AMS 的 handleApplicationCrash
android·开发语言·python
laplace01232 小时前
第三章 大语言模型基础
人工智能·语言模型·自然语言处理·agent·rag
罗湖老棍子2 小时前
【模板】并查集(洛谷P3367)
算法·图论·并查集
_OP_CHEN2 小时前
【算法基础篇】(四十五)裴蜀定理与扩展欧几里得算法:从不定方程到数论万能钥匙
算法·蓝桥杯·数论·算法竞赛·裴蜀定理·扩展欧几里得算法·acm/icpc
Lun3866buzha2 小时前
轮胎胎面花纹识别与分类:基于solo_r50_fpn模型的实现与优化
人工智能·分类·数据挖掘
没学上了2 小时前
VLM-单头自注意力机制核心逻辑
人工智能·pytorch·深度学习
zhangdawei8382 小时前
英伟达GB200,GB300和普通服务器如dell R740xd有什么区别?
运维·服务器·人工智能
Mintopia2 小时前
意图OS是未来软件形态,它到底解决了什么问题?
人工智能·react native·前端工程化