朴素贝叶斯模型、推导、拉普拉斯平滑

参考书籍:《统计学习方法》,cs229讲义,其他。

1、朴素贝叶斯

1.1、朴素贝叶斯模型

朴素贝叶斯:基于贝叶斯定理与特征条件独立假设的分类方法。注意两个点,一个是贝叶斯定理,另一个是条件独立假设,后面会用到,该方法用来进行分类,即:给定输入变量x,输出类别标记y

先定义好变量表示。记输入变量表示为 X X X为m维向量的集合,输出空间为类标记集合表示为 Y = { c 1 , c 2 , . . . , c K } Y=\{c_1,c_2,...,c_K\} Y={c1,c2,...,cK},训练集为 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } \{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} {(x1,y1),(x2,y2),...,(xn,yn)},特征向量 x i x_i xi是m维的(m个特征)向量表示为 x i = ( x i 1 , x i 2 , . . . , x i m ) T x_i=(x_i^1,x_i^2,...,x_i^m)^T xi=(xi1,xi2,...,xim)T x i j x_i^j xij表示第 i i i个输入变量的第 j j j个特征。

根据贝叶斯公式有: P ( Y = c k ∣ X = x ) = P ( X = x , Y = c k ) P ( X = x ) = P ( X = x ∣ Y = c k ) P ( Y = c k ) P ( X = x ) P(Y=c_k|X=x)=\frac{P(X=x,Y= c_k)}{P(X=x)}=\frac{P(X=x|Y=c_k)P(Y=c_k)}{P(X=x)} P(Y=ckX=x)=P(X=x)P(X=x,Y=ck)=P(X=x)P(X=xY=ck)P(Y=ck) 对于给定的 x x x我们可以求出后验概率 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ckX=x),然后将后验概率最大的类作为 x x x类的输出。

看分子中的条件概率, P ( X = x ∣ Y = c k ) = P ( X 1 = x 1 , X 2 = x 2 , . . . , X m = x m ∣ Y = c k ) P(X=x|Y=c_k)=P(X^1=x^1,X^2=x^2,...,X^m=x^m|Y=c_k) P(X=xY=ck)=P(X1=x1,X2=x2,...,Xm=xmY=ck),如果每个特征有 S j S_j Sj个取值那么参数个数为 K ∏ i = 1 m S j K\prod\limits_{i=1}^{m}S_j Ki=1mSj,这种数量级的参数是不可行的。

而贝叶斯给了这么个强的条件独立的假设,注意不是独立假设,公式如下:

P ( X = x ∣ Y = c k ) = P ( X 1 = x 1 , X 2 = x 2 , . . . , X m = x m ∣ Y = c k ) = ∏ j = 1 m P ( X j = x j ∣ Y = c k ) P(X=x|Y=c_k)=P(X^1=x^1,X^2=x^2,...,X^m=x^m|Y=c_k)=\prod\limits_{j=1}^{m}P(X^j=x^j|Y=c_k) P(X=xY=ck)=P(X1=x1,X2=x2,...,Xm=xmY=ck)=j=1mP(Xj=xjY=ck)

所以现在我们有

P ( Y = c k ∣ X = x ) = P ( X = x , Y = c k ) P ( X = x ) = P ( X = x ∣ Y = c k ) P ( Y = c k ) P ( X = x ) = P ( Y = c k ) ∏ j = 1 m P ( X j = x j ∣ Y = c k ) P ( X = x ) P(Y=c_k|X=x)=\frac{P(X=x,Y= c_k)}{P(X=x)}=\frac{P(X=x|Y=c_k)P(Y=c_k)}{P(X=x)}=\frac{P(Y=c_k)\prod\limits_{j=1}^{m}P(X^j=x^j|Y=c_k)}{P(X=x)} P(Y=ckX=x)=P(X=x)P(X=x,Y=ck)=P(X=x)P(X=xY=ck)P(Y=ck)=P(X=x)P(Y=ck)j=1mP(Xj=xjY=ck)

对于输入 X = x X=x X=x将得到的最大的 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ckX=x)对应的类(即 c k c_k ck)作为输出。而分母对于输入的 c k c_k ck都是一样的,所以我们得到。

y = arg ⁡ max ⁡ c k P ( Y = c k ) ∏ j = 1 m P ( X j = x j ∣ Y = c k ) y=\arg \max \limits_{c_k} P(Y=c_k)\prod\limits_{j=1}^{m}P(X^j=x^j|Y=c_k) y=argckmaxP(Y=ck)j=1mP(Xj=xjY=ck)
下面进行模型的学习,即参数估计

1.2、朴素贝叶斯的参数估计

对于这种给定模型,数据,求参数的我们仍然使用极大似然估计。在这里也就是对 P ( Y = c k ) P(Y=c_k) P(Y=ck) P ( X j = x j ∣ Y = c k ) P(X^j=x^j|Y=c_k) P(Xj=xjY=ck)进行参数估计。

先对 P ( Y = c k ) P(Y=c_k) P(Y=ck)进行参数估计,首先容易得到 P ( Y = c k ) = ∑ k = 1 K P ( Y = c k ) I ( y i = c k ) P(Y=c_k)=\sum\limits_{k=1}^{K}P(Y=c_k)^{I(y_i=c_k)} P(Y=ck)=k=1KP(Y=ck)I(yi=ck),其中 I ( y i = c k ) I(y_i=c_k) I(yi=ck)是指示函数 I ( t r u e ) = 1 , I ( f a l s e ) = 0 I(true)=1,I(false)=0 I(true)=1,I(false)=0。写出似然函数并取对数:

l = l n L = l n ∏ i = 1 n ( P ( Y = c k ) ∏ j = 1 m P ( X j = x i j ∣ Y = c k ) ) = ∑ i = 1 n ∑ k = 1 K I ( y i = c k ) l n P ( Y = c k ) + ∑ i = 1 n ∑ j = 1 m l n P ( X j = x i j ∣ Y = c k ) l=lnL = ln \prod\limits_{i=1}^{n}(P(Y=c_k)\prod\limits_{j=1}^{m}P(X^j=x_i^j|Y=c_k))\\=\sum\limits_{i=1}^{n}\sum\limits_{k=1}^{K}I(y_i=c_k)ln^{P(Y=c_k)} + \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}ln^{P(X^j=x_i^j|Y=c_k)} l=lnL=lni=1n(P(Y=ck)j=1mP(Xj=xijY=ck))=i=1nk=1KI(yi=ck)lnP(Y=ck)+i=1nj=1mlnP(Xj=xijY=ck)

现在要求 l l l关于参数 P ( Y = c k ) P(Y=c_k) P(Y=ck)最大值,就不要去直接求导了,这里参数还有个限制 ∑ k = 1 K P ( Y = c k ) = 1 \sum\limits _{k=1}^{K}P(Y=c_k)=1 k=1KP(Y=ck)=1。先看下百度百科的拉格朗日法的使用

在这里插入图片描述

现在我们加上限制条件来构造拉格朗日函数,这里我们记 P ( Y = c k ) = θ k P(Y=c_k)=\theta^k P(Y=ck)=θk
这样看着更像参数

f = ∑ i = 1 n ∑ k = 1 K I ( y i = c k ) l n θ k + ∑ i = 1 n ∑ j = 1 m l n P ( X j = x j ∣ Y = c k ) + λ ( ∑ k = 1 K P ( Y = c k ) − 1 ) f=\sum\limits_{i=1}^{n}\sum\limits_{k=1}^{K}I(y_i=c_k)ln^{\theta^k} + \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}ln^{P(X^j=x^j|Y=c_k)} + \lambda(\sum\limits _{k=1}^{K}P(Y=c_k)-1) f=i=1nk=1KI(yi=ck)lnθk+i=1nj=1mlnP(Xj=xjY=ck)+λ(k=1KP(Y=ck)1)
分别求导如下:
f θ k ′ = ∑ i = 1 n I ( y i = c k ) θ k + λ = 0 = > θ k = − ∑ i = 1 n I ( y i = c k ) λ f^{'}_{\theta^k}=\frac{\sum\limits_{i=1}^{n}I(y_i=c_k)}{\theta^k}+\lambda=0 =>\theta^k=-\frac{\sum\limits_{i=1}^{n}I(y_i=c_k)}{\lambda} fθk=θki=1nI(yi=ck)+λ=0=>θk=λi=1nI(yi=ck)两把对k求和得到 ∑ k = 1 K θ k = − n λ \sum\limits _{k=1}^{K}\theta^k=-\frac{n}{\lambda} k=1Kθk=λn
f λ ′ = ∑ k = 1 K θ k − 1 = 0 = > ∑ k = 1 K θ k = 1 f^{'}_{\lambda}=\sum\limits _{k=1}^{K}\theta^k-1=0=>\sum\limits _{k=1}^{K}\theta^k=1 fλ=k=1Kθk1=0=>k=1Kθk=1所以 − n λ = 1 = > λ = − n -\frac{n}{\lambda}=1 => \lambda=-n λn=1=>λ=n

所以 θ k = P ( Y = c k ) = − ∑ i = 1 n I ( y i = c k ) λ = > θ k = ∑ i = 1 n I ( y i = c k )   n \theta^k=P(Y=c_k)=-\frac{\sum\limits_{i=1}^{n}I(y_i=c_k)}{\lambda}=>\theta^k=\frac{\sum\limits_{i=1}^{n}I(y_i=c_k)}{\ n} θk=P(Y=ck)=λi=1nI(yi=ck)=>θk= ni=1nI(yi=ck)

而对 P ( X j = x j ∣ Y = c k ) P(X^j=x^j|Y=c_k) P(Xj=xjY=ck)进行估计也得先做点小变换,设第 j j j个特征 x j x^{j} xj可能取值的集合为 { a j 1 , a j 2 , . . . , a j S j } \{a_{j1},a_{j2},...,a_{jS_j}\} {aj1,aj2,...,ajSj}, a j l a_{jl} ajl是第 j j j个特征可能取的第 l l l个值,那么有如下的变换:
P ( X j = x j ∣ Y = c k ) = ∑ k = 1 K P ( X j = x j ∣ Y = c k ) I ( Y = c k ) = ∑ k = 1 K ∑ l = 1 S l P ( X j = a j l ∣ Y = c k ) I ( X j = a j l , Y = c k ) P(X^j=x^j|Y=c_k)=\sum\limits_{k=1}^{K}P(X^j=x^j|Y=c_k)^{I(Y=c_k)}=\sum\limits_{k=1}^{K}\sum\limits_{l=1}^{S_l}P(X^j=a_{jl}|Y=c_k)^{I(X^j=a_{jl},Y=c_k)} P(Xj=xjY=ck)=k=1KP(Xj=xjY=ck)I(Y=ck)=k=1Kl=1SlP(Xj=ajlY=ck)I(Xj=ajl,Y=ck),然后再带入使用拉格朗日去求。

最后的结果是 P ( X j = a j l ∣ 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 ) P(X^j=a_{jl}|Y=c_k)=\frac{\sum\limits_{i=1}^{n}I(x_i^j=a_{jl},y_i=c_k)}{\sum\limits_{i=1}^{n}I(y_i=c_k)} P(Xj=ajlY=ck)=i=1nI(yi=ck)i=1nI(xij=ajl,yi=ck)

2.3、拉普拉斯平滑

用极大似然估计学得的朴素贝叶斯模型,可能会出现个问题,那就是出现$ P ( X j = a j l ∣ Y = c k ) = 0 P(X^j=a_{jl}|Y=c_k)=0 P(Xj=ajlY=ck)=0然后导致 P ( Y = c k ∣ X = x ) = 0 P(Y=c_k|X=x)=0 P(Y=ckX=x)=0,举个例子来说,将朴素贝叶斯分类用在垃圾邮件过滤。 X X X表示为各个单词组成的向量, Y = 0 , 1 Y={0,1} Y=0,1,假设0表示垃圾邮件。然后我们有X(邮件),预测它是不是垃圾邮件,一旦X中出现了新词那么结果就为0当做垃圾邮件了,显然不合理。解决办法是使用贝叶斯估计,结果中加了个参数

P ( X j = a j l ∣ 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(X^j=a_{jl}|Y=c_k)=\frac{\sum\limits_{i=1}^{n}I(x_i^j=a_{jl},y_i=c_k)+\lambda}{\sum\limits_{i=1}^{n}I(y_i=c_k)+S_j\lambda} P(Xj=ajlY=ck)=i=1nI(yi=ck)+Sjλi=1nI(xij=ajl,yi=ck)+λ λ = 0 \lambda=0 λ=0的时候就是极大似然估计了,而当 λ = 1 \lambda=1 λ=1的时候称为拉普拉斯平滑。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值