朴素贝叶斯

本文介绍了贝叶斯公式及其在癌症检测概率计算中的应用,展示了如何利用先验概率估计后验概率。接着,讨论了贝叶斯分类器的基本原理,解释了如何通过最大化后验概率进行分类,并指出计算难点。为解决计算复杂性,引入了朴素贝叶斯假设,简化了计算过程。最后,通过西瓜数据集展示了朴素贝叶斯分类的计算步骤,强调了其在实际问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.贝叶斯公式

已知随机事件A、B发生的概率P(A)和P(B),以及A发生条件下B发生的概率P(B|A),那么B发生的条件下A发生的概率为:
P(A∣B)=P(A)P(B∣A)P(B) \begin{aligned} P(A|B)=\cfrac{P(A)P(B|A)}{P(B)} \end{aligned} P(AB)=P(B)P(A)P(BA)
贝叶斯公式有何实际意义?我们看个癌症的实例:

某城市有足够多的人群作为样本,人群中得癌症的概率为0.005,其中得癌症检测结果为阳性的概率为0.9,而未得癌
症检测结果为阳性的概率为0.05.现在已知某人检测结果为阳性,他患有癌症的概率为多少?

设事件AAA为患有癌症,A‾\overline{A}A为未患癌症。
设事件BBB为检测结果为阳性。

由题可知,P(A)=0.005,P(A‾)=0.995,P(B∣A)=0.9,P(B∣A‾)=0.05P(A)=0.005,P(\overline{A})=0.995,P(B|A)=0.9,P(B|\overline{A})=0.05P(A)=0.005,P(A)=0.995,P(BA)=0.9,P(BA)=0.05
那么,P(B)=P(A)P(B∣A)+P(A‾)P(B∣A‾)=0.005∗0.9+0.995∗0.05=0.05425P(B)=P(A)P(B|A)+P(\overline{A})P(B|\overline{A})=0.005*0.9+0.995*0.05=0.05425P(B)=P(A)P(BA)+P(A)P(BA)=0.0050.9+0.9950.05=0.05425
则,

P(A∣B)=P(A)P(B∣A)P(B)=0.005∗0.90.05425≈0.083 \begin{aligned} P(A|B)=\cfrac{P(A)P(B|A)}{P(B)}=\cfrac{0.005*0.9}{0.05425}\approx0.083 \end{aligned} P(AB)=P(B)P(A)P(BA)=0.054250.0050.90.083
从此可以看出,虽然检测结果为阳性,但是得癌症的概率还是比较低的。这是因为,得癌症这种先验概率(由经验主观得到的概率,一般用事件发生频率来近似表示先验概率)本身就很低,那么附加一个条件后的这种后验概率(由当下因果导致的概率)也不会变得很大。所以,贝叶斯公式的意义在于:用样本集得到的先验概率去估计由一定因果导致的后验概率。

2.贝叶斯分类器

已知样本集D={(xi,c)}i=1mD=\begin{Bmatrix}(x_i,c) \end{Bmatrix}_{i=1}^mD={(xi,c)}i=1m,其中xi=(xi1,xi2,...,xid)x_i=(x_{i1},x_{i2},...,x_{id})xi=(xi1,xi2,...,xid)有d个属性,而c∈Y={y1,y2,...,yn}c\in Y=\begin{Bmatrix}y_1,y_2,...,y_n \end{Bmatrix}cY={y1,y2,...,yn},总共有n个类别。现有一个新的样本xxx,那么该分为哪一类?我们考虑,计算把它分给各个类别的概率,去比较谁最大就分给谁。则有后验概率P(c∣x)P(c|x)P(cx),表示样本为xxx的条件下,它属于ccc类的概率。用贝叶斯公式计算得:
P(c∣x)=P(c)P(x∣c)P(x) \begin{aligned} P(c|x)=\cfrac{P(c)P(x|c)}{P(x)} \end{aligned} P(cx)=P(x)P(c)P(xc)
我们要比较大小,而分母都是相同的可以忽略,所以只用比较分子。贝叶斯分类器的表达式为:
c∗=argmax(c∈Y)P(c)P(x∣c) \begin{aligned} c*=argmax_{(c\in Y)} P(c)P(x|c) \end{aligned} c=argmax(cY)P(c)P(xc)
其中P(c)P(c)P(c)ccc类出现的概率,可以用ccc类在样本集DDD上出现的频率来估计。然而,贝叶斯分类器的难点在于计算P(x∣c)=P(x1,x2,...,xd∣c)P(x|c)=P(x_1,x_2,...,x_d|c)P(xc)=P(x1,x2,...,xdc)。因为数据有d个属性,所以它是个联合概率。如果每个属性有2种取值的话,就有2d2^d2d种取值的可能,计算这种概率是不太可能的,所以提出了朴素贝叶斯。

3.朴素贝叶斯

朴素贝叶斯之所以朴素是因它进行了属性条件独立的先验假设:对于已知类别,所有属性相互独立。有了属性条件独立的假设,就能减少计算量,此时P(x∣c)=P(x1∣c)P(x2∣c)...P(xd∣c)P(x|c)=P(x_1|c)P(x_2|c)...P(x_d|c)P(xc)=P(x1c)P(x2c)...P(xdc),于是朴素贝叶斯分类器表示为:
c∗=argmax(c∈Y)P(c)Πi=1dP(xi∣c) \begin{aligned} c*=argmax_{(c\in Y)} P(c)\Pi_{i=1}^dP(x_i|c) \end{aligned} c=argmax(cY)P(c)Πi=1dP(xic)
其中P(c)=∣Dc∣∣D∣P(c)=\cfrac{|D_c|}{|D|}P(c)=DDc,意为c类样本在整个样本集D上的比例。
若属性是离散型的P(xi∣c)=∣Dc,xi∣∣Dc∣P(x_i|c)=\cfrac{|D_{c,x_i}|}{|D_c|}P(xic)=DcDc,xi , 意为c类样本中第i个属性为xix_ixi的样本占c类样本的比例。从概率学的角度,这样计算是没有问题的。但是,现实中可能出现 “未被观测到的样本” ,即该样本的某属性值在训练样本上从未出现过,或该样本具有新的类别。这样就使得P(xi∣c)=0P(x_i|c)=0P(xic)=0P(c)=0P(c)=0P(c)=0,最终导致P(c∣x)=0P(c|x)=0P(cx)=0,造成分类错误。所以,我们需要对上述公式再进行拉普拉斯修正
P(c)=∣Dc∣+1∣D∣+NcP(xi∣c)=∣Dc,xi∣+1∣Dc∣+Ni \begin{aligned} P(c)&=\cfrac{|D_c|+1}{|D|+N_c}\\ P(x_i|c)&=\cfrac{|D_{c,x_i}|+1}{|D_c|+N_i} \end{aligned} P(c)P(xic)=D+NcDc+1=Dc+NiDc,xi+1
其中NcN_cNc表示数据集D中出现的类别数,NiN_iNi表示数据集D中第i个属性不同取值的个数。

若属性是连续型的,我们考虑用概率密度来代替概率,因为概率密度越大概率也就越大(它们是积分的关系,概率密度又是恒大于0的)。假设第i个属性的随机变量服从正太分布xi∽N(uc,i,δc,i2)x_i\backsim N(u_{c,i},\delta_{c,i}^2)xiN(uc,i,δc,i2)(也可以是均匀分布等,根据具体而定),则有:
p(xi∣c)=12πδc,iexp(−(xi−uc,i)22δc,i2) \begin{aligned} p(x_i|c)=\cfrac{1}{\sqrt{2\pi}\delta_{c,i}}exp(-\cfrac{(x_i-u_{c,i})^2}{2\delta^2_{c,i}}) \end{aligned} p(xic)=2πδc,i1exp(2δc,i2(xiuc,i)2)
其中uc,iu_{c,i}uc,i是c类数据中第i个属性的均值,δc,i2\delta^2_{c,i}δc,i2是c类数据中第i个属性的方差。

总结: 朴素贝叶斯就是想找到后验概率P(c∣x)P(c|x)P(cx)最大的分类,这个过程就是在计算各种各样的频率,实质上朴素贝叶斯的计算过程就是在“计数”。朴素贝叶斯分类器的训练主要有两种策略:预学习和懒惰学习。预学习就是根据训练样本集计算出所有的概率并存储下来,当进行预测时只需要“查表”即可;懒惰学习就是不进行任何训练直接存储训练集,当进行预测时再加载训练集计算需要的概率。

4.朴素贝叶斯的计算示例

我们通过著名的西瓜数据集来模拟一遍朴素贝叶斯的计算过程。数据集如下:

密度含糖率瓜好否
清晰0.6970.46
清晰0.7740.376
清晰0.6340.264
清晰0.6080.318
清晰0.5560.215
清晰0.4030.237
模糊0.4810.149
清晰0.4370.211
模糊0.6660.091
清晰0.2430.267
模糊0.2450.057
模糊0.3430.099
模糊0.6390.161
模糊0.6570.198
清晰0.3600.370
模糊0.5930.042
模糊0.7190.103

现有一个新的样本,该把它分为好瓜还是坏瓜?

密度含糖率
清晰0.5520.461
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值