朴素贝叶斯分类器

参考 朴素贝叶斯分类器 - 云+社区 - 腾讯云

 

不难发现,基于贝叶斯公式来估计后验概率P(c|x)的主要困难在于:类条件概率P(x|c)是所有属性上的联合概率,难以从有限的训练样本直接估计得到。为避开这个障碍,朴素贝叶斯分类器(naive Bayes classifier)采用了“属性条件独立性假设”(attribute conditional independence assumption):对已知类别,假设所有属性相互独立。换言之,假设每个属性独立地对分类结果发生影响。基于属性条件独立性假设,贝叶斯公式可重写为

                    P(c|x)=\frac{P(c)P(x|c)}{P(x)}=\frac{P(c)}{P(x)}\prod ^d_{i=1}P(x_i|c)

其中d为属性数目,x_i为x在第i个属性上的取值。由于对所有类别来说P(x)相同,因此基于贝叶斯判定准则有

                  h_{nb}(x)=\mathop{\arg\min}_{c\in \gamma } P(c) \prod ^d_{i=1}P(x_i|c)

这就是朴素贝叶斯分类器的表达式。显然,朴素贝叶斯分类器的训练过程就是基于训练集D来估计类先验概率P(c),并为每个属性估计条件概率P(x_i|c)。令D_c表示训练集D中第c类样本组成的集合,若有充足的独立同分布样本,则可容易地估计出类先验概率

                   P(c)=\frac{|D_c|}{|D|}

对离散属性而言,令D_{c,x_i}表示D_{c}中在第i个属性上取值为x_i的样本组成的集合,则条件概率P(x_i|c)可估计为

                 P(c)=\frac{|D_{c,x_i}|}{|D|}

对连续属性可考虑概率密度函数,假定p(x_i|c)\sim N(\mu_{c,i},\sigma_{c,i}^2),其中\mu_{c,i}\sigma^2_{c,i}分别是第c类样本在第i个属性上取值的均值和方差,则有

                 p(x_i|c)=\frac{1}{\sqrt{2\pi \sigma_{c,i}}}exp(-\frac{(x_i-\mu_{c,i})^2}{2\sigma^2_{c,i}})

下面我们用西瓜数据集3.0训练一个朴素贝叶斯分类器,对测试例“例1”进行分类;

   

编号色泽根蒂纹理脐部触感密度含糖率敲声好瓜
测1青绿蜷缩清晰凹陷硬滑0.6070.460浊响

首先估计类先验概率P(c),显然有

  • P(好瓜=是)=8/17\approx0.471
  • P(好瓜=否)=9/17\approx0.529

然后为每个属性估计条件概率P(x_i|c)

  • P青绿|是=P(色泽=青绿|好瓜=是)=3/8=0.375
  • P青绿|否=P(色泽=青绿|好瓜=否)=3/8\approx0.333
  • P蜷缩|是=P(根蒂=蜷缩|好瓜=是)=3/8=0.625
  • P蜷缩|否=P(根蒂=蜷缩|好瓜=否)=3/8\approx0.333
  • P浊响|是=P(敲声=浊响|好瓜=是)=3/8=0.750
  • P浊响|否=P(敲声=浊响|好瓜=否)=3/8\approx0.444
  • P清晰|是=P(纹理=清晰|好瓜=是)=3/8=0.875
  • P清晰|否=P(纹理=清晰|好瓜=否)=3/8\approx0.222
  • P凹陷|是=P(脐部=凹陷|好瓜=是)=3/8=0.750
  • P凹陷|否=P(脐部=凹陷|好瓜=否)=3/8\approx0.222
  • P硬滑|是=P(触感=硬滑|好瓜=是)=3/8=0.750
  • P硬滑|否=P(触感=硬滑|好瓜=否)=3/8\approx0.667

p密度:0.667|是=p(密度=0.697|好瓜=是)=\frac{1}{\sqrt{2\pi} \cdot 0.129}exp(-\frac{(0.697- 0.574)^2}{2\cdot0.129^2})\approx 1.959 

p密度:0.667|是=p(密度=0.697|好瓜=是)=\frac{1}{\sqrt{2\pi} \cdot 0.195}exp(-\frac{(0.697- 0.496)^2}{2\cdot0.195^2})\approx 1.203

p密度:0.667|是=p(密度=0.697|好瓜=是)=\frac{1}{\sqrt{2\pi} \cdot 0.101}exp(-\frac{(0.460- 0.279)^2}{2\cdot0.101^2})\approx 0.788 

p密度:0.667|是=p(密度=0.697|好瓜=是)=\frac{1}{\sqrt{2\pi} \cdot 0.108}exp(-\frac{(0.460- 0.154)^2}{2\cdot0.108^2})\approx 0.066 

于是,有

P(好瓜=是)\timesP青绿|是\timesP蜷缩|是\timesP浊响|是\timesP凹陷|是\timesP硬滑|是\timesp密度:0.697|是\timesp含糖:0.460|是\approx0.063

P(好瓜=否)\timesP青绿|否\timesP蜷缩|否\timesP浊响|否\timesP凹陷|否\timesP硬滑|否\timesp密度:0.697|否\timesp含糖:0.460|否\approx0.680\times 10^{-5}

由于0.063>6.80\times 10^{-5},因此,朴素贝叶斯分类器将测试样本“测1”判别为“好瓜”。

需注意,肉某个属性值在训练集中没有与某个类同时出现过,则直接基于P(x_i|c)进行概率估计,再根据h_{nb}(x)进行判别将出现问题。例如,在使用西瓜数据集3.0训练朴素贝叶斯分类器时,对一个“敲声=清脆”的测试例,有

P清脆|是=P(敲声=清脆|好瓜=是)=\frac{0}{8}=0

h_{nb}(x)的连乘计算出的概率值为零,因此,无论该样本的其他属性是什么,哪怕在其他属性上明显像好瓜,分类的结构都是“好瓜=否”,这显然不太合理。

为了避免其他属性携带的信息被训练中未出现的属性值“抹去”,在估计概率值时通常要进行“平滑”,常用“拉普拉斯修正”(Laplace correction)。具体来说,令N表示训练集中可能的类别数,Ni表示第i个属性可能的取值,则P(c)和P(x_i|c)分别修正为

                                            \hat{P}(c)=\frac{|D_c|+1}{|D|+N}

                                           \hat{P}(x_i|c)=\frac{|D_{c_i,x}|+1}{|D_{c}|+1}

例如,在本例中,类先验概率可估计为

\hat{P}(好瓜|是)=(8+1)/(17+2)\approx0.474

\hat{P}(好瓜|否)=(9+1)/(17+2)\approx0.526

类似地,P青绿|是和P青绿|否,可估计为

\hat{P}青绿|是=\hat{P}(色泽=青绿|好瓜=是)=(3+1)/(8+3)\approx0.364

\hat{P}青绿|否=\hat{P}(色泽=青绿|好瓜=否)=(3+1)/(9+3)\approx0.333

同时,上文提到的概率P清脆|是,可估计为

\hat{P}青绿|是=\hat{P}(敲声=清脆|好瓜=是)=(0+1)/(8+3)\approx0.091

显然,拉普拉斯修正避免了因训练集样本不允许而导致概率估值为零的问题,并且在训练集变大时,修正过程所引入的先验(prior)的影响也会逐渐变得可忽略,使得估值趋向于实际概率值。在现实任务中朴素贝叶斯分类器有多种使用方法。例如,若任务对预测速度要求较高,则对给定训练集,可将朴素贝叶斯分类器设计的所有概率值估值实现算好存储起来,这样在进行预测时只需“查表”即可进行判别;若任务数据更换频繁,则可采用“懒惰学习”(lazy learning)方式,先不进行任何训练,待收到预测请求时再根据当前数据集进行概率估值;若数据不断增加,则可在现有估值基础上,仅对新增样本的属性值所涉及的概率估值进行计数修正即可实现增量学习。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wanderer001

ROIAlign原理

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值