1. 朴素贝叶斯的理论基础
朴素贝叶斯算法是基于贝叶斯定理与特征条件独立假设的分类方法。
1.1 贝叶斯定理
先看什么是条件概率。
P
(
A
∣
B
)
P(A|B)
P(A∣B)表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式为:
P
(
A
∣
B
)
=
P
(
A
B
)
P
(
B
)
P
(
A
∣
B
)
=
P
(
A
B
)
P
(
B
)
P(A|B)=P(AB)P(B)P(A|B)=P(AB)P(B)
P(A∣B)=P(AB)P(B)P(A∣B)=P(AB)P(B)
贝叶斯定理便是基于条件概率,通过
P
(
A
∣
B
)
来
求
P
(
B
∣
A
)
P(A|B)来求P(B|A)
P(A∣B)来求P(B∣A):
P
(
B
∣
A
)
=
P
(
A
∣
B
)
P
(
B
)
P
(
A
)
P
(
B
∣
A
)
=
P
(
A
∣
B
)
P
(
B
)
P
(
A
)
P(B|A)=P(A|B)P(B)P(A)P(B|A)=P(A|B)P(B)P(A)
P(B∣A)=P(A∣B)P(B)P(A)P(B∣A)=P(A∣B)P(B)P(A)
顺便提一下,上式中的分母P(A),可以根据全概率公式分解为:
P ( A ) = ∑ i = 1 n P ( B i ) P ( A ∣ B i ) P(A)=\sum_{i=1}^{n}P(B_i)P(A|B_i) P(A)=∑i=1nP(Bi)P(A∣Bi)
1.2 特征条件独立假设
这一部分开始朴素贝叶斯的理论推导,从中你会深刻地理解什么是特征条件独立假设。
给定训练数据集(X,Y),其中每个样本x都包括n维特征,即x=(x1,x2,x3,…,xn)x=(x1,x2,x3,…,xn),类标记集合含有k种类别,即y=(y1,y2,…,yk)y=(y1,y2,…,yk)。
如果现在来了一个新样本x,我们要怎么判断它的类别?从概率的角度来看,这个问题就是给定x,它属于哪个类别的概率最大。那么问题就转化为求解P(y1|x),P(y2|x),…,P(yk|x)P(y1|x),P(y2|x),…,P(yk|x)中最大的那个,即求后验概率最大的输出:argmaxykP(yk|x)argmaxykP(yk|x)
那P(yk|x)P(yk|x)怎么求解?答案就是贝叶斯定理:
P
(
y
k
∣
x
)
=
P
(
x
∣
y
k
)
P
(
y
k
)
P
(
x
)
P
(
y
k
∣
x
)
=
P
(
x
∣
y
k
)
P
(
y
k
)
P
(
x
)
P(yk|x)=P(x|yk)P(yk)P(x)P(yk|x)=P(x|yk)P(yk)P(x)
P(yk∣x)=P(x∣yk)P(yk)P(x)P(yk∣x)=P(x∣yk)P(yk)P(x)
根据全概率公式,可以进一步地分解上式中的分母:
P ( y k ∣ x ) = P ( x ∣ y k ) P ( y k ) ∑ k P ( x ∣ y k ) P ( y k ) P ( y k ∣ x ) = P ( x ∣ y k ) P ( y k ) ∑ k P ( x ∣ y k ) P ( y k ) P(yk|x)=\frac{P(x|yk)P(yk)}{\sum_{k}P(x|yk)P(yk)P(yk|x)}=P(x|yk)P(yk)\sum_{k}P(x|yk)P(yk) P(yk∣x)=∑kP(x∣yk)P(yk)P(yk∣x)P(x∣yk)P(yk)=P(x∣yk)P(yk)∑kP(x∣yk)P(yk) 【公式1】
先不管分母,分子中的P(yk)P(yk)是先验概率,根据训练集就可以简单地计算出来。
而条件概率P(x|yk)=P(x1,x2,…,xn|yk)P(x|yk)=P(x1,x2,…,xn|yk),它的参数规模是指数数量级别的,假设第i维特征xixi可取值的个数有SiSi个,类别取值个数为k个,那么参数个数为:k∏ni=1Sik∏i=1nSi
这显然不可行。针对这个问题,朴素贝叶斯算法对条件概率分布作出了独立性的假设,通俗地讲就是说假设各个维度的特征x1,x2,…,xnx1,x2,…,xn互相独立,在这个假设的前提上,条件概率可以转化为:
P ( x ∣ y k ) = P ( x 1 , x 2 , . . . , x n ∣ y k ) = ∏ n i = 1 P ( x i ∣ y k ) P ( x ∣ y k ) = P ( x 1 , x 2 , . . . , x n ∣ y k ) = ∏ i = 1 n P ( x i ∣ y k ) P(x|yk)=P(x1,x2,...,xn|yk)=∏ni=1P(xi|yk)P(x|yk)=P(x1,x2,...,xn|yk)=∏i=1nP(xi|yk) P(x∣yk)=P(x1,x2,...,xn∣yk)=∏ni=1P(xi∣yk)P(x∣yk)=P(x1,x2,...,xn∣yk)=∏i=1nP(xi∣yk) 【公式2】
这样,参数规模就降到
∑
i
=
1
n
S
i
k
\sum_{i=1}^{n}Sik
∑i=1nSik
以上就是针对条件概率所作出的特征条件独立性假设,至此,先验概率P(yk)P(yk)和条件概率P(x|yk)P(x|yk)的求解问题就都解决了,那么我们是不是可以求解我们所要的后验概率P(yk|x)P(yk|x)了?