4 朴素贝叶斯
4.1.1 朴素贝叶斯的学习与分类
设输入空间X⊆Rn为n维向量的集合,输出空间为类标记集合Y={c1,c2,...,ck}。输入为特征向量x∈X,输出为类标记(class label)y∈Y。X是定义在输入空间X上的随机变量,Y是定义在输出空间Y上的随机变量,P(X,Y)是X和Y的联合概率分布,训练数据集
T={(x1,y1),(x2,y2),...,(xn,yn)}
由P(X,Y)独立同分布产生。
朴素贝叶斯法通过训练数据集学习联合概率分布P(X,Y)。具体的,是学习先验概率分布及条件概率分布。
先验概率分布
P(Y=ck),k=1,2,...,K
条件概率分布
P(X=x|Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)|Y=ck),k=1,2,...,K
从而获得联合概率分布。
条件概率分布P(X=x|Y=ck)有指数级的参数,其估计实际上是不可能的。假设x(j)可取值有Sj个,j=1,2,..,n,Y可取值有K个,那么参数个数为K∏nj=1Sj
朴素贝叶斯法为了解决该问题,作了条件独立性假设,由于这是一个较强的假设,朴素贝叶斯法因此得名。
P(X=x|Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)|Y=ck)=n∏j=1P(X(j)=x(j)|Y=ck)
基于此,后验概率为
P(Y=ck|X=x)=P(X=x|Y=ck)P(Y=ck)∑kP(X=x|Y=ck)P(Y=ck)
将上式代入,可得
P(Y=ck|X=x)=P(Y=ck)∏nj=1P(X(j)=x(j)|Y=ck)∑kP(Y=ck)∏nj=1P(X(j)=x(j)|Y=ck)
于是得到
y=f(x)=argmaxckP(Y=ck)∏nj=1P(X(j)=x(j)|Y=ck)∑kP(Y=ck)∏nj=1P(X(j)=x(j)|Y=ck)
又因为分母部分对于所有的ck是一致的,所以
y=f(x)=argmaxckP(Y=ck)n∏j=1P(X(j)=x(j)|Y=ck)
4.1.2 后验概率最大化的定义
朴素贝叶斯实际是将实例分到后验概率最大化的类中,这等价于期望风险最小化。假设选择0-1损失函数
L(Y,f(X))={1,Y≠f(X)0,Y=f(X)
期望风险函数为:
Rexp(f)=E[L(Y,f(X))]=EXK∑k=1L(Y,f(X))P(ck|X)
为使期望风险最小化,只需对X=x逐个极小化,由此
f(x)=argminy∈YK∑k=1L(Y,f(X))P(ck|X=x)=argminy∈YK∑k=1P(y≠ck|X=x)=argminy∈YK∑k=11−P(y=ck|X=x)=argmaxy∈YK∑k=1P(y=ck|X=x)
由此,根据期望风险最小化准则得到了后验概率最大化准则,也就是贝叶斯法所采用的准则。
4.2 朴素贝叶斯法的参数估计
4.2.1 极大似然估计
先验概率的极大似然估计
P(Y=ck)=∑Ni=1I(yi=ck)N,k=1,2,...,K
证明:
首先明确参数是什么,参数是p(y=ck)以及p(x(j)=ajl|y=ck),以ψ代表这两个参数
L(ψ)=logN∏i=1p(xi,yi;ψ)=logN∏i=1p(xi|yi;ψ)p(yi;ψ)=logN∏i=1(n∏j=1p(x(j)i|yi;ψ))p(yi;ψ)=N∑i=1[logp(yi;ψ)+n∑j=1logp(x(j)i|yi;ψ)]代入参数=N∑i=1[K∑k=1logp(y=ck)I(yi=ck)+K∑k=1n∑j=1Sj∑l=1logp(x(j)i=ajl|yi=ck)I(x(j)i=ajl,yi=ck)]=N∑i=1[K∑k=1I(yi=ck)logp(y=ck)+K∑k=1n∑j=1Sj∑l=1I(x(j)i=ajl,yi=ck)logp(x(j)i=ajl|yi=ck)]
但实际上,p(y=ck)也存在相应的约束,有约束的求极值,可以考虑使用拉格朗日乘子法。
上式子中只有前半段含有$p(y = c_k),所以求先验概率估计时只考虑前半部分
先验概率估计
令F=∑Ni=1[∑Kk=1I(yi=ck)logp(y=ck)+λ(1−∑Kk=1p(y=ck))]
这里需要注意,并没有直接把1−∑Kk=1p(y=ck))代入,而是带入了∑Ni=1(1−∑Kk=1p(y=ck))),区别不大,因为都是0,代入一个和多个是一样的,但是代入多个的情况下,下面更容易求解。
⎧⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎩∂F∂p(y=c1)=∑Ni=1I(y=c1)p(y=c1)−λ=0∂F∂p(y=c2)=∑Ni=1I(y=c2)p(y=c2)−λ=0...∂F∂p(y=cK)=∑Ni=1I(y=cK)p(y=cK)−λ=0∂F∂λ=∑Ni=1{1−∑Kk=1p(y=ck)}=0
联立前N个式子,可得
⎧⎪
⎪
⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪
⎪
⎪⎩p(y=c1)=∑Ni=1I(y=c1)Nλp(y=c2)=∑Ni=1I(y=c2)Nλ...p(y=cK)=∑Ni=1I(y=cK)Nλ(2)
因为∑Kk=1p(y=ck)=1,所以
1=∑Ni=1∑Ki=1I(y=ck)Nλ1=NNλλ=1
代入(2)式,得到
p(y=ck)=∑Ni=1I(y=ck)Nk=1,2,3,...,K
条件概率的极大似然估计
G=N∑i=1{K∑k=1n∑j=1((Sj∑l=1I(x(j)i=ajl,yi=ck)logp(x(j)i=ajl|yi=ck))+λkj(1−Sj∑l=1p(xj=ajl|y=ck))}
与上面类似,由于对于每个k,j都会存在一个∑Sjl=1p(xj=ajl|y=ck)=1,所以实际上存在k∗l个约束,求导可得
⎧⎪
⎪⎨⎪
⎪⎩∂G∂p(x(j)i=ajl|yi=ck))=∑Ni=1{I(x(j)i=ajl,yi=ck)p(x(j)i=ajl|yi=ck)−λkj}=0∂G∂λkj=∑Ni=1(1−∑Sjl=1p(xj=ajl|y=ck))=0(3)
由第一个式子可得
p(x(j)i=ajl|yi=ck)=∑Ni=1I(x(j)i=ajl,yi=ck)Nλkj(4)
由第二个式子可得
Sj∑l=1p(xj=ajl|y=ck))=1(5)
联立两个式子可得
1=Sj∑l=1∑Ni=1I(x(j)i=ajl,yi=ck)Nλkj1=∑Ni=1I(yi=ck)NλkjNλkj=N∑i=1I(yi=ck)
代入上式(4),得到
p(x(j)i=ajl|y=ck)=∑Ni=1I(x(j)i=ajl,yi=ck)∑Ni=1I(yi=ck)
证明完毕。
4.2.2 学习与分类算法
输入:训练数据T={(x1,y2),(x2,y2),...,(xN,yN)},其中xi=(x(1)i,x(2)i,...,x(j)i)T, 其中x(j)i是第i个样本的第j个特征,x(j)i∈{aj1,aj2,...ajSj},ajl是第j个特征可能的第l个取值,j=1,2,...,n,l=1,2,...,Sj,yi∈{c1,c2,...,cK};
输出:输出实例x的分类。
(1)计算先验概率及条件概率
p(y=ck)=∑Ni=1I(y=ck)N, k=1,2,3,...,Kp(x(j)i=ajl|y=ck)=∑Ni=1I(x(j)i=ajl,yi=ck)∑Ni=1I(yi=ck)j=1,2,...,n; l=1,2,...,Sj; k=1,2,...,K
(2)对于给定的实例x=(x(1),x(2),...,x(n))T,计算
P(Y=ck)n∏j=1P(X(j)=x(j)|Y=ck), k=1,2,...,K
(3)确定实例x的类
y=argmaxckP(Y=ck)n∏j=1P(X(j)=x(j)|Y=ck)
4.2.3 贝叶斯估计
使用极大似然估计可能会出现所要估计的概率值为0的情况,这时会影响到后验概率的计算结果,使分类产生偏差。解决这一问题的方法是采用贝叶斯估计
Pλ(X(j)=ajl|Y=ck)=∑Ni=1I(x(j)i=ajl,yi=ck)+λ∑Ni=1I(yi=ck)+Sjλ
式中λ>=0,等价于在随机变量各个取值的频数上赋予一个正数λ>0,当λ=0的时候,就是极大似然估计。常取λ=1,这时称为拉普拉斯平滑(Laplacian smoothing)。由于对于任意的l=1,2,...,Sj; k=1,2,...,K,都有
Pλ(X(j)=ajl|Y=ck)>0Sj∑l=1Pλ(X(j)=ajl|Y=ck)=0
所以贝叶斯估计也是一种概率分布,同样的,先验概率的贝叶斯估计是
Pλ(Y=ck)=∑Ni=1I(y=ck)+λN+Kλ, k=1,2,3,...,K
总结
-
朴素贝叶斯法是典型的生成学习方法。生成学习方法由训练数据学习联合概率分布P(X,Y),然后求得后验概率分布P(X|Y)。
-
朴素贝叶斯的基本假设是条件独立性,基于此,省略率大量的参数,学习与预测大为简化,因而优点是高效,且易于实现。缺点就是分类性能不一定很高。
习题
回顾下贝叶斯估计
思路:假设概率Pλ(Y=ci)服从狄利克雷(Dirichlet)分布,根据贝叶斯公式,推导后验概率也服从Dirichlet分布,求参数期望;
证明步骤:
- 条件假设
根据朴素贝叶斯法的基本方法,训练数据集T={(x1,y1),(x2,y2),…,(xN,yN)},假设:
(1)随机变量Y出现y=ck的次数为mk,即mk=N∑i=1I(yi=ck),可知K∑k=1mk=N(y总共有N个);
(2)Pλ(Y=ck)=uk,随机变量uk服从参数为λ的Dirichlet分布。
补充说明:
-
狄利克雷(Dirichlet)分布
参考PRML(Pattern Recognition and Machine Learning)一书的第2.2.1章节:⽤似然函数(2.34)乘以先验(2.38),我们得到了参数uk的后验分布,形式为
p(u|D,α)∝p(D|u)p(u|α)∝K∏k=1uαk+mk−1k
该书中第B.4章节: 狄利克雷分布是K个随机变量0⩽uk⩽1的多变量分布,其中k=1,2,…,K,并满足以下约束
0⩽uk⩽1,K∑k=1uk=1
记u=(u1,…,uK)T,α=(α1,…,αK)T,有
Dir(u|α)=C(α)K∏k−1uαk−1kE(uk)=αkK∑k=1αk
-
为什么假设Y=ck的概率服从Dirichlet分布?
答:原因如下:
(1)首先,根据PRML第B.4章节,Dirichlet分布是Beta分布的推广。
(2)由于,Beta分布是二项式分布的共轭分布,Dirichlet分布是多项式分布的共轭分布。Dirichlet分布可以看作是“分布的分布”;
(3)又因为,Beta分布与Dirichlet分布都是先验共轭的,意味着先验概率和后验概率属于同一个分布。当假设为Beta分布或者Dirichlet分布时,通过获得大量的观测数据,进行数据分布的调整,使得计算出来的概率越来越接近真实值。
(4)因此,对于一个概率未知的事件,Beta分布或Dirichlet分布能作为表示该事件发生的概率的概率分布。
大佬牛逼...感谢网上的解答
-
得到先验概率:
P(u)=P(u1,u2,…,uK)=C(λ)K∏k=1uλ−1k
-
得到似然函数
记m=(m1,m2,…,mK)T,可得似然函数为
P(m|u)=um11⋅um22⋯umKK=K∏k=1umkk
-
得到后验概率分布
结合贝叶斯公式,求u的后验概率分布,可得
P(u|m)=P(m|u)P(u)P(m)
-
根据假设(1),可得
P(u|m,λ)∝P(m|u)P(u|λ)∝K∏k=1uλ+mk−1k
上式表明,后验概率分布P(u|m,\lambda)P(u∣m,λ)也服从Dirichlet分布
-
得到随机变量uu的期望
根据后验概率分布P(u|m,λ)和假设(1),求随机变量u的期望,可得
E(uk)=αkK∑k=1αk
其中αk=λ+mk,则
E(uk)=αkK∑k=1αk=λ+mkK∑k=1(λ+mk)=λ+mkK∑k=1λ+K∑k=1mk=λ+mkKλ+N=N∑i=1I(yi=ck)+λN+Kλ
公式(4.11)得证
公式(4.10)的证明类似
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~