贝叶斯定理 (Bayes’ Theorem)#
设事件 B 已经发生,需要评估哪个 事件 Ai 最有可能导致 B 的发生。贝叶斯定理提供了一个计算后验概率的公式:
P(Ai∣B)=P(B)P(AB)=P(B)P(B∣Ai)P(Ai)=∑jP(B∣Aj)P(Aj)P(B∣Ai)P(Ai)
- 先验概率:P(Ai),表示在观察到事件 B 之前对事件 Ai 的信念。
- 似然函数:P(B∣Ai),表示在事件 Ai 发生的条件下事件 B 发生的概率。
- 后验概率:P(Ai∣B),表示在观察到事件 B 之后对事件 Ai 的信念。
后验 ∝ 似然 × 先验。后验概率与先验概率成正比,比例系数由似然函数决定。
有两种优化函数:
- 最大后验概率 (MAP):A^=argmaxAiP(Ai∣B)=argmaxAiP(B∣Ai)P(Ai)
- 最大似然估计 (MLE):A^=argmaxAiP(B∣Ai)
后验概率考虑了先验知识,而最大似然估计只关注数据本身的似然性。选择哪种方法取决于具体问题和可用的信息。
生成式模型和判别式模型#
生成式模型:建模 联合概率分布 P(x,ω),可以通过 P(ω∣x)=P(x)P(x∣ω)P(ω) 来进行分类。
判别式模型:直接建模 条件概率分布 P(ω∣x),不关心特征的分布。
NOTE生成式模型可以导出判别式模型,但判别式模型不能导出生成式模型。
判别式模型通常转化为:
从邮件分类的实际例子来看:
用生成式模型(朴素贝叶斯)来分类邮件#
统计:
- 先验:P(垃圾邮件) 和 P(正常邮件),可以通过历史数据中垃圾邮件和正常邮件的比例来估计。
- 似然:P(邮件内容∣垃圾邮件) 和 P(邮件内容∣正常邮件),可以通过分析邮件内容中出现的词汇来估计。
计算:
- 后验:P(垃圾邮件∣邮件内容) 和 P(正常邮件∣邮件内容),通过贝叶斯定理计算,选择概率较大的类别作为分类结果。
能解释这个被分类成垃圾邮件的邮件为什么被分类成垃圾邮件
用判别式模型(逻辑回归)来分类邮件#
直接假设:存在一个函数,可以把特征 x (邮件内容)映射到类别概率。一个比较常见的模型是逻辑回归。后文会讲到
生成式模型-贝叶斯分类器#
数据 → 概率建模 → 后验推断 → 判别函数 → 决策规则 → 决策边界
特征向量 x=(x1,x2,...,xn),类别 ω=ω1,ω2,...,ωc,我们想要计算 P(ω∣x),即在给定特征 x 的条件下类别 ω 的概率。
对 P(ω∣x) 应用贝叶斯定理:
P(ω∣x)=P(x)P(x∣ω)P(ω)这里面符号的语义
-
P(ω):类别 ω 的先验概率。在没有看到任何数据之前,种类 ω 的概率。
在数据中体现为:测试集中类别 ω 的频率。
-
P(x∣ω):似然/类条件概率。如果种类是 ω, 那么特征向量呈现为 x 的概率。 用条件概率形式表示,以强调是同一类别事物的内部特征的概率分布。
贝叶斯分类器的变体往往基于对 P(x∣ω) 的不同假设来构建。
-
P(ω∣x):在给定特征 x 的条件下类别 ω 的后验概率。
用贝叶斯定理计算,常常对数化。
-
P(x):特征 x 的边缘概率。对所有类别的特征 x 的概率进行求和。
在分类时是常数,可以忽略。
整体流程#
问题建模与数据准备#
-
定义类别:确定分类任务有 c 个类别 ω1,ω2,…,ωc。
-
特征提取:确定描述样本的特征向量 x。
-
划分数据集:获取有标签的训练集 D=(x1,y1),…,(xn,yn)。
概率密度估计方法#
如何获得 p(x∣ωi) 和 P(ωi) ,重点关注 p(x∣ωi)。
- 方法A(参数法):假设已知 p(x∣ωi) 的参数形式(如高斯分布、伯努利分布)。唯一未知的是参数 θi(如 μ,Σ)。
- 方法B(非参数法):不假设任何分布形式,直接从数据中“拼凑”出密度函数。
估计类条件概率密度 p(x∣ωi)(训练)#
参数估计(如高斯分布) 的假设前提
- 假设类条件概率的分布长这样:P(x∣ωi)=P(x∣ωi;θi)。
- 独立同分布:同一类别的样本是独立同分布的随机变量。
最大似然估计 (ML)#
对于某一类 ωi 的数据集:Di={xj∣yj=ωi}
似然L(θi)=P(Di∣θi)=∏j=1NiP(xj∣ωi;θi)。
-
对数化 l(θi)=lnP(Di∣θi)=∑j=1NilnP(xj∣ωi;θi)。
-
目标函数 θi^=argmaxθil(θi)=argmaxθilnP(Di∣θi)。
-
计算:解方程 ∂θ∂l(θ)=0
对于服从高斯分布的类条件概率,参数 θi 包括均值 μi 和协方差矩阵 Σi,MLE 的解为:
μ^ML=Ni1j=1∑Nixj,Σ^ML=Ni1j=1∑Ni(xj−μ^ML)(xj−μ^ML)T最大后验估计 (MAP)#
已知参数的先验 p(θi)。MAP只是比ML多了这一个先验项
似然 L(θi)=P(θi∣Di)=P(Di∣θi)P(θi)/P(Di)。其中 P(Di) 是常数,可以忽略。
- 对数化 l(θi)=lnP(θi∣Di)=lnP(Di∣θi)+lnP(θi)。
- 目标函数 θi^=argmaxθil(θi)=argmaxθi[lnP(Di∣θi)+lnP(θi)]。
例如,假设 θi 的先验是一个高斯分布 N(μ0,σ02),类条件概率也是高斯分布 N(μi,σ2),则MAP的解为:
μ^MAP=σ2+Niσ02σ2μ0+Niσ02μ^ML,Σ^MAP=Σ^ML完全贝叶斯估计#
已知参数的先验 p(θi),求在已有训练样本集D的条件下,类条件概率密度函数 p(x∣D)=∫p(x∣θi)p(θi∣D)dθi。
不求单一 θi,而是对 θi 积分得到预测分布 p(x∣D)=∫p(x∣θi)p(θi∣D)dθi。这会得到高斯过程或贝叶斯线性回归。
走非参数路径(真实分布未知):
- Parzen窗/核密度估计:选择一个窗宽 h,构造概率密度 pn(x)=n1∑i=1nVn1ϕ(hx−xi)。这个模型直接由训练样本“记住”了分布。
- k-近邻法:根据样本数 n 动态调整搜索半径,直到包含 k 个最近邻。
估计先验概率 P(ωi)#
这一步最简单。在没有特殊知识的情况下:
- 频率计数法:P(ωi)≈NNi,即训练集中第 i 类样本占比。
- 均匀先验:假设所有类发生概率相等,P(ωi)=c1
确定决策准则,设定阈值θ#
这一步决定了怎么利用估计出的概率来决策。
- 最小错误率准则:ω^=argmaxiP(ωi∣x)
- 最小风险准则:引入损失函数 λij,ω^=argminj∑iλijP(ωi∣x)(例如,将癌症误判为健康的风险要远大于反过来)。
- 聂曼-皮尔逊准则:固定一类错误率,最小化另一类错误率
构建判别函数g(x),决策边界x#
判别函数: g(x),例如 lnP(x∣ω2)P(x∣ω1)
应用决策准则(应用阈值 θ ):g(x)≷θ,xassign toω2ω1
决策边界:g(x^)=θ 产生一个边界 x^,将特征空间划分为不同的决策区域。
- 对于最小错误率准则,等价于比较 p(x∣ω2)p(x∣ω1)>P(ω1)P(ω2)。
- 化简后,边界是一个超平面(LDA)或者二次曲面(QDA),或者是一个由样本点刻画的复杂非线性区域(k-NN / Parzen)。
模型评估(计算总错误率)#
在测试集上评估。
- 错误率公式:正如我们之前详细讨论的,真实总体错误率必须是联合概率的积分:
P(error)=∫R2p(x∣ω1)P(ω1)dx+∫R1p(x∣ω2)P(ω2)dx
输出部署#
对一个新的无标签样本 xnew,调用构建的判别函数,直接输出 ω^。
- LDA = (参数法 ML) + (协方差相等假设) + (最小错误率准则)。
- 朴素贝叶斯 = (参数法 ML) + (特征独立性假设) + (最小错误率准则)。
- 高斯过程 = (完全贝叶斯估计) + (最小错误率准则)。
- k-NN = (非参数估计 k近邻) + (最小错误率准则)(无需显式建模密度函数)。
- Parzen窗分类器 = (非参数估计 Parzen窗) + (最小错误率准则)。
- 图像复原 = (参数法 MAP) + (拉普拉斯先验) + (最小化均方误差/风险)。
朴素贝叶斯:多项式MNB#
- MNB的特征向量:x=(x1,x2,...,xn),如文本分类中,xi 是一个文档样本里,词表 V 中第 i 个词的词频。
P(vi∣ω)=Nω+αDNiω+α其中 Niω 是在类别 ω 下特征 xi 出现的次数,Nω 是在类别 ω 下所有特征出现的总次数,α=1 是拉普拉斯平滑参数,D 是特征空间的维度(特征数量或词表大小)。
决策时,xi 在右上角作为幂指数。
| 文档ID | 文档中的词 | 类别 |
|---|
| 1 | apple banana | 水果 |
| 2 | apple apple | 水果 |
| 3 | apple orange | 水果 |
| 4 | cucumber cabbage Apple | 非水果 |
| 5 | apple apple apple cucumber cabbage | ? |
定义词表:apple,banana,orange,cucumber,cabbage,特征空间维度 D=5。
特征向量(id作为下标)
x1=(1,1,0,0,0),x2=(2,0,0,0,0),x3=(1,0,1,0,0),x4=(1,0,0,1,1),x5=(3,0,0,1,1)取前四个文档作为训练集,计算先验概率和类条件概率:
先验概率:P(水果)=43,P(非水果)=41
类条件概率:

朴素贝叶斯:伯努利BNB#
条件概率 P(xi∣ω) 是一个伯努利分布:
P(xi∣ω)={P(xi=1∣ω)1−P(xi=1∣ω)if xi=1if xi=0P(xi=1∣ω)=Nω+2αNiω+α这里 Niω 是在类别 ω 下特征 xi 出现的 文档数量,Nω 是在类别 ω 下的 文档总数,α=1 是拉普拉斯平滑参数。
- 在伯努利贝叶斯分类器中, 只关注是否出现,不关注频率
朴素贝叶斯:高斯GNB#
假设每个单独的特征 xi∈x 的条件概率 P(xi∣ω) 是一个高斯分布 N(μiω,σiω2):
P(xi∣ω)=2πσiω1exp(−2σiω2(xi−μiω)2)其中 μiω 和 σiω 是在类别 ω 下特征 xi 的均值和方差。需要估计。
补充:图模型#
朴素贝叶斯分类器本质上就是一个非常简单的概率图模型(贝叶斯网络)
结构如下:
node: 特征 xi 和类别 ω 都是节点。
edge: ω→xi,表示类别 ω 影响特征 xi 的生成。特征之间没有边,表示条件独立。
此时,联合概率分布可以表示为:
P(ω,x1,x2,...,xn)=P(ω)i=1∏nP(xi∣ω)=P(ω)P(X∣ω)
判别式模型-二项逻辑回归-MLE#
判别式模型直接建模条件概率 P(Y∣X),不关心特征的分布。对于二分类问题,常用的模型是逻辑回归。
例如,X∈Rn 作为输入,Y∈0,1 作为输出,我们可以使用逻辑函数(sigmoid函数)将线性组合映射到概率空间:
P(Y=1∣X)P(Y=0∣X)=σ(wTX+b)=1+e−(wTX+b)1=1−P(Y=1∣X)=1−σ(wTX+b)TIP这里sigmoid的指数显示的指出了 w,b,但是也可以用增广的输入 X′=[X;1] 和权重 θ=[w;b] 来表示,这样就不需要单独处理偏置项了。
这种表示下的 θTX′ 和后文的 wTX+b 是等价的。
对于输入数据,格式为 {X(n),Y(n)}n=1N ,右上角的 (n) 表示第 n 个样本。其中的 X∈Rn 是特征组成的向量,Y={0,1} 是标签。我们可以通过最大化似然函数来训练模型:
L(w,b)=n=1∏NP(Y(n)∣X(n))=n=1∏Nσ(wTX(n)+b)Y(n)(1−σ(wTX(n)+b))1−Y(n)这里 Y(n) 在幂指数的位置, P(Y(n)∣X(n)) 是根据 Y(n) 的取值来选择 σ(wTX(n)+b),(Y(n)=1) 或 1−σ(wTX(n)+b),(Y(n)=0),这样可以统一表示两种情况。
但是这依托是乘积不好优化,不妨转化为对数似然:
logL(w,b)=n=1∑N[Y(n)logσ(wTX(n)+b)+(1−Y(n))log(1−σ(wTX(n)+b))]乘以 (−N1) ,转化为最小化问题(这其实就是交叉熵损失函数)
w,bminl(w,b)=w,bmin−N1n=1∑N[Y(n)logσ(wTX(n)+b)+(1−Y(n))log(1−σ(wTX(n)+b))]问题来了,怎么解?
梯度下降:
关于梯度的计算:
TIPsigmoid函数的导数 σ′(z)=σ(z)(1−σ(z)),这是一个重要的性质,在计算梯度时会用到。
外面套一个log,求导 (logσ(z))′=σ(z)σ′(z)=1−σ(z)
∂w∂l∂b∂l=N1n=1∑N(σ(wTX(n)+b)−Y(n))X(n)=N1n=1∑N(σ(wTX(n)+b)−Y(n))