介绍
朴素贝叶斯法是一种经典的生成模型。所谓生成模型,就是通过学习输入数据和输出数据的联合概率分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y)来求得后验概率
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)。再具体一点就是利用训练数据来学习
P
(
Y
)
P(Y)
P(Y)和
P
(
X
∣
Y
)
P(X|Y)
P(X∣Y)的估计,然后得到联合概率分布(公式1):
P
(
X
,
Y
)
=
P
(
Y
)
P
(
X
∣
Y
)
P(X,Y) = P(Y)P(X|Y)
P(X,Y)=P(Y)P(X∣Y).
以上公式的各部分的含义分别为:
P
(
Y
)
P(Y)
P(Y)是类先验概率,P(X|Y)是样本
X
X
X相对于类别
Y
Y
Y的类条件概率,或者叫似然。因此,如果我们能求得类先验概率分布和类条件概率分布也就可以确定联合概率分布。但是,对于条件概率分布来讲,它涉及
X
\mathbf X
X所有属性的联合概率,加入
X
\mathbf X
X有
d
d
d和属性,每个属性取值有2种,那么一共就有
2
d
2^d
2d中取值。这种指数级别的参数估计在实际是不可行的。
为此,朴素贝叶斯的一个核心思想就是条件独立性假设:即用于分类的的特征在类确定的条件下都是条件独立的,公式表示为(公式2):
P
(
X
=
x
∣
Y
=
c
k
)
=
∏
j
=
1
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P(\mathbf X=\mathbf x | Y=c_{k}) = \prod_{j=1} P(\mathbf X^{(j)} = \mathbf x^{(j)} |Y=c_{k})
P(X=x∣Y=ck)=j=1∏P(X(j)=x(j)∣Y=ck)
朴素贝叶斯进行分类时,会计算出样本是每一个类别的概率,概率最大的那个类别即是该样本的类别。也就是求后验概率分布
P
(
Y
=
c
k
∣
X
=
x
)
P(Y=c_{k}|\mathbf X=\mathbf x)
P(Y=ck∣X=x),可以通过贝叶斯定理求得(公式3):
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
Y
=
c
k
,
X
=
x
)
P
(
X
=
x
)
=
P
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
P
(
X
=
x
)
P(Y=c_{k}|\mathbf X=\mathbf x) = \frac{P(Y=c_{k},\mathbf X=\mathbf x) }{P(\mathbf X=\mathbf x) }=\frac{P(\mathbf X=\mathbf x|Y=c_{k})P(Y=c_{k}) }{P(\mathbf X=\mathbf x) }
P(Y=ck∣X=x)=P(X=x)P(Y=ck,X=x)=P(X=x)P(X=x∣Y=ck)P(Y=ck)
P
(
X
=
x
)
P(\mathbf X=\mathbf x)
P(X=x)可以改写成
∑
k
P
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
\sum_{k} P(\mathbf X=\mathbf x|Y=c_{k})P(Y=c_{k})
∑kP(X=x∣Y=ck)P(Y=ck)。将公式2代入公式3,有(公式5)
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
Y
=
c
k
)
∏
j
=
1
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∑
k
P
(
Y
=
c
k
)
∏
j
=
1
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P(Y=c_{k}|\mathbf X=\mathbf x) =\frac{P(Y=c_{k})\prod_{j=1} P(\mathbf X^{(j)} = \mathbf x^{(j)} |Y=c_{k})}{\sum_{k}P(Y=c_{k})\prod_{j=1} P(\mathbf X^{(j)} = \mathbf x^{(j)} |Y=c_{k})}
P(Y=ck∣X=x)=∑kP(Y=ck)∏j=1P(X(j)=x(j)∣Y=ck)P(Y=ck)∏j=1P(X(j)=x(j)∣Y=ck)
至此,就比较明朗了,公式分子部分表示当前样本
x
\mathbf x
x是
c
k
c_{k}
ck类的概率,分母表示样本是每一个类别的概率之和。因此,分子部分最大的情况下的类别就是当前样本的类别,即(公式6):
y
=
f
(
x
)
=
a
r
g
m
a
x
c
k
P
(
Y
=
c
k
)
∏
j
=
1
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y=f(x)=argmax_{c_{k}} P(Y=c_{k})\prod_{j=1} P(\mathbf X^{(j)} = \mathbf x^{(j)} |Y=c_{k})
y=f(x)=argmaxckP(Y=ck)j=1∏P(X(j)=x(j)∣Y=ck)
参数估计
得到了目标函数后,我们即需要进行参数估计,即学习 P ( Y = c k ) P(Y=c_{k}) P(Y=ck)和 P ( X ( j ) = x ( j ) ∣ Y = c k ) P(\mathbf X^{(j)} = \mathbf x^{(j)} |Y=c_{k}) P(X(j)=x(j)∣Y=ck)。下面介绍两种方法。
极大似然估计
用极大似然估计去求上述两种参数都是通过频率来求,比如求
P
(
Y
=
c
k
)
P(Y=c_{k})
P(Y=ck),那么只需(公式7):
P
(
Y
=
c
k
)
=
∑
i
=
1
I
(
y
i
=
c
k
)
N
P(Y=c_{k}) = \frac{\sum_{i=1}I(y_{i}=c_{k})}{N}
P(Y=ck)=N∑i=1I(yi=ck)
其中
I
(
.
)
I(.)
I(.)为指示函数。类似的,有(公式8):
P
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
=
∑
i
=
1
I
(
x
i
(
j
)
=
a
j
l
,
y
i
=
c
k
)
∑
i
=
1
I
(
y
i
=
c
k
)
P(\mathbf X^{(j)} = a_{jl} |Y=c_{k}) = \frac{\sum_{i=1}I(\mathbf x_{i}^{(j)}=a_{jl},y_{i}=c_{k})}{\sum_{i=1}I(y_{i}=c_{k})}
P(X(j)=ajl∣Y=ck)=∑i=1I(yi=ck)∑i=1I(xi(j)=ajl,yi=ck)
其中
a
j
l
a_{jl}
ajl表示样本每一个属性的每一个取值,说白了就是上式就是求独立属性取值的概率。求得以上所有参数之后就可以对测试样本进行预测,概率最大对应的类别即为预测测试样本的类别。
贝叶斯估计
极大似然估计有一个很严重的弊端就是测试样本中某个属性的某个取值概率为0,那么这样就会对后续概率计算产生偏差,因此这里采用拉普拉斯平滑来规避这样的问题:
P
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
=
∑
i
=
1
I
(
x
i
(
j
)
=
a
j
l
,
y
i
=
c
k
)
+
λ
∑
i
=
1
I
(
y
i
=
c
k
)
+
S
j
λ
P(\mathbf X^{(j)} = a_{jl} |Y=c_{k}) = \frac{\sum_{i=1}I(\mathbf x_{i}^{(j)}=a_{jl},y_{i}=c_{k})+\lambda}{\sum_{i=1}I(y_{i}=c_{k})+S_{j}\lambda}
P(X(j)=ajl∣Y=ck)=∑i=1I(yi=ck)+Sjλ∑i=1I(xi(j)=ajl,yi=ck)+λ
其中
λ
>
=
0
\lambda>=0
λ>=0,且当
λ
=
0
\lambda=0
λ=0时为极大似然估计,一般取
λ
=
1
\lambda=1
λ=1;
S
j
S_{j}
Sj表示第j个属性可能取值数。类似的,先验概率分布修正为:
P
(
Y
=
c
k
)
=
∑
i
=
1
I
(
y
i
=
c
k
)
+
λ
N
+
K
λ
P(Y=c_{k}) = \frac{\sum_{i=1}I(y_{i}=c_{k})+\lambda}{N+K\lambda}
P(Y=ck)=N+Kλ∑i=1I(yi=ck)+λ
其中K为类别的个数。
Reference
- 机器学习_周志华
- 统计学习方法_李航