概述
朴素贝叶斯法基于特征条件独立假设与贝叶斯定理。首先,基于特征条件独立假设,学习输入与输出的联合概率分布(生成模型);然后,根据学习到的概率模型,对给定输入利用贝叶斯定理求出后验概率最大的输出,作为该输入的类别。
模型
有如下假设:
- 输入空间 X ⊆ R n \mathcal{X}\subseteq\mathbf{R}^n X⊆Rn 为 n n n 维向量的集合,输出空间 Y = { c 1 , c 2 , ⋯   , c K } \mathcal{Y}=\{c_1,c_2,\cdots,c_K\} Y={c1,c2,⋯,cK} 为类标记的集合。
- 输入为特征向量 x ∈ X \bm{x}\in\mathcal{X} x∈X,输出为类标记 y ∈ Y y\in\mathcal{Y} y∈Y。
- X \bm{X} X是定义在输入空间 X \mathcal{X} X 上的随机向量, Y Y Y 是定义在输出空间 Y \mathcal{Y} Y 上的随机变量, P ( X , Y ) P(\bm{X},Y) P(X,Y) 为 X \bm{X} X 和 Y Y Y 的联合概率分布。
- 训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{(\bm{x}_1,y_1),(\bm{x}_2,y_2),\cdots,(\bm{x}_N,y_N)\} T={(x1,y1),(x2,y2),⋯,(xN,yN)} 由 P ( X , Y ) P(\bm{X},Y) P(X,Y) 独立同分布产生。
朴素贝叶斯法通过训练数据集 T T T 学习以下两个分布
- 先验概率分布:
P ( Y = c k ) P(Y=c_k) P(Y=ck) - 条件概率分布:
P ( X = x ∣ Y = c k ) = P ( X ( 1 ) = x ( 1 ) , ⋯   , X ( n ) = x ( n ) ∣ Y = c k ) P(\bm{X}=\bm{x} | Y=c_k) = P(X^{(1)}=x^{(1)},\cdots,X^{(n)}=x^{(n)}|Y=c_k) P(X=x∣Y=ck)=P(X(1)=x(1),⋯,X(n)=x(n)∣Y=ck)
其中, k = 1 , 2 , ⋯   , K k=1,2,\cdots,K k=1,2,⋯,K。根据上述两个分布即可确定联合概率分布 P ( X , Y ) P(\bm{X},Y) P(X,Y),故朴素贝叶斯法属于生成方法。
输出
Y
Y
Y 的先验概率可由样本频率直接得到。条件概率常通过参数估计的方式获得,然而,上述条件概率分布包含指数级数量的参数,估计非常困难。朴素贝叶斯法对条件概率分布作了条件独立性假设,即在类确定的条件下,用于分类的特征是独立的:
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
(
1
)
=
x
(
1
)
,
⋯
 
,
X
(
n
)
=
x
(
n
)
∣
Y
=
c
k
)
=
∏
i
=
1
n
P
(
X
(
i
)
=
x
(
i
)
∣
Y
=
c
k
)
\begin{aligned} P(\bm{X}=\bm{x}|Y=c_k) &= P(X^{(1)}=x^{(1)},\cdots,X^{(n)}=x^{(n)}|Y=c_k) \\ &=\prod_{i=1}^{n} P(X^{(i)}=x^{(i)} | Y=c_k) \end{aligned}
P(X=x∣Y=ck)=P(X(1)=x(1),⋯,X(n)=x(n)∣Y=ck)=i=1∏nP(X(i)=x(i)∣Y=ck)
条件独立性假设可简化学习算法,但也造成了分类准确率的降低。
预测时采用后验概率最大化准则:对于任意输入
x
\bm{x}
x,通过学习到的先验概率和条件概率计算后延概率
P
(
Y
=
c
k
∣
X
=
x
)
P(Y=c_k|\bm{X}=\bm{x})
P(Y=ck∣X=x),将后验概率最大的类作为输出。后验概率的计算采用贝叶斯定理:
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
∑
i
=
1
K
P
(
X
=
x
∣
Y
=
c
i
)
P
(
Y
=
c
i
)
P(Y=c_k|\bm{X}=\bm{x}) = \frac{P(\bm{X}=\bm{x}|Y=c_k)P(Y=c_k)}{\sum_{i=1}^{K}P(\bm{X}=\bm{x}|Y=c_i)P(Y=c_i)}
P(Y=ck∣X=x)=∑i=1KP(X=x∣Y=ci)P(Y=ci)P(X=x∣Y=ck)P(Y=ck)
由条件独立性假设:
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∑
i
=
1
K
P
(
Y
=
c
i
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
i
)
P(Y=c_k|\bm{X}=\bm{x}) = \frac{P(Y=c_k)\prod_{j=1}^{n} P(X^{(j)}=x^{(j)} | Y=c_k)}{\sum_{i=1}^{K}P(Y=c_i)\prod_{j=1}^{n} P(X^{(j)}=x^{(j)} | Y=c_i)}
P(Y=ck∣X=x)=∑i=1KP(Y=ci)∏j=1nP(X(j)=x(j)∣Y=ci)P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)
其中,
k
=
1
,
2
,
⋯
 
,
K
k=1,2,\cdots,K
k=1,2,⋯,K。朴素贝叶斯模型可表示为:
y
=
f
(
x
)
=
arg
max
c
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∑
i
=
1
K
P
(
Y
=
c
i
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
i
)
y=f(\bm{x})=\arg \max_{c_k} \frac{P(Y=c_k)\prod_{j=1}^{n} P(X^{(j)}=x^{(j)} | Y=c_k)}{\sum_{i=1}^{K}P(Y=c_i)\prod_{j=1}^{n} P(X^{(j)}=x^{(j)} | Y=c_i)}
y=f(x)=argckmax∑i=1KP(Y=ci)∏j=1nP(X(j)=x(j)∣Y=ci)P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)
上式的分母对所有
c
k
c_k
ck 是相同的,因此,模型亦可表示为:
y
=
f
(
x
)
=
arg
max
c
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y=f(\bm{x})=\arg \max_{c_k} P(Y=c_k)\prod_{j=1}^{n} P(X^{(j)}=x^{(j)} | Y=c_k)
y=f(x)=argckmaxP(Y=ck)j=1∏nP(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(X^{(j)}=x^{(j)}|Y=c_k) P(X(j)=x(j)∣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
,
k
=
1
,
2
,
⋯
 
,
K
P(Y=c_k) = \frac{\sum_{i=1}^{N} I(y_i=c_k)}{N},\quad k=1,2,\cdots,K
P(Y=ck)=N∑i=1NI(yi=ck),k=1,2,⋯,K
假设第
j
j
j 个特征
x
(
j
)
x^{(j)}
x(j) 的可能取值有
S
j
S_j
Sj 个,取值集合为
{
a
j
1
,
a
j
2
,
⋯
 
,
a
j
S
j
}
\{a_{j1},a_{j2},\cdots,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
(
l
)
=
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}^{N} I(x_{i}^{(l)}=a_{jl},y_i=c_k)}{\sum_{i=1}^{N}I(y_i=c_k)}
P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(l)=ajl,yi=ck)
其中,
j
∈
{
1
,
2
,
⋯
 
,
n
}
j\in\{1,2,\cdots,n\}
j∈{1,2,⋯,n},
l
∈
{
1
,
2
,
⋯
 
,
S
j
}
l\in\{1,2,\cdots,S_j\}
l∈{1,2,⋯,Sj},
k
∈
{
1
,
2
,
⋯
 
,
K
}
k\in\{1,2,\cdots,K\}
k∈{1,2,⋯,K}。
x
i
(
j
)
x_i^{(j)}
xi(j) 为第
i
i
i 个样本的第
j
j
j 个特征,
a
j
l
a_{jl}
ajl 为第
j
j
j 个特征可取的第
l
l
l 个值。
贝叶斯估计
对于待测实例
x
=
(
x
(
1
)
,
x
(
2
)
,
⋯
 
,
x
(
n
)
)
T
\bm{x}=(x^{(1)},x^{(2)},\cdots,x^{(n)})^{\rm T}
x=(x(1),x(2),⋯,x(n))T,若存在某个特征值
x
(
j
)
=
a
x^{(j)}=a
x(j)=a,使得
∑
i
=
1
N
I
(
x
i
(
j
)
=
a
,
y
=
c
k
)
=
0
\sum_{i=1}^{N}I(x_i^{(j)}=a,y=c_k)=0
i=1∑NI(xi(j)=a,y=ck)=0
即训练样本集中没有第
j
j
j 个特征为
a
a
a 且类别为
c
k
c_k
ck 的样本,则有
P
(
X
(
j
)
=
a
∣
Y
=
c
k
)
=
0
P(X^{(j)}=a|Y=c_k) = 0
P(X(j)=a∣Y=ck)=0
于是,
∏
j
=
1
n
P
(
X
(
j
)
=
a
∣
Y
=
c
k
)
=
0
\prod_{j=1}^{n} P(X^{(j)}=a|Y=c_k) = 0
j=1∏nP(X(j)=a∣Y=ck)=0
假设对所有
c
k
∈
{
c
1
,
c
2
,
⋯
 
,
c
K
}
c_k\in\{c_1,c_2,\cdots,c_K\}
ck∈{c1,c2,⋯,cK},上述概率均为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_\lambda(X^{(j)}=a_{jl}|Y=c_k) = \frac{\sum_{i=1}^{N}I(x_i^{(j)}=a_{jl},y_i=c_k) + \lambda}{\sum_{i=1}^{N}I(y_i=c_k) + S_j\lambda}
Pλ(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)+Sjλ∑i=1NI(xi(j)=ajl,yi=ck)+λ
其中,
λ
≥
0
\lambda\geq 0
λ≥0。当
λ
=
0
\lambda=0
λ=0 时,即为极大似然估计;当
λ
=
1
\lambda=1
λ=1 时,称为拉普拉斯平滑(Laplace Smoothing)。由于
S
j
S_j
Sj 为第
j
j
j 个特征可取值的数目,所以,
∑
l
=
1
S
j
P
λ
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
=
∑
l
=
1
S
j
(
∑
i
=
1
N
I
(
x
i
(
j
)
=
a
j
l
,
y
i
=
c
k
)
+
λ
)
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
S
j
λ
=
∑
l
=
1
S
j
∑
i
=
1
N
I
(
x
i
(
j
)
=
a
j
l
,
y
i
=
c
k
)
+
S
j
λ
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
S
j
λ
=
∑
i
=
1
N
(
∑
l
=
1
S
j
I
(
x
i
(
j
)
=
a
j
l
,
y
i
=
c
k
)
)
+
S
j
λ
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
S
j
λ
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
S
j
λ
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
S
j
λ
=
1
\begin{aligned} \sum_{l=1}^{S_j}P_\lambda(X^{(j)}=a_{jl}|Y=c_k) &= \frac{\sum_{l=1}^{S_j} \left(\sum_{i=1}^{N}I(x_i^{(j)}=a_{jl},y_i=c_k) + \lambda\right)}{\sum_{i=1}^{N}I(y_i=c_k) + S_j\lambda} \\ &= \frac{\sum_{l=1}^{S_j} \sum_{i=1}^{N}I(x_i^{(j)}=a_{jl},y_i=c_k) + S_j\lambda}{\sum_{i=1}^{N}I(y_i=c_k) + S_j\lambda} \\ &= \frac{\sum_{i=1}^{N}\left(\sum_{l=1}^{S_j} I(x_i^{(j)}=a_{jl},y_i=c_k)\right) + S_j\lambda}{\sum_{i=1}^{N}I(y_i=c_k) + S_j\lambda} \\ &= \frac{\sum_{i=1}^{N}I(y_i=c_k) + S_j\lambda}{\sum_{i=1}^{N}I(y_i=c_k) + S_j\lambda} \\ &= 1 \end{aligned}
l=1∑SjPλ(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)+Sjλ∑l=1Sj(∑i=1NI(xi(j)=ajl,yi=ck)+λ)=∑i=1NI(yi=ck)+Sjλ∑l=1Sj∑i=1NI(xi(j)=ajl,yi=ck)+Sjλ=∑i=1NI(yi=ck)+Sjλ∑i=1N(∑l=1SjI(xi(j)=ajl,yi=ck))+Sjλ=∑i=1NI(yi=ck)+Sjλ∑i=1NI(yi=ck)+Sjλ=1
即在类别
c
k
c_k
ck 下,第
j
j
j 个特征取到所有值的概率为1。又因为
P
λ
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
≥
0
P_\lambda(X^{(j)}=a_{jl}|Y=c_k) \geq 0
Pλ(X(j)=ajl∣Y=ck)≥0
所以
P
λ
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
P_\lambda(X^{(j)}=a_{jl}|Y=c_k)
Pλ(X(j)=ajl∣Y=ck) 是一种概率分布。
同理,先验概率的计算也可采用贝叶斯估计:
P
λ
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
λ
N
+
K
λ
P_\lambda(Y=c_k) = \frac{\sum_{i=1}^{N}I(y_i=c_k) + \lambda}{N+K\lambda}
Pλ(Y=ck)=N+Kλ∑i=1NI(yi=ck)+λ
此时有
P
λ
(
Y
=
c
k
)
≥
0
P_\lambda(Y=c_k) \geq 0
Pλ(Y=ck)≥0
且
∑
k
=
1
K
P
λ
(
Y
=
c
k
)
=
∑
k
=
1
K
(
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
λ
)
N
+
K
λ
=
∑
k
=
1
K
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
K
λ
N
+
K
λ
=
N
+
K
λ
N
+
K
λ
=
1
\begin{aligned} \sum_{k=1}^{K}P_\lambda(Y=c_k) &= \frac{\sum_{k=1}^{K}\left(\sum_{i=1}^{N}I(y_i=c_k) + \lambda\right)}{N+K\lambda} \\ &= \frac{\sum_{k=1}^{K}\sum_{i=1}^{N}I(y_i=c_k) + K\lambda}{N+K\lambda} \\ &= \frac{N + K\lambda}{N+K\lambda} \\ &= 1 \end{aligned}
k=1∑KPλ(Y=ck)=N+Kλ∑k=1K(∑i=1NI(yi=ck)+λ)=N+Kλ∑k=1K∑i=1NI(yi=ck)+Kλ=N+KλN+Kλ=1
总结:朴素贝叶斯算法
输入:
- 训练数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{(\bm{x}_1,y_1),(\bm{x}_2,y_2),\cdots,(\bm{x}_N,y_N)\} T={(x1,y1),(x2,y2),⋯,(xN,yN)}
其中
x i = ( x i ( 1 ) , x i ( 2 ) , ⋯   , x i ( n ) ) T \bm{x}_i=\left(x_i^{(1)},x_i^{(2)},\cdots,x_i^{(n)}\right)^{\rm T} xi=(xi(1),xi(2),⋯,xi(n))T
x i ( j ) x_i^{(j)} xi(j) 是第 i i i 个样本的第 j j j 个特征,有
x i ( j ) ∈ { a j 1 , a j 2 , ⋯   , a j S j } x_i^{(j)}\in\{a_{j1},a_{j2},\cdots,a_{jS_j}\} xi(j)∈{aj1,aj2,⋯,ajSj}
a j l a_{jl} ajl 是第 j j j 个特征可取的第 l l l 个值,有 j ∈ { 1 , 2 , ⋯   , n } j\in\{1,2,\cdots,n\} j∈{1,2,⋯,n}, l ∈ { 1 , 2 , ⋯   , S j } l\in\{1,2,\cdots,S_j\} l∈{1,2,⋯,Sj}。
同时, y k ∈ { c 1 , c 2 , ⋯   , c K } y_k\in\{c_1,c_2,\cdots,c_K\} yk∈{c1,c2,⋯,cK}。 - 输入实例 x \bm{x} x。
输出:
- 实例 x \bm{x} x 的分类。
算法:
- 对所有
c
k
∈
{
c
1
,
c
2
,
⋯
 
,
c
K
}
c_k\in\{c_1,c_2,\cdots,c_K\}
ck∈{c1,c2,⋯,cK},计算先验概率
P
(
Y
=
c
k
)
P(Y=c_k)
P(Y=ck) 与条件概率
P
(
X
j
=
a
j
l
∣
Y
=
c
k
)
P(X^{j}=a_{jl}|Y=c_k)
P(Xj=ajl∣Y=ck):
P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N P(Y=c_k)=\frac{\sum_{i=1}^{N}I(y_i=c_k)}{N} P(Y=ck)=N∑i=1NI(yi=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}^{N}I(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^{N}I(y_i=c_k)} P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=ajl,yi=ck) - 对所有
c
k
∈
{
c
1
,
c
2
,
⋯
 
,
c
K
}
c_k\in\{c_1,c_2,\cdots,c_K\}
ck∈{c1,c2,⋯,cK},计算实例
x
=
(
x
(
1
)
,
x
(
2
)
,
⋯
 
,
x
(
n
)
)
T
\bm{x}=\left(x^{(1)},x^{(2)},\cdots,x^{(n)}\right)^{\rm T}
x=(x(1),x(2),⋯,x(n))T 在各类别条件下取相应特征值的条件概率,进而得到模型值:
P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P(Y=c_k)\prod_{j=1}^{n}P(X_{(j)}=x^{(j)}|Y=c_k) P(Y=ck)j=1∏nP(X(j)=x(j)∣Y=ck) - 确定实例
x
\bm{x}
x 的类别:
y = arg 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}^{n}P(X_{(j)}=x^{(j)}|Y=c_k) y=argckmaxP(Y=ck)j=1∏nP(X(j)=x(j)∣Y=ck)