朴素贝叶斯法的学习与分类
《统计学习方法》李航第四章
1、概述
书上对朴素贝叶斯的描述如下:
朴素贝叶斯法时基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。
其实目的就是要得到最大的 P ( Y ∣ X ) P(Y|X) P(Y∣X)。根据先验概率 P ( X ) P(X) P(X)和求出的输出Y和输入特征X之间的联合概率分布 P ( X , Y ) P(X,Y) P(X,Y),进而计算出 P ( Y ∣ X ) = P ( X , Y ) P ( X ) P(Y|X)=\frac{P(X,Y)}{P(X)} P(Y∣X)=P(X)P(X,Y).是生成模型。
2、先验概率、后验概率和条件概率
书中描述提到了后验概率,要先弄清楚什么是后验概率。
先验概率:指根据以往的经验和分析,在实验或采样前就可以得到的概率。
后验概率:指某件事已经发生,计算这件事发生的原因时由某个因素引起的概率。
书中关于朴素贝叶斯的数学描述如下:
这里提到了条件概率,
条件概率:在给定事件B发生的条件下,事件A发生的概率,记为
P
(
A
∣
B
)
P(A|B)
P(A∣B),有
P
(
A
∣
B
)
=
P
(
A
B
)
P
(
B
)
P(A|B)= \frac{P(AB)}{P(B)}
P(A∣B)=P(B)P(AB)。
查看书中给出的条件概率的计算公式,发现可以按照刚刚的后验概率来理解,即
P
(
X
=
x
∣
Y
=
c
k
)
P(X=x | Y=c_k)
P(X=x∣Y=ck)其实求的就是:
Y
=
c
k
Y=c_k
Y=ck这件事已经发生,计算这件事发生是由
X
=
x
X=x
X=x引起的概率,记为
P
(
X
=
x
∣
Y
=
c
k
)
P(X=x | Y=c_k)
P(X=x∣Y=ck).但是书中为什么说是条件概率而不是后验概率呢?
查询可知,其实后验概率就是一种条件概率,但是与其它条件概率的不同之处在于,它限定了目标事件为隐变量取值,而其中的条件为观测结果。一般的条件概率,条件和事件都可以是任意的。也就是说,后验概率其实是限制了关注点的条件概率,重点关注目标事件,是一个执果索因的过程。
3、条件独立性假设
朴素贝叶斯法对条件概率分布作了条件独立性假设,由于这是一个较强的假设,朴素贝叶斯法也由此得名,具体的,条件独立性假设是:
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
(
1
)
=
x
(
1
)
,
.
.
.
,
X
(
n
)
=
x
(
n
)
∣
Y
=
c
k
)
=
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P(X=x| Y=c_k)=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)} | Y=c_k) \\ =\prod \limits^n_{j=1}P(X^{(j)}=x^{(j)} | Y=c_k)
P(X=x∣Y=ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=ck)=j=1∏nP(X(j)=x(j)∣Y=ck)
条件独立假设等于是说用于分类的特征在类确定的条件下都是条件独立的。属于生成模型。
4、朴素贝叶斯分类器
朴素贝叶斯分类时,对给定的输入x,通过学习得到的模型计算后验概率分布
P
(
Y
=
c
k
∣
X
=
x
)
P(Y=c_k | X=x)
P(Y=ck∣X=x),将后验概率最大的类作为x的类输出。即:
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
∑
k
P
(
X
=
x
∣
Y
=
c
k
)
P
(
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(Y=c_k)}{\sum_kP(X=x|Y=c_k)P(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=ck∣X=x)=∑kP(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)P(Y=ck)=∑kP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)P(Y=ck)∏jP(X(j)=x(j)∣Y=ck)
因为求最大且对于所有
c
k
c_k
ck分母都是相同的,
所以:
y
=
a
r
g
max
c
k
P
(
Y
=
c
k
)
∏
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y=arg \max \limits_{c_k}P(Y=c_k) \prod_jP(X^{(j)}=x^{(j)}|Y=c_k)
y=argckmaxP(Y=ck)j∏P(X(j)=x(j)∣Y=ck)
5、算法流程
利用朴素贝叶斯分类器分类的大致流程可以理解为以下过程:
已知
假设分类的模型样本是
(
x
1
(
1
)
,
x
2
(
1
)
,
.
.
.
,
x
n
(
1
)
,
y
1
)
,
(
x
1
(
2
)
,
x
2
(
2
)
,
.
.
.
,
x
n
(
2
)
,
y
2
)
,
.
.
.
(
x
1
(
m
)
,
x
2
(
m
)
,
.
.
.
,
x
n
(
m
)
,
y
m
)
(x_1^{(1)},x_2^{(1)},...,x_n^{(1)},y_1),(x_1^{(2)},x_2^{(2)},...,x_n^{(2)},y_2),...(x_1^{(m)},x_2^{(m)},...,x_n^{(m)},y_m)
(x1(1),x2(1),...,xn(1),y1),(x1(2),x2(2),...,xn(2),y2),...(x1(m),x2(m),...,xn(m),ym)
即我们有m个样本,每个样本有n个特征,输出特征有K个类别,定义为
C
1
,
C
2
,
.
.
.
,
C
k
C_1,C_2,...,C_k
C1,C2,...,Ck.
中间推导
-
根据朴素贝叶斯模型的基本原理,要得出最大的 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ck∣X=x),就需要计算先验概率 P ( Y = c k ) P(Y=c_k) P(Y=ck)和联合概率分布 P ( X , Y = c k ) P(X,Y=c_k) P(X,Y=ck).
-
而从样本通过极大似然估计很容易得知先验概率 P ( Y = c k ) P(Y=c_k) P(Y=ck)和条件概率分布 P ( X = x ∣ Y = c k ) = P ( X 1 = x 1 , X 2 = x 2 , . . . , X n = x n ∣ Y = c k ) P(X=x|Y=c_k)=P(X_1=x1,X_2=x_2,...,X_n=x_n|Y=c_k) P(X=x∣Y=ck)=P(X1=x1,X2=x2,...,Xn=xn∣Y=ck):
先验概率 P ( Y = c k ) P(Y=c_k) P(Y=ck)的极大似然估计是:
P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N P(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)}{N} P(Y=ck)=N∑i=1NI(yi=ck)(其实就是 Y = c k Y=c_k Y=ck在训练集分类中出现的占比)
设第 j j j个特征 x ( j ) x^{(j)} x(j)可能取值的集合为 a j 1 , a j 2 , . . . , a j S j a_{j1},a_{j2},...,a_{jS_j} aj1,aj2,...,ajSj,条件概率 P ( X ( j ) = a j l ∣ Y = c k ) P(X^{(j)}=a_{jl}|Y=c_k) P(X(j)=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_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^NI(y_i=c_k)} P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=ajl,yi=ck) -
因此可以求得联合概率分布 P ( X , Y = c k ) = P ( Y = c k ) P ( X = x ∣ Y = c k ) = P ( Y = c k ) P ( X 1 = x 1 , X 2 = x 2 , . . . , X n = x n ∣ Y = c k ) = P ( Y = c k ) ∏ j = 1 n P ( X j = x j ∣ Y = c k ) P(X,Y=c_k)=P(Y=c_k)P(X=x|Y=c_k)\\=P(Y=c_k)P(X_1=x_1,X_2=x_2,...,X_n=x_n|Y=c_k)\\= P(Y=c_k)\prod_{j=1}^nP(X_j=x_j|Y=c_k) P(X,Y=ck)=P(Y=ck)P(X=x∣Y=ck)=P(Y=ck)P(X1=x1,X2=x2,...,Xn=xn∣Y=ck)=P(Y=ck)∏j=1nP(Xj=xj∣Y=ck).
结果
求出
y
=
a
r
g
max
c
k
P
(
Y
=
c
k
∣
X
=
x
)
=
a
r
g
max
c
k
P
(
X
,
Y
=
c
k
)
P
(
X
)
y=arg \max_{c_k} P(Y=c_k|X=x)=arg \max_{c_k} \frac{P(X,Y=c_k)}{P(X)}
y=argckmaxP(Y=ck∣X=x)=argckmaxP(X)P(X,Y=ck)
即
y
=
a
r
g
max
c
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
j
=
x
j
∣
Y
=
c
k
)
y=arg \max_{c_k}P(Y=c_k)\prod_{j=1}^nP(X_j=x_j|Y=c_k)
y=argckmaxP(Y=ck)j=1∏nP(Xj=xj∣Y=ck)结果最大的
k
k
k即为输入
X
X
X对应的类别
C
k
C_k
Ck.
训练实例:
6、贝叶斯和朴素贝叶斯
因为朴素贝叶斯的概率估计方法采用的是极大似然估计,极大似然估计可能会造成估计结果为0的情况,导致无法进行后续计算,所以引入贝叶斯估计方法。
7、注意
朴素贝叶斯使用的前提就是条件独立假设,即假设输入变量都是条件独立互不影响的,如果条件之间存在依存关系,则模型就变成了贝叶斯网络。