多项式朴素贝叶斯算法

注:本文主要由《统计学习方法》整理而来,文中公式所针对的是多项式朴素贝叶斯模型

一、朴素贝叶斯的学习与分类

朴素贝叶斯的算法分成以下两步:

  • 基于条件独立假设,计算联合分布
  • 基于贝叶斯定理,针对输入x,求出后验概率最大的输出y

因此下面也从这两个步骤来解析朴素贝叶斯算法。

1.1 联合分布的计算

P ( X , Y ) = P ( X ∣ Y ) P ( Y ) P(X,Y)=P(X|Y)P(Y) P(X,Y)=P(XY)P(Y)可得,联合分布的计算可转换为求 P ( X ∣ Y ) , P ( Y ) P(X|Y),P(Y) P(XY),P(Y)两项,而这两项的计算方法如下:

P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N P ( X ( j ) = a j l ∣ Y = c k ) = # ( X ( j ) = a j l , Y = c k ) # ( Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k ) k = 1 , 2 , . . . , K ; j = 1 , 2 , . . . , n ; l = 1 , 2 , . . . , S j ; P(Y=c_k)=\frac{\sum_{i=1}^{N}I(y_i=c_k)}{N} \\ P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\#(X^{(j)}=a_{jl},Y=c_k)}{\#(Y=c_k)}=\frac{\sum_{i=1}^{N}{}{I(x_i^{(j)}=a_{jl},y_i=c_k)}}{\sum_{i=1}^{N}I(y_i=c_k)}\\ k=1,2,...,K;j=1,2,...,n;l=1,2,...,S_j; P(Y=ck)=Ni=1NI(yi=ck)P(X(j)=ajlY=ck)=#(Y=ck)#(X(j)=ajl,Y=ck)=i=1NI(yi=ck)i=1NI(xi(j)=ajl,yi=ck)k=1,2,...,Kj=1,2,...,nl=1,2,...,Sj
其中,

N N N表示数据集的样本总数, K K K表示数据集的类别种数;

x i ( j ) x_i^{(j)} xi(j)表示第 i i i个样本的第 j j j个特征,且该数据集一共有 n n n个特征;

a j l a_{jl} ajl表示第 j j j个特征的第 l l l种取值, S j S_j Sj表示第 j j j个特征一共有 S j S_j Sj种取值。

下面举一个例子:

在这里插入图片描述

求解如下:

在这里插入图片描述

在上述情况中,为了避免联合分布为0的情况的出现,我们引入了平滑处理,意义是为每种取值的频数赋予一个正数 λ > 0 \lambda>0 λ>0,常取 λ = 1 \lambda=1 λ=1,称为拉普拉斯平滑。

引入平滑处理后,公式变为:
P λ ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) + λ N + K λ P λ ( X ( j ) = a j l ∣ Y = c k ) = # ( X ( j ) = a j l , Y = c k ) # ( Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) + λ ∑ i = 1 N I ( y i = c k ) + S j λ P_\lambda(Y=c_k)=\frac{\sum_{i=1}^{N}I(y_i=c_k)+\lambda}{N+K\lambda} \\ P_\lambda(X^{(j)}=a_{jl}|Y=c_k)=\frac{\#(X^{(j)}=a_{jl},Y=c_k)}{\#(Y=c_k)}=\frac{\sum_{i=1}^{N}{}{I(x_i^{(j)}=a_{jl},y_i=c_k)}+\lambda}{\sum_{i=1}^{N}I(y_i=c_k)+S_j\lambda}\\ Pλ(Y=ck)=N+Kλi=1NI(yi=ck)+λPλ(X(j)=ajlY=ck)=#(Y=ck)#(X(j)=ajl,Y=ck)=i=1NI(yi=ck)+Sjλi=1NI(xi(j)=ajl,yi=ck)+λ
引入平滑处理后,上述例题的结果变为:

在这里插入图片描述
可以发现,分子加一是为了避免某类别出现的次数为0,分母加上对应的类别数只是为了确保分子加一后,每一行之和仍为1

1.2 判断输入的类别

由贝叶斯公式有:
P ( Y = c k ∣ X = x ) = P ( X = x , Y = c k ) P ( X = x ) = P ( Y = c k ) P ( X = x ∣ Y = c k ) ∑ k P ( Y = c k ) P ( X = x ∣ Y = c k ) = P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) ∑ k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) P(Y=c_k|X=x)=\frac{P(X=x,Y=c_k)}{P(X=x)}=\frac{P(Y=c_k)P(X=x|Y=c_k)}{\sum_kP(Y=c_k)P(X=x|Y=c_k)}\\=\frac{P(Y=c_k)\prod_jP(X^{(j)=x^{(j)}}|Y=c_k)}{\sum_kP(Y=c_k)\prod_jP(X^{(j)=x^{(j)}}|Y=c_k)} P(Y=ckX=x)=P(X=x)P(X=x,Y=ck)=kP(Y=ck)P(X=xY=ck)P(Y=ck)P(X=xY=ck)=kP(Y=ck)jP(X(j)=x(j)Y=ck)P(Y=ck)jP(X(j)=x(j)Y=ck)
其中, k k k是数据集的类别总数, j j j是数据集的特征总数

由于对于任意一个输入x,其分母都是相同的,所以朴素贝叶斯分类器实际可以简化为:
y = a r g m a x c k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) y=argmax_{c_k}P(Y=c_k)\prod_jP(X^{(j)=x^{(j)}}|Y=c_k) y=argmaxckP(Y=ck)jP(X(j)=x(j)Y=ck)

继续上面的例子,

当不采用拉普拉斯平滑时,若输入X=(2,S),结果为-1:
在这里插入图片描述

当采用拉普拉斯平滑时,若输入X=(2,S),结果为-1:

在这里插入图片描述

朴素贝叶斯将实例分到后验概率最大的类中,这其实等价于经验风险最小化,证明如下:

  • 假设选择0-1损失函数:

在这里插入图片描述

  • 假设输出结果为y,令输出结果不为y的概率尽可能小:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值