参考书籍:《统计学习方法》,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=ck∣X=x)=P(X=x)P(X=x,Y=ck)=P(X=x)P(X=x∣Y=ck)P(Y=ck) 对于给定的 x x x我们可以求出后验概率 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ck∣X=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=x∣Y=ck)=P(X1=x1,X2=x2,...,Xm=xm∣Y=ck),如果每个特征有 S j S_j Sj个取值那么参数个数为 K ∏ i = 1 m S j K\prod\limits_{i=1}^{m}S_j Ki=1∏mSj,这种数量级的参数是不可行的。
而贝叶斯给了这么个强的条件独立的假设,注意不是独立假设,公式如下:
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=x∣Y=ck)=P(X1=x1,X2=x2,...,Xm=xm∣Y=ck)=j=1∏mP(Xj=xj∣Y=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=ck∣X=x)=P(X=x)P(X=x,Y=ck)=P(X=x)P(X=x∣Y=ck)P(Y=ck)=P(X=x)P(Y=ck)j=1∏mP(Xj=xj∣Y=ck)
对于输入 X = x X=x X=x将得到的最大的 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ck∣X=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=1∏mP(Xj=xj∣Y=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=xj∣Y=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=1∑KP(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=1∏n(P(Y=ck)j=1∏mP(Xj=xij∣Y=ck))=i=1∑nk=1∑KI(yi=ck)lnP(Y=ck)+i=1∑nj=1∑mlnP(Xj=xij∣Y=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=1∑KP(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=1∑nk=1∑KI(yi=ck)lnθk+i=1∑nj=1∑mlnP(Xj=xj∣Y=ck)+λ(k=1∑KP(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=1∑nI(yi=ck)+λ=0=>θk=−λi=1∑nI(yi=ck)两把对k求和得到
∑
k
=
1
K
θ
k
=
−
n
λ
\sum\limits _{k=1}^{K}\theta^k=-\frac{n}{\lambda}
k=1∑Kθ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=1∑Kθk−1=0=>k=1∑Kθ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=1∑nI(yi=ck)=>θk= ni=1∑nI(yi=ck)
而对
P
(
X
j
=
x
j
∣
Y
=
c
k
)
P(X^j=x^j|Y=c_k)
P(Xj=xj∣Y=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=xj∣Y=ck)=k=1∑KP(Xj=xj∣Y=ck)I(Y=ck)=k=1∑Kl=1∑SlP(Xj=ajl∣Y=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=ajl∣Y=ck)=i=1∑nI(yi=ck)i=1∑nI(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=ajl∣Y=ck)=0然后导致 P ( Y = c k ∣ X = x ) = 0 P(Y=c_k|X=x)=0 P(Y=ck∣X=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=ajl∣Y=ck)=i=1∑nI(yi=ck)+Sjλi=1∑nI(xij=ajl,yi=ck)+λ 当 λ = 0 \lambda=0 λ=0的时候就是极大似然估计了,而当 λ = 1 \lambda=1 λ=1的时候称为拉普拉斯平滑。