朴素贝叶斯算法

引言

bayes在统计学上是一个非常重要的概念,直接导致了一个流派的诞生,本章我们首先回顾一下bayes公式,以及其在统计学上的一些概念,然后将其引入到机器学习中,引出朴素贝叶斯算法。朴素贝叶斯算法在垃圾邮件过滤等问题上应用广泛,是一个很简单且很实用的算法。

Bayes定理

在数学上,我们用贝叶斯定理表示随机事件的条件概率,即 P(A|B) P ( A | B ) 表示事件B发生的情况下A发生的概率。

通过下图,我们可以得到下面的公式

P(A|B)P(B)=P(B|A)P(A) P ( A | B ) P ( B ) = P ( B | A ) P ( A )

这里写图片描述

这个简单的公式就是bayes公式。

将上面的公式做一下变化,可以得到

P(Ai|B)=P(B|Ai)P(Ai)ni=1P(B|Ai)P(Ai) P ( A i | B ) = P ( B | A i ) P ( A i ) ∑ i = 1 n P ( B | A i ) P ( A i )

其中 P(Ai) P ( A i ) 我们称之为先验概率, P(Ai|B) P ( A i | B ) 我们称之为 给定条件B下的 Ai A i 的后验概率。

这个公式就有意义了,我们就将后验概率和先验概率以及条件概率结合到了一起了。

那么这个公式有什么用呢?我们继续向下看。

朴素贝叶斯

所谓的朴素贝叶斯就是指满足了两个基本条件假设的算法:

1) 贝叶斯定理
2) 特征条件独立

为什么要强调特征独立假设呢?其实这个是朴素贝叶斯和贝叶斯的本质区别,我们继续向下看。

假设给定训练数据 {(x1,y1),(x2,y2),...,(xN,yN)} { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } 其中 x x 表示特征, y y 为标签,假设取值为 {c1,c2,...,cK} { c 1 , c 2 , . . . , c K } ,那么我们希望得到下面的模型,即给定特征 x x ,求标签 y y ,即最大化概率 P(Y=ck|Xn=(x1,x2,...,xn)) P ( Y = c k | X n = ( x 1 , x 2 , . . . , x n ) )

根据Bayes定理,有:

P(Y=ck|X=(x1,x2,...,xn))=P(X=(x1,x2,...,xn)|Y=ck)P(Y=ck)P(X=(x1,x2,...,xn))=P(X=(x1,x2,...,xn)|Y=ck)P(Y=ck)kP(X=(x1,x2,...,xn)|Y=ck)P(Y=ck) P ( Y = c k | X = ( x 1 , x 2 , . . . , x n ) ) = P ( X = ( x 1 , x 2 , . . . , x n ) | Y = c k ) P ( Y = c k ) P ( X = ( x 1 , x 2 , . . . , x n ) ) = P ( X = ( x 1 , x 2 , . . . , x n ) | Y = c k ) P ( Y = c k ) ∑ k P ( X = ( x 1 , x 2 , . . . , x n ) | Y = c k ) P ( Y = c k )

而根据之前的特征独立假设,有:

P(X=(x1,x2,...,xn)|Y=ck)=nj=1P(xj|Y=ck) P ( X = ( x 1 , x 2 , . . . , x n ) | Y = c k ) = ∏ j = 1 n P ( x j | Y = c k )

所以有:

P(Y=ck|X=(x1,x2,...,xn))=P(Y=ck)nj=1P(xj|Y=ck)kP(Y=ck)nj=1P(xj|Y=ck) P ( Y = c k | X = ( x 1 , x 2 , . . . , x n ) ) = P ( Y = c k ) ∏ j = 1 n P ( x j | Y = c k ) ∑ k P ( Y = c k ) ∏ j = 1 n P ( x j | Y = c k )

因为分母相等,所以实际上 max(P(Y=ck|X=(x1,x2,...,xn))) m a x ( P ( Y = c k | X = ( x 1 , x 2 , . . . , x n ) ) ) 取决于分子 P(Y=ck)nj=1P(xj|Y=ck) P ( Y = c k ) ∏ j = 1 n P ( x j | Y = c k ) ,因此我们只要计算出先验概率 P(Y=ck) P ( Y = c k ) 以及条件概率的累积 nj=1P(xj|Y=ck) ∏ j = 1 n P ( x j | Y = c k ) ,就可以算出来特征属于每一个类别的概率大小顺序,那么概率最大对应的标签就是特征的对应的类别。

因此问题转化为了最大化下面的公式:

y=argmaxck(P(Y=ck)nj=1P(xj|Y=ck)) y = a r g m a x c k ( P ( Y = c k ) ∏ j = 1 n P ( x j | Y = c k ) )

那么问题就转化为了需要估计参数 P(Y=ck) P ( Y = c k ) P(xj|Y=ck) P ( x j | Y = c k )

极大似然估计

这里我们用极大似然估计来计算上面的两个概率,这两个概率就是朴素贝叶斯模型中的参数

P(Y=ck)=Ni=1I(yi=ck)N,k=1,2,...,K P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N , k = 1 , 2 , . . . , K

假设特征 xj x j 的取值范围为 {aj1,aj2,...ajSj} { a j 1 , a j 2 , . . . a j S j } ,则有:

P(xj=ajl|Y=ck)=Ni=1I(xj=ajl,yi=ck)Ni=1I(yi=ck) P ( x j = a j l | Y = c k ) = ∑ i = 1 N I ( x j = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k )

bayes估计

上面我们用了极大似然估计,然而极大似然估计可能会出现概率值为0的情况,这个影响后验概率的计算,因此引入贝叶斯估计,即条件概率改为如下的公式:

P(xj=ajl|Y=ck)=Ni=1I(xj=ajl,yi=ck)+λNi=1I(yi=ck)+Sjλ P ( x j = a j l | Y = c k ) = ∑ i = 1 N I ( x j = a j l , y i = c k ) + λ ∑ i = 1 N I ( y i = c k ) + S j λ

先验概率修改为:

P(Y=ck)=Ni=1I(yi=ck)+λN+Sjλ,k=1,2,...,K P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) + λ N + S j λ , k = 1 , 2 , . . . , K

一般情况下可以取 λ=1 λ = 1

朴素贝叶斯算法

有了上面的推导,我们可以得到朴素贝叶斯的算法,如下所示:

1) 根据训练数据求取先验概率和条件概率

P(Y=ck)=Ni=1I(yi=ck)N,k=1,2,...,K P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N , k = 1 , 2 , . . . , K

P(xj=ajl|Y=ck)=Ni=1I(xj=ajl,yi=ck)Ni=1I(yi=ck) P ( x j = a j l | Y = c k ) = ∑ i = 1 N I ( x j = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k )

(这里也可以采用贝叶斯估计的公式)

2) 根据给定特征,计算

P(Y=ck)nj=1P(xj|Y=ck) P ( Y = c k ) ∏ j = 1 n P ( x j | Y = c k )

3) 确定特征的类别

y=argmaxck(P(Y=ck)nj=1P(xj|Y=ck)) y = a r g m a x c k ( P ( Y = c k ) ∏ j = 1 n P ( x j | Y = c k ) )

实例分析

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值