【机器学习-西瓜书】七、朴素贝叶斯分类器

推荐前期阅读:http://blog.csdn.net/u011995719/article/details/76732663

推荐阅读:拉普拉斯修正

7.3朴素贝叶斯分类器

关键词: 朴素贝叶斯;拉普拉斯修正
上一小节我们知道贝叶斯分类器的分类依据是这公式: P ( c ∣ x ) = P ( x , c ) P ( x ) = P ( c ) ⋅ P ( x ∣ c ) P ( x ) P(c\mid x)=\frac{P(x,c)}{P(x)}=\frac{P(c)\cdot P(x\mid c)}{P(x)} P(cx)=P(x)P(x,c)=P(x)P(c)P(xc) ,对于每个样本而言,分母 P ( x ) = ∑ i = 1 m P ( x ∣ c i ) ⋅ P ( c i ) P(x)= \sum _{i=1}^{m}P(x\mid c_{i})\cdot P(c_{i}) P(x)=i=1mP(xci)P(ci) 是相同的,因此在做分类时,可以不计算分母。只需要考虑先验概率: P ( c ) P(c) P(c) 以及似然: P ( x ∣ c ) P(x\mid c) P(xc) 。先看先验概率 P ( c ) P(c) P(c),当给定训练集D,那么 P ( c ) P(c) P(c)则是固定的,所以也不需要经过复杂计算,直接统计数据集D中每个类别的占比,占比当作该类别的概率(大数定律);再看看如何计算似然: P ( x ∣ c ) P(x\mid c) P(xc) ,解释一下其中的x和c,c在这里表示某一个具体的类别; x是一个具体样本,有明确的值的样本; P ( x ∣ c ) P(x\mid c) P(xc) 就表示,在类别c中,取值为x的样本 出现的概率是多大,依旧采用大数定律,统计训练集D中有多少就认为概率有多大 。更具体的,假如样本是二维空间的点,c有正例和负例。那么要求 P ( x = ( 0 , 1 ) ∣ c = 正 例 ) P(x=(0,1 )\mid c=正例) P(x=01c=) 的概率,我们就要找正例的那堆样本当中,取值为(0,1)的样本所占的比例作为 P ( x = ( 0 , 1 ) ∣ c = 正 例 ) P(x=(0,1 )\mid c=正例) P(x=01c=) 的概率。

然而现实是很骨干的,假如现在要计算的是数字类别“7”下,x=(0,1…,0)这一种样本出现的概率,假设样本 有784个属性(2828的图片),且每个像素点的取值为0或者1,那么 样本x的可能取值就是2^784 ≈ 110^236 ! 如果没有足够多的数据,我们根本没办法去计算某一个具体样本x=(0,1…,0)在类别“7”当中出现的概率 P ( x = ( 0 , 1 , . . . , 0 ) ∣ 类 别 = " 7 " ) P(x=(0,1,...,0)\mid 类别="7") P(x=01,...,0="7") ,因为极有可能,我们的训练集D中没有样本 ,这一种组合, 也就是说784个属性的联合概率很难求出。

为了避开这个障碍,**朴素贝叶斯分类(naïve Bayes classifier)**出场啦,其采用了“属性条件独立性假设”,啥意思呢?对于上面那个例子,假设784个属性值(像素点)是独立的,那么我们的似然就可以这么计算 $P(x=(0,1,…,0)\mid 类别=7)=P(第一个属性值=0\mid 类别为7)\cdot P(第二个属性值=1\mid 类别为7) … \cdot P(第784个属性值=1\mid 类别为7) $

单独看第一个属性,假设类别数字7有样本10个,但是第一个属性值只有0或者1,我们就可以计算出10个样本当中,第一个属性值=0的概率是多少,以及=1的概率是多少,因此就可以把 P ( 第 一 个 属 性 值 = 0 ∣ 类 别 为 7 ) P(第一个属性值=0\mid 类别为7) P(=07) 求出来了。
因此,基于属性条件独立性假设,后验概率可依据如下公式计算(d表示有d个属性):
P ( c ∣ x ) = P ( x , c ) P ( x ) = P ( c ) ⋅ P ( c ∣ x ) P ( x ) = P ( c ) P ( x ) ⋅ ∏ i = 1 d P ( x i ∣ c ) P(c\mid x)=\frac{P(x,c)}{P(x)}=\frac{P(c)\cdot P(c\mid x)}{P(x)}=\frac{P(c)}{P(x)}\cdot \prod _{i=1}^{d}P(x_{i}\mid c) P(cx)=P(x)P(x,c)=P(x)P(c)P(cx)=P(x)P(c)i=1dP(xic)

最终的朴素贝叶斯分类器表达式为:
h n b ( x ) = arg ⁡ max ⁡ P ( c ) ∏ i = 1 d P ( x i ∣ c ) h_nb(x)=\arg \max P(c) \prod _{i=1}^{d}P(x_{i}\mid c) hnb(x)=argmaxP(c)i=1dP(xic)

讲个简单例子来使用朴素贝叶斯分类器进行分类:
某个医院早上收了六个门诊病人,如下表。
这里写图片描述
这里有两个属性,分别是症状,职业;疾病则为类别,共三种类别,分别是感冒,过敏,脑震荡。
现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?根据贝叶斯公式,有
这里写图片描述
假定"打喷嚏"和"建筑工人"这两个特征是独立的,因此,上面的等式就变成了
这里写图片描述
这是可以计算的。
这里写图片描述

由于计算类条件概率(似然)的时候,利用了独立性假设,将每个属性的概率连乘,若某个属性值在训练样本中没有与某个类别同时出现过,那么概率则为0,很显然判别将会出问题,为了避免其他属性携带的信息被训练集中未出现的属性值“抹去”,在估计概率值时通常进行“平滑”(smoothing),常用**“拉普拉斯修正”(Laplacian correction)**。具体操作如下:令m表示训练集D中可能的类别数, N i N_{i} Ni 表示第i个属性可能的取值数(如上面的数字识别,第i个属性可能的取值为0或者1,那么 N i N_{i} Ni 为2),修正的先验概率以及类条件概率(似然)分别为:
P ( c ) ^ = ∣ D c ∣ + 1 ∣ D ∣ + N \hat{P(c)}=\frac{\left | D_{c} \right |+1}{\left | D \right |+N} P(c)^=D+NDc+1
P ^ ( x i ∣ c ) = ∣ D c , x i ∣ + 1 ∣ D c ∣ + N i \hat{P}(x_{i}\mid c)=\frac{\left | D_{c,x_{i}} \right |+1}{\left | D_{c} \right |+N_{i}} P^(xic)=Dc+NiDc,xi+1
通过拉普拉斯修正,就可以避免因训练集样本不充分而导致概率估值为零的问题。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值