朴素贝叶斯概述
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法,属于生成模型。
对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。
学习与分类
基本方法
朴素贝叶斯法通过训练数据集学习联合概率分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y)。具体地,学习以下先验概率分布及条件概率分布。先验概率分布:
P
(
Y
=
c
k
)
,
k
=
1
,
2
,
⋯
,
K
P(Y=c_{k}),\quad k=1,2,\cdots,K
P(Y=ck),k=1,2,⋯,K
条件概率分布:
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
(
1
)
=
x
(
1
)
,
⋯
,
X
(
n
)
=
x
(
n
)
∣
Y
=
c
k
)
,
k
=
1
,
2
,
⋯
,
K
P(X=x|Y=c_{k})=P(X^{(1)}=x^{(1)},\cdots ,X^{(n)}=x^{(n)}|Y=c_{k}),\quad k=1,2,\cdots ,K
P(X=x∣Y=ck)=P(X(1)=x(1),⋯,X(n)=x(n)∣Y=ck),k=1,2,⋯,K
于是学习到联合概率分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y)。
条件概率分布 P ( X = x ∣ Y = c k ) P(X=x|Y=c_{k}) P(X=x∣Y=ck)有指数级数量的参数,其估计实际上是不可行的。事实上,假设 x j x^{j} xj可取值有 S j S_{j} Sj个, j = 1 , 2 , ⋯ , n j=1,2,\cdots,n j=1,2,⋯,n, Y Y Y可取值有 K K K个,那么参数个数为 K ∏ j = 1 n S j K\prod\limits_{j=1}^{n}S_{j} Kj=1∏nSj。
- 特征条件独立假设
朴素贝叶斯法对条件概率分布做了条件独立性的假设:
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 ) \begin{aligned} P(X=x|Y=c_{k}) &= P(X^{(1)}=x^{(1)},\cdots,X^{(n)}=x^{(n)}|Y=c_{k})\\ &=\prod\limits_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_{k}) \end{aligned} 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)
条件独立假设等于用于分类的特征在类确定的条件下都是条件独立的。
这一假设使模型包含的条件概率的数量大为减少,使得朴素贝叶斯法变得简单高效,且易于实现,但有时会牺牲一定的分类准确率。
朴素贝叶斯法分类时,后验概率计算根据贝叶斯定理进行:
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}|X=x)=\frac{P(X=x|Y=c_{k})P(Y=c_{k})}{\sum_{k}P(X=x|Y=c_{k})P(Y=c_{k})}
P(Y=ck∣X=x)=∑kP(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)P(Y=ck)
根据条件独立假设,朴素贝叶斯法分类的基本公式可得:
P
(
Y
=
c
k
∣
X
=
x
)
=
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
)
,
k
=
1
,
2
,
⋯
,
K
P(Y=c_{k}|X=x)=\frac{P(Y=c_{k})\prod_{j}P(X^{(j)}=x^{(j)}|Y=c_{k})}{\sum_{k}P(Y=c_{k})\prod_{j}P(X^{(j)}=x^{(j)}|Y=c_{k})},\quad k=1,2,\cdots,K
P(Y=ck∣X=x)=∑kP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)P(Y=ck)∏jP(X(j)=x(j)∣Y=ck),k=1,2,⋯,K
朴素贝叶斯分类器可表示为:
y
=
f
(
x
)
=
a
r
g
max
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
)
,
k
=
1
,
2
,
⋯
,
K
y=f(x)=arg\max\limits_{c_{k}} \frac{P(Y=c_{k})\prod_{j}P(X^{(j)}=x^{(j)}|Y=c_{k})}{\sum_{k}P(Y=c_{k})\prod_{j}P(X^{(j)}=x^{(j)}|Y=c_{k})},\quad k=1,2,\cdots,K
y=f(x)=argckmax∑kP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)P(Y=ck)∏jP(X(j)=x(j)∣Y=ck),k=1,2,⋯,K
分母对所有
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_{c_{k}} {P(Y=c_{k})\prod\nolimits_{j}P(X^{(j)}=x^{(j)}|Y=c_{k})}
y=argckmaxP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)
可以注意到,朴素贝叶斯法会将后验概率最大的类作为输入x的类输出。
后验概率最大化的含义
朴素贝叶斯法将实例分到后验概率最大的类中,这个过程等价于期望风险最小化。
假设选择0-1损失函数:
L
(
Y
,
f
(
X
)
)
=
{
1
,
Y
≠
f
(
X
)
0
,
Y
=
f
(
X
)
L(Y,f(X))=\begin{dcases} 1,\quad Y\not= f(X)\\ 0,\quad Y=f(X) \end{dcases}
L(Y,f(X))={1,Y=f(X)0,Y=f(X)
其中
f
(
X
)
f(X)
f(X)是分类决策函数。这时,期望风险函数为
R
e
x
p
(
f
)
=
E
[
L
(
Y
,
f
(
X
)
)
]
R_{exp}(f)=E[L(Y,f(X))]
Rexp(f)=E[L(Y,f(X))]
期望是对联合分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y)取的。由此取条件期望:
R
e
x
p
(
f
)
=
E
x
∑
k
=
1
K
[
L
(
c
k
,
f
(
X
)
)
]
P
(
c
k
∣
X
)
R_{exp}(f)=E_{x}\sum_{k=1}^{K}[L(c_{k},f(X))]P(c_{k}|X)
Rexp(f)=Exk=1∑K[L(ck,f(X))]P(ck∣X)
为了使期望风险最小化,只需对
X
=
x
X=x
X=x逐个极小化,由此得到:
f
(
x
)
=
arg min
y
∈
Y
∑
k
=
1
K
L
(
c
k
,
y
)
P
(
c
k
∣
X
=
x
)
=
arg min
y
∈
Y
∑
k
=
1
K
P
(
y
≠
c
k
∣
X
=
x
)
=
arg min
y
∈
Y
(
1
−
P
(
y
=
c
k
)
∣
X
=
x
)
=
arg max
y
∈
Y
P
(
y
=
c
k
∣
X
=
x
)
\begin{aligned} f(x) &=\argmin_{y\in Y}\sum_{k=1}^{K}L(c_{k},y)P(c_{k}|X=x) \\ &=\argmin_{y\in Y} \sum_{k=1}^{K}P(y\not= c_{k}|X=x) \\ &=\argmin_{y\in Y}(1-P(y=c_{k})|X=x) \\ &=\argmax_{y\in Y}P(y=c_{k}|X=x) \end{aligned}
f(x)=y∈Yargmink=1∑KL(ck,y)P(ck∣X=x)=y∈Yargmink=1∑KP(y=ck∣X=x)=y∈Yargmin(1−P(y=ck)∣X=x)=y∈YargmaxP(y=ck∣X=x)
这样一来,根据期望风险最小化准则就得到了后验概率最大化准则:
f
(
x
)
=
arg max
c
k
P
(
c
k
∣
X
=
x
)
f(x)=\argmax_{c_{k}}P(c_{k}|X=x)
f(x)=ckargmaxP(ck∣X=x)
即朴素贝叶斯法所采用的原理。
参数估计
极大似然估计
在朴素贝叶斯法中,可以应用极大似然估计法估计相应的概率。
先验概率
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\limits_{i=1}^{N}I(y_{i}=c_{k})}{N},\quad k=1,2,\cdots,K
P(Y=ck)=Ni=1∑NI(yi=ck),k=1,2,⋯,K
条件概率
P
(
X
j
=
a
j
l
∣
Y
=
c
k
)
P(X^{j}=a_{jl}|Y=c_{k})
P(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
)
j
=
1
,
2
,
⋯
,
n
;
l
=
1
,
2
,
⋯
,
S
j
;
k
=
1
,
2
,
⋯
,
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})} \\ j=1,2,\cdots,n;\quad l=1,2,\cdots,S_{j};\quad k=1,2,\cdots,K
P(X(j)=ajl∣Y=ck)=i=1∑NI(yi=ck)i=1∑NI(xi(j)=ajl,yi=ck)j=1,2,⋯,n;l=1,2,⋯,Sj;k=1,2,⋯,K
贝叶斯估计
用极大似然估计可能会出现所要估计的概率值为0的情况。这时会影响到后验概率的计算结果,使分类产生偏差。
解决这一问题的方法使采用贝叶斯估计,先验概率的贝叶斯估计是:
P
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
λ
N
+
K
λ
,
k
=
1
,
2
,
⋯
,
K
P(Y=c_{k})=\frac{\sum\limits_{i=1}^{N}I(y_{i}=c_{k})+\lambda}{N+K\lambda},\quad k=1,2,\cdots,K
P(Y=ck)=N+Kλi=1∑NI(yi=ck)+λ,k=1,2,⋯,K
条件概率的贝叶斯估计是:
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(X(j)=ajl∣Y=ck)=i=1∑NI(yi=ck)+Sjλi=1∑NI(xi(j)=ajl,yi=ck)+λ
式中
λ
≥
0
\lambda\geq0
λ≥0等价于在随机变量各个取值的频数上赋予了一个正数
λ
>
0
\lambda>0
λ>0。常取
λ
=
1
\lambda=1
λ=1,这时称为拉普拉斯平滑。